diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 19d4223e..f90e0310 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -42,7 +42,9 @@ jobs:
uses: actions/checkout@v2
- name: Install .NET Core
- uses: actions/setup-dotnet@v1.8.0
+ uses: actions/setup-dotnet@v1.9.0
+ with:
+ dotnet-version: 6.0.x
- name: Setup NuGet.exe for use with actions
uses: NuGet/setup-nuget@v1.0.5
@@ -121,7 +123,9 @@ jobs:
# Install the .NET Core workload
- name: Install .NET Core
- uses: actions/setup-dotnet@v1.8.0
+ uses: actions/setup-dotnet@v1.9.0
+ with:
+ dotnet-version: 6.0.x
# Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
- name: Setup MSBuild.exe
diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml
index 8b219db9..0ad5c1e8 100644
--- a/.github/workflows/run_tests.yml
+++ b/.github/workflows/run_tests.yml
@@ -31,7 +31,9 @@ jobs:
# Install the .NET Core workload
- name: Install .NET Core
- uses: actions/setup-dotnet@v1.6.0
+ uses: actions/setup-dotnet@v1.9.0
+ with:
+ dotnet-version: 6.0.x
# Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
- name: Setup MSBuild.exe
diff --git a/Agent/Agent.csproj b/Agent/Agent.csproj
index 15c6502a..e6d7c4cd 100644
--- a/Agent/Agent.csproj
+++ b/Agent/Agent.csproj
@@ -2,7 +2,7 @@
Exe
- net5.0
+ net6.0
true
false
Copyright © 2021 Translucency Software
@@ -23,16 +23,17 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Agent/Program.cs b/Agent/Program.cs
index 650b4a32..a08adc66 100644
--- a/Agent/Program.cs
+++ b/Agent/Program.cs
@@ -42,6 +42,7 @@ namespace Remotely.Agent
private static void BuildServices()
{
var serviceCollection = new ServiceCollection();
+ serviceCollection.AddHttpClient();
serviceCollection.AddLogging(builder =>
{
builder.AddConsole().AddDebug();
diff --git a/Agent/Services/UpdaterLinux.cs b/Agent/Services/UpdaterLinux.cs
index 187ce44c..0788f566 100644
--- a/Agent/Services/UpdaterLinux.cs
+++ b/Agent/Services/UpdaterLinux.cs
@@ -6,6 +6,8 @@ using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
+using System.Net.Http;
+using System.Net.Http.Headers;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
@@ -16,17 +18,19 @@ namespace Remotely.Agent.Services
public class UpdaterLinux : IUpdater
{
- private readonly SemaphoreSlim _checkForUpdatesLock = new SemaphoreSlim(1, 1);
+ private readonly SemaphoreSlim _checkForUpdatesLock = new(1, 1);
private readonly ConfigService _configService;
private readonly IWebClientEx _webClientEx;
- private readonly SemaphoreSlim _installLatestVersionLock = new SemaphoreSlim(1, 1);
+ private readonly IHttpClientFactory _httpClientFactory;
+ private readonly SemaphoreSlim _installLatestVersionLock = new(1, 1);
private DateTimeOffset _lastUpdateFailure;
- private readonly System.Timers.Timer _updateTimer = new System.Timers.Timer(TimeSpan.FromHours(6).TotalMilliseconds);
+ private readonly System.Timers.Timer _updateTimer = new(TimeSpan.FromHours(6).TotalMilliseconds);
- public UpdaterLinux(ConfigService configService, IWebClientEx webClientEx)
+ public UpdaterLinux(ConfigService configService, IWebClientEx webClientEx, IHttpClientFactory httpClientFactory)
{
_configService = configService;
_webClientEx = webClientEx;
+ _httpClientFactory = httpClientFactory;
_webClientEx.SetRequestTimeout((int)_updateTimer.Interval);
}
@@ -66,26 +70,22 @@ namespace Remotely.Agent.Services
var fileUrl = serverUrl + $"/Content/Remotely-Linux.zip";
- var lastEtag = string.Empty;
+ using var httpClient = _httpClientFactory.CreateClient();
+ using var request = new HttpRequestMessage(HttpMethod.Head, fileUrl);
if (File.Exists("etag.txt"))
{
- lastEtag = await File.ReadAllTextAsync("etag.txt");
- }
-
- try
- {
- var wr = WebRequest.CreateHttp(fileUrl);
- wr.Method = "Head";
- wr.Headers.Add("If-None-Match", lastEtag);
- using var response = (HttpWebResponse)await wr.GetResponseAsync();
- if (response.StatusCode == HttpStatusCode.NotModified)
+ var lastEtag = await File.ReadAllTextAsync("etag.txt");
+ if (!string.IsNullOrEmpty(lastEtag))
{
- Logger.Write("Service Updater: Version is current.");
- return;
+ var etagValue = new EntityTagHeaderValue(lastEtag.Trim());
+ request.Headers.IfNoneMatch.Add(etagValue);
}
}
- catch (WebException ex) when ((ex.Response as HttpWebResponse).StatusCode == HttpStatusCode.NotModified)
+
+ using var response = await httpClient.SendAsync(request);
+
+ if (response.StatusCode == HttpStatusCode.NotModified)
{
Logger.Write("Service Updater: Version is current.");
return;
@@ -96,6 +96,11 @@ namespace Remotely.Agent.Services
await InstallLatestVersion();
}
+ catch (WebException ex) when ((ex.Response as HttpWebResponse).StatusCode == HttpStatusCode.NotModified)
+ {
+ Logger.Write("Service Updater: Version is current.");
+ return;
+ }
catch (Exception ex)
{
Logger.Write(ex);
@@ -109,6 +114,7 @@ namespace Remotely.Agent.Services
public void Dispose()
{
_webClientEx?.Dispose();
+ GC.SuppressFinalize(this);
}
public async Task InstallLatestVersion()
@@ -150,7 +156,8 @@ namespace Remotely.Agent.Services
serverUrl + $"/API/AgentUpdate/DownloadPackage/linux/{downloadId}",
zipPath);
- (await WebRequest.CreateHttp(serverUrl + $"/api/AgentUpdate/ClearDownload/{downloadId}").GetResponseAsync()).Dispose();
+ using var httpClient = _httpClientFactory.CreateClient();
+ using var response = httpClient.GetAsync($"{serverUrl}/api/AgentUpdate/ClearDownload/{downloadId}");
Logger.Write("Launching installer to perform update.");
diff --git a/Agent/Services/UpdaterMac.cs b/Agent/Services/UpdaterMac.cs
index 38e803c0..97b2e42c 100644
--- a/Agent/Services/UpdaterMac.cs
+++ b/Agent/Services/UpdaterMac.cs
@@ -6,6 +6,8 @@ using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
+using System.Net.Http;
+using System.Net.Http.Headers;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
@@ -17,16 +19,18 @@ namespace Remotely.Agent.Services
public class UpdaterMac : IUpdater
{
private readonly string _achitecture = RuntimeInformation.OSArchitecture.ToString().ToLower();
- private readonly SemaphoreSlim _checkForUpdatesLock = new SemaphoreSlim(1, 1);
+ private readonly SemaphoreSlim _checkForUpdatesLock = new(1, 1);
private readonly ConfigService _configService;
+ private readonly IHttpClientFactory _httpClientFactory;
private readonly IWebClientEx _webClientEx;
- private readonly SemaphoreSlim _installLatestVersionLock = new SemaphoreSlim(1, 1);
+ private readonly SemaphoreSlim _installLatestVersionLock = new(1, 1);
private DateTimeOffset _lastUpdateFailure;
- private readonly System.Timers.Timer _updateTimer = new System.Timers.Timer(TimeSpan.FromHours(6).TotalMilliseconds);
+ private readonly System.Timers.Timer _updateTimer = new(TimeSpan.FromHours(6).TotalMilliseconds);
- public UpdaterMac(ConfigService configService, IWebClientEx webClientEx)
+ public UpdaterMac(ConfigService configService, IWebClientEx webClientEx, IHttpClientFactory httpClientFactory)
{
_configService = configService;
+ _httpClientFactory = httpClientFactory;
_webClientEx = webClientEx;
_webClientEx.SetRequestTimeout((int)_updateTimer.Interval);
}
@@ -67,26 +71,21 @@ namespace Remotely.Agent.Services
var fileUrl = serverUrl + $"/Content/Remotely-MacOS-{_achitecture}.zip";
- var lastEtag = string.Empty;
+ using var httpClient = _httpClientFactory.CreateClient();
+ using var request = new HttpRequestMessage(HttpMethod.Head, fileUrl);
if (File.Exists("etag.txt"))
{
- lastEtag = await File.ReadAllTextAsync("etag.txt");
- }
-
- try
- {
- var wr = WebRequest.CreateHttp(fileUrl);
- wr.Method = "Head";
- wr.Headers.Add("If-None-Match", lastEtag);
- using var response = (HttpWebResponse)await wr.GetResponseAsync();
- if (response.StatusCode == HttpStatusCode.NotModified)
+ var lastEtag = await File.ReadAllTextAsync("etag.txt");
+ if (!string.IsNullOrEmpty(lastEtag))
{
- Logger.Write("Service Updater: Version is current.");
- return;
+ request.Headers.IfNoneMatch.Add(new EntityTagHeaderValue(lastEtag.Trim()));
}
}
- catch (WebException ex) when ((ex.Response as HttpWebResponse).StatusCode == HttpStatusCode.NotModified)
+
+ using var response = await httpClient.SendAsync(request);
+
+ if (response.StatusCode == HttpStatusCode.NotModified)
{
Logger.Write("Service Updater: Version is current.");
return;
@@ -97,6 +96,11 @@ namespace Remotely.Agent.Services
await InstallLatestVersion();
}
+ catch (WebException ex) when ((ex.Response as HttpWebResponse).StatusCode == HttpStatusCode.NotModified)
+ {
+ Logger.Write("Service Updater: Version is current.");
+ return;
+ }
catch (Exception ex)
{
Logger.Write(ex);
@@ -110,6 +114,7 @@ namespace Remotely.Agent.Services
public void Dispose()
{
_webClientEx?.Dispose();
+ GC.SuppressFinalize(this);
}
public async Task InstallLatestVersion()
@@ -136,7 +141,8 @@ namespace Remotely.Agent.Services
serverUrl + $"/API/AgentUpdate/DownloadPackage/macos-{_achitecture}/{downloadId}",
zipPath);
- (await WebRequest.CreateHttp(serverUrl + $"/api/AgentUpdate/ClearDownload/{downloadId}").GetResponseAsync()).Dispose();
+ using var httpClient = _httpClientFactory.CreateClient();
+ using var response = httpClient.GetAsync($"{serverUrl}/api/AgentUpdate/ClearDownload/{downloadId}");
Logger.Write("Launching installer to perform update.");
diff --git a/Agent/Services/UpdaterWin.cs b/Agent/Services/UpdaterWin.cs
index 44db633c..2fc25121 100644
--- a/Agent/Services/UpdaterWin.cs
+++ b/Agent/Services/UpdaterWin.cs
@@ -4,6 +4,8 @@ using System;
using System.Diagnostics;
using System.IO;
using System.Net;
+using System.Net.Http;
+using System.Net.Http.Headers;
using System.Threading;
using System.Threading.Tasks;
@@ -11,18 +13,20 @@ namespace Remotely.Agent.Services
{
public class UpdaterWin : IUpdater
{
- private readonly SemaphoreSlim _checkForUpdatesLock = new SemaphoreSlim(1, 1);
+ private readonly SemaphoreSlim _checkForUpdatesLock = new(1, 1);
private readonly ConfigService _configService;
private readonly IWebClientEx _webClientEx;
- private readonly SemaphoreSlim _installLatestVersionLock = new SemaphoreSlim(1, 1);
- private readonly System.Timers.Timer _updateTimer = new System.Timers.Timer(TimeSpan.FromHours(6).TotalMilliseconds);
+ private readonly IHttpClientFactory _httpClientFactory;
+ private readonly SemaphoreSlim _installLatestVersionLock = new(1, 1);
+ private readonly System.Timers.Timer _updateTimer = new(TimeSpan.FromHours(6).TotalMilliseconds);
private DateTimeOffset _lastUpdateFailure;
- public UpdaterWin(ConfigService configService, IWebClientEx webClientEx)
+ public UpdaterWin(ConfigService configService, IWebClientEx webClientEx, IHttpClientFactory httpClientFactory)
{
_configService = configService;
_webClientEx = webClientEx;
+ _httpClientFactory = httpClientFactory;
_webClientEx.SetRequestTimeout((int)_updateTimer.Interval);
}
@@ -62,36 +66,36 @@ namespace Remotely.Agent.Services
var platform = Environment.Is64BitOperatingSystem ? "x64" : "x86";
var fileUrl = serverUrl + $"/Content/Remotely-Win10-{platform}.zip";
- var lastEtag = string.Empty;
+ using var httpClient = _httpClientFactory.CreateClient();
+ using var request = new HttpRequestMessage(HttpMethod.Head, fileUrl);
if (File.Exists("etag.txt"))
{
- lastEtag = await File.ReadAllTextAsync("etag.txt");
- }
-
- try
- {
- var wr = WebRequest.CreateHttp(fileUrl);
- wr.Method = "Head";
- wr.Headers.Add("If-None-Match", lastEtag);
- using var response = (HttpWebResponse)await wr.GetResponseAsync();
- if (response.StatusCode == HttpStatusCode.NotModified)
+ var lastEtag = await File.ReadAllTextAsync("etag.txt");
+ if (!string.IsNullOrEmpty(lastEtag))
{
- Logger.Write("Service Updater: Version is current.");
- return;
+ request.Headers.IfNoneMatch.Add(new EntityTagHeaderValue(lastEtag.Trim()));
}
}
- catch (WebException ex) when ((ex.Response as HttpWebResponse).StatusCode == HttpStatusCode.NotModified)
+
+ using var response = await httpClient.SendAsync(request);
+ if (response.StatusCode == HttpStatusCode.NotModified)
{
Logger.Write("Service Updater: Version is current.");
return;
}
+
Logger.Write("Service Updater: Update found.");
await InstallLatestVersion();
}
+ catch (WebException ex) when ((ex.Response as HttpWebResponse).StatusCode == HttpStatusCode.NotModified)
+ {
+ Logger.Write("Service Updater: Version is current.");
+ return;
+ }
catch (Exception ex)
{
Logger.Write(ex);
@@ -105,6 +109,7 @@ namespace Remotely.Agent.Services
public void Dispose()
{
_webClientEx?.Dispose();
+ GC.SuppressFinalize(this);
}
public async Task InstallLatestVersion()
@@ -132,8 +137,8 @@ namespace Remotely.Agent.Services
serverUrl + $"/api/AgentUpdate/DownloadPackage/win-{platform}/{downloadId}",
zipPath);
- (await WebRequest.CreateHttp(serverUrl + $"/api/AgentUpdate/ClearDownload/{downloadId}").GetResponseAsync()).Dispose();
-
+ using var httpClient = _httpClientFactory.CreateClient();
+ using var response = httpClient.GetAsync($"{serverUrl}/api/AgentUpdate/ClearDownload/{downloadId}");
foreach (var proc in Process.GetProcessesByName("Remotely_Installer"))
{
diff --git a/Desktop.Core/Desktop.Core.csproj b/Desktop.Core/Desktop.Core.csproj
index 1aa63947..ac519e55 100644
--- a/Desktop.Core/Desktop.Core.csproj
+++ b/Desktop.Core/Desktop.Core.csproj
@@ -1,7 +1,7 @@
- net5.0
+ net6.0
Remotely.Desktop.Core
Remotely_Desktop.Core
AnyCPU;x64;x86
@@ -40,14 +40,14 @@
-
-
+
+
-
-
-
+
+
+
-
+
diff --git a/Desktop.Core/Services/ScreenCaster.cs b/Desktop.Core/Services/ScreenCaster.cs
index 646610b4..279bcadf 100644
--- a/Desktop.Core/Services/ScreenCaster.cs
+++ b/Desktop.Core/Services/ScreenCaster.cs
@@ -118,7 +118,13 @@ namespace Remotely.Desktop.Core.Services
}
// Wait until the first image is received.
- TaskHelper.DelayUntil(() => !viewer.PendingSentFrames.Any(), TimeSpan.MaxValue);
+ if (!TaskHelper.DelayUntil(() => !viewer.PendingSentFrames.Any(), TimeSpan.FromSeconds(30)))
+ {
+ Logger.Write("Timed out while waiting for first frame receipt.");
+ _conductor.Viewers.TryRemove(viewer.ViewerConnectionID, out _);
+ viewer.Dispose();
+ return;
+ }
while (!viewer.DisconnectRequested && viewer.IsConnected)
{
diff --git a/Desktop.Core/Utilities/ImageUtils.cs b/Desktop.Core/Utilities/ImageUtils.cs
index c7692d6f..d4096f82 100644
--- a/Desktop.Core/Utilities/ImageUtils.cs
+++ b/Desktop.Core/Utilities/ImageUtils.cs
@@ -12,7 +12,7 @@ namespace Remotely.Desktop.Core.Utilities
{
public class ImageUtils
{
- private static ImageCodecInfo _jpegEncoder = ImageCodecInfo.GetImageEncoders().FirstOrDefault(x => x.FormatID == ImageFormat.Jpeg.Guid);
+ private static readonly ImageCodecInfo _jpegEncoder = ImageCodecInfo.GetImageEncoders().FirstOrDefault(x => x.FormatID == ImageFormat.Jpeg.Guid);
//public static byte[] EncodeWithSkia(Bitmap bitmap, SKEncodedImageFormat format, int quality)
//{
diff --git a/Desktop.Win/Desktop.Win.csproj b/Desktop.Win/Desktop.Win.csproj
index b9bf1e85..56f215e0 100644
--- a/Desktop.Win/Desktop.Win.csproj
+++ b/Desktop.Win/Desktop.Win.csproj
@@ -2,13 +2,12 @@
WinExe
- net5.0-windows
+ net6.0-windows
true
true
Remotely_Desktop
Remotely.Desktop.Win
Assets\favicon.ico
- app.manifest
Desktop client for allowing your IT admin to provide remote support.
Copyright © 2021 Translucency Software
Remotely Desktop
@@ -28,6 +27,10 @@
true
+
+
+
+
@@ -39,7 +42,7 @@
-
+
@@ -83,7 +86,7 @@
-
+
\ No newline at end of file
diff --git a/Desktop.Win/Properties/PublishProfiles/ClickOnce-x64.pubxml b/Desktop.Win/Properties/PublishProfiles/ClickOnce-x64.pubxml
index 00a057b7..fe64b33e 100644
--- a/Desktop.Win/Properties/PublishProfiles/ClickOnce-x64.pubxml
+++ b/Desktop.Win/Properties/PublishProfiles/ClickOnce-x64.pubxml
@@ -5,10 +5,11 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
0
- 1.0.0.*
+ 1.0.0.0
True
Release
True
+ True
https://remotely.one/Contact
False
True
@@ -33,15 +34,17 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
False
Remotely
https://remotely.one/Contact
- net5.0-windows
+ net6.0-windows
True
True
Foreground
+ False
+ Publish.html
-
+
true
- .NET Desktop Runtime 5.0.1 (x64)
+ .NET Desktop Runtime 6.0.0 (x64)
\ No newline at end of file
diff --git a/Desktop.Win/Properties/PublishProfiles/ClickOnce-x86.pubxml b/Desktop.Win/Properties/PublishProfiles/ClickOnce-x86.pubxml
index 554776fa..a4f3b6d5 100644
--- a/Desktop.Win/Properties/PublishProfiles/ClickOnce-x86.pubxml
+++ b/Desktop.Win/Properties/PublishProfiles/ClickOnce-x86.pubxml
@@ -5,10 +5,11 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
0
- 1.0.0.*
+ 1.0.0.0
True
Release
True
+ True
https://remotely.one/Contact
False
True
@@ -33,15 +34,17 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
False
Remotely
https://remotely.one/Contact
- net5.0-windows
+ net6.0-windows
True
True
Foreground
+ False
+ Publish.html
-
+
true
- .NET Desktop Runtime 5.0.1 (x86)
+ .NET Desktop Runtime 6.0.0 (x86)
\ No newline at end of file
diff --git a/Desktop.Win/Properties/PublishProfiles/desktop-win-x64.pubxml b/Desktop.Win/Properties/PublishProfiles/desktop-win-x64.pubxml
index 244405ab..b4237aee 100644
--- a/Desktop.Win/Properties/PublishProfiles/desktop-win-x64.pubxml
+++ b/Desktop.Win/Properties/PublishProfiles/desktop-win-x64.pubxml
@@ -7,7 +7,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
FileSystem
Release
x64
- net5.0-windows
+ net6.0-windows
..\Server\wwwroot\Content\Win-x64\
win10-x64
true
@@ -15,5 +15,6 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
False
False
true
+ true
\ No newline at end of file
diff --git a/Desktop.Win/Properties/PublishProfiles/desktop-win-x86.pubxml b/Desktop.Win/Properties/PublishProfiles/desktop-win-x86.pubxml
index 1659234e..8c6641ae 100644
--- a/Desktop.Win/Properties/PublishProfiles/desktop-win-x86.pubxml
+++ b/Desktop.Win/Properties/PublishProfiles/desktop-win-x86.pubxml
@@ -7,7 +7,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
FileSystem
Release
x86
- net5.0-windows
+ net6.0-windows
..\Server\wwwroot\Content\Win-x86\
win10-x86
true
@@ -15,5 +15,6 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
False
False
true
+ true
\ No newline at end of file
diff --git a/Desktop.Win/Properties/PublishProfiles/install-folder.pubxml b/Desktop.Win/Properties/PublishProfiles/install-folder.pubxml
index 5f5b4ee5..e21b2ae4 100644
--- a/Desktop.Win/Properties/PublishProfiles/install-folder.pubxml
+++ b/Desktop.Win/Properties/PublishProfiles/install-folder.pubxml
@@ -8,7 +8,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
x64
C:\Program Files\Remotely\Desktop
FileSystem
- net5.0-windows
+ net6.0-windows
win-x64
true
False
diff --git a/Desktop.Win/Properties/PublishProfiles/packaged-win-x64-debug.pubxml b/Desktop.Win/Properties/PublishProfiles/packaged-win-x64-debug.pubxml
index 9bb47875..f246fa55 100644
--- a/Desktop.Win/Properties/PublishProfiles/packaged-win-x64-debug.pubxml
+++ b/Desktop.Win/Properties/PublishProfiles/packaged-win-x64-debug.pubxml
@@ -7,8 +7,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
FileSystem
Debug
x64
- net5.0-windows
- ..\Agent\bin\Release\net5.0\win10-x64\publish\Desktop
+ net6.0-windows
+ ..\Agent\bin\Release\net6.0\win10-x64\publish\Desktop
true
win10-x64
True
diff --git a/Desktop.Win/Properties/PublishProfiles/packaged-win-x64.pubxml b/Desktop.Win/Properties/PublishProfiles/packaged-win-x64.pubxml
index 8f300e90..5213808e 100644
--- a/Desktop.Win/Properties/PublishProfiles/packaged-win-x64.pubxml
+++ b/Desktop.Win/Properties/PublishProfiles/packaged-win-x64.pubxml
@@ -7,8 +7,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
FileSystem
Release
x64
- net5.0-windows
- ..\Agent\bin\Release\net5.0\win10-x64\publish\Desktop
+ net6.0-windows
+ ..\Agent\bin\Release\net6.0\win10-x64\publish\Desktop
true
win10-x64
False
diff --git a/Desktop.Win/Properties/PublishProfiles/packaged-win-x86.pubxml b/Desktop.Win/Properties/PublishProfiles/packaged-win-x86.pubxml
index f7d52492..7c1e7c2f 100644
--- a/Desktop.Win/Properties/PublishProfiles/packaged-win-x86.pubxml
+++ b/Desktop.Win/Properties/PublishProfiles/packaged-win-x86.pubxml
@@ -7,8 +7,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
FileSystem
Release
x86
- net5.0-windows
- ..\Agent\bin\Release\net5.0\win10-x86\publish\Desktop
+ net6.0-windows
+ ..\Agent\bin\Release\net6.0\win10-x86\publish\Desktop
win10-x86
true
False
diff --git a/Desktop.Win/Properties/PublishProfiles/wrapper-x64.pubxml b/Desktop.Win/Properties/PublishProfiles/wrapper-x64.pubxml
index c89833b5..5b47fe8c 100644
--- a/Desktop.Win/Properties/PublishProfiles/wrapper-x64.pubxml
+++ b/Desktop.Win/Properties/PublishProfiles/wrapper-x64.pubxml
@@ -7,7 +7,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
FileSystem
Release
x64
- net5.0-windows
+ net6.0-windows
bin\Release\win-x64\publish\
true
win10-x64
diff --git a/Desktop.Win/Properties/PublishProfiles/wrapper-x86.pubxml b/Desktop.Win/Properties/PublishProfiles/wrapper-x86.pubxml
index f8f21da8..63544b57 100644
--- a/Desktop.Win/Properties/PublishProfiles/wrapper-x86.pubxml
+++ b/Desktop.Win/Properties/PublishProfiles/wrapper-x86.pubxml
@@ -7,7 +7,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
FileSystem
Release
x86
- net5.0-windows
+ net6.0-windows
bin\Release\win-x86\publish\
true
win10-x86
diff --git a/Desktop.Win/app.manifest b/Desktop.Win/app.manifest
deleted file mode 100644
index cf04bf42..00000000
--- a/Desktop.Win/app.manifest
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PerMonitorV2
- true
-
-
-
-
-
-
-
-
diff --git a/Desktop.XPlat/Desktop.XPlat.csproj b/Desktop.XPlat/Desktop.XPlat.csproj
index 9ed5ef14..eafd9e7f 100644
--- a/Desktop.XPlat/Desktop.XPlat.csproj
+++ b/Desktop.XPlat/Desktop.XPlat.csproj
@@ -1,7 +1,7 @@
Exe
- net5.0
+ net6.0
Assets\favicon.ico
Remotely_Desktop
Remotely.Desktop.XPlat
@@ -52,9 +52,9 @@
-
-
-
+
+
+
diff --git a/Desktop.XPlat/Properties/PublishProfiles/desktop-linux-x64.pubxml b/Desktop.XPlat/Properties/PublishProfiles/desktop-linux-x64.pubxml
index 899c9212..572afed5 100644
--- a/Desktop.XPlat/Properties/PublishProfiles/desktop-linux-x64.pubxml
+++ b/Desktop.XPlat/Properties/PublishProfiles/desktop-linux-x64.pubxml
@@ -7,12 +7,13 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
FileSystem
Release
x64
- net5.0
+ net6.0
..\Server\wwwroot\Content\Linux-x64\
linux-x64
true
True
False
true
+ true
\ No newline at end of file
diff --git a/Desktop.XPlat/Properties/PublishProfiles/packaged-linux-x64.pubxml b/Desktop.XPlat/Properties/PublishProfiles/packaged-linux-x64.pubxml
index d4dfdb00..e8a2f15d 100644
--- a/Desktop.XPlat/Properties/PublishProfiles/packaged-linux-x64.pubxml
+++ b/Desktop.XPlat/Properties/PublishProfiles/packaged-linux-x64.pubxml
@@ -7,8 +7,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
FileSystem
Release
x64
- net5.0
- ..\Agent\bin\Release\net5.0\linux-x64\publish\Desktop
+ net6.0
+ ..\Agent\bin\Release\net6.0\linux-x64\publish\Desktop
linux-x64
true
False
diff --git a/Server.Installer/Properties/PublishProfiles/Folder-Linux-x64.pubxml b/Server.Installer/Properties/PublishProfiles/Folder-Linux-x64.pubxml
index 507ff4a5..732c2170 100644
--- a/Server.Installer/Properties/PublishProfiles/Folder-Linux-x64.pubxml
+++ b/Server.Installer/Properties/PublishProfiles/Folder-Linux-x64.pubxml
@@ -8,7 +8,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
x64
publish\
FileSystem
- net5.0
+ net6.0
linux-x64
true
True
diff --git a/Server.Installer/Properties/PublishProfiles/Folder-Win-x64.pubxml b/Server.Installer/Properties/PublishProfiles/Folder-Win-x64.pubxml
index e66c6b30..7e25b09e 100644
--- a/Server.Installer/Properties/PublishProfiles/Folder-Win-x64.pubxml
+++ b/Server.Installer/Properties/PublishProfiles/Folder-Win-x64.pubxml
@@ -8,7 +8,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
x64
publish\
FileSystem
- net5.0
+ net6.0
win-x64
true
True
diff --git a/Server.Installer/Server.Installer.csproj b/Server.Installer/Server.Installer.csproj
index a2dee0b6..107a54c5 100644
--- a/Server.Installer/Server.Installer.csproj
+++ b/Server.Installer/Server.Installer.csproj
@@ -2,7 +2,7 @@
Exe
- net5.0
+ net6.0
Remotely_Server_Installer
Remotely_Icon.ico
Remotely.Server.Installer
@@ -32,7 +32,7 @@
-
+
diff --git a/Server/API/AlertsController.cs b/Server/API/AlertsController.cs
index 4b2bbf77..8bc3286f 100644
--- a/Server/API/AlertsController.cs
+++ b/Server/API/AlertsController.cs
@@ -5,6 +5,8 @@ using Remotely.Shared.Models;
using System;
using System.IO;
using System.Net;
+using System.Net.Http;
+using System.Net.Http.Json;
using System.Text.Json;
using System.Threading.Tasks;
@@ -15,31 +17,33 @@ namespace Remotely.Server.API
[ServiceFilter(typeof(ApiAuthorizationFilter))]
public class AlertsController : ControllerBase
{
- public AlertsController(IDataService dataService, IEmailSenderEx emailSender)
- {
- DataService = dataService;
- EmailSender = emailSender;
- }
+ private readonly IDataService _dataService;
+ private readonly IEmailSenderEx _emailSender;
+ private readonly IHttpClientFactory _httpClientFactory;
- private IDataService DataService { get; }
- private IEmailSenderEx EmailSender { get; }
+ public AlertsController(IDataService dataService, IEmailSenderEx emailSender, IHttpClientFactory httpClientFactory)
+ {
+ _dataService = dataService;
+ _emailSender = emailSender;
+ _httpClientFactory = httpClientFactory;
+ }
[HttpPost("Create")]
public async Task Create(AlertOptions alertOptions)
{
Request.Headers.TryGetValue("OrganizationID", out var orgID);
- DataService.WriteEvent("Alert created. Alert Options: " + JsonSerializer.Serialize(alertOptions), orgID);
+ _dataService.WriteEvent("Alert created. Alert Options: " + JsonSerializer.Serialize(alertOptions), orgID);
if (alertOptions.ShouldAlert)
{
try
{
- await DataService.AddAlert(alertOptions.AlertDeviceID, orgID, alertOptions.AlertMessage);
+ await _dataService.AddAlert(alertOptions.AlertDeviceID, orgID, alertOptions.AlertMessage);
}
catch (Exception ex)
{
- DataService.WriteEvent(ex, orgID);
+ _dataService.WriteEvent(ex, orgID);
}
}
@@ -47,14 +51,14 @@ namespace Remotely.Server.API
{
try
{
- await EmailSender.SendEmailAsync(alertOptions.EmailTo,
+ await _emailSender.SendEmailAsync(alertOptions.EmailTo,
alertOptions.EmailSubject,
alertOptions.EmailBody,
orgID);
}
catch (Exception ex)
{
- DataService.WriteEvent(ex, orgID);
+ _dataService.WriteEvent(ex, orgID);
}
}
@@ -63,24 +67,25 @@ namespace Remotely.Server.API
{
try
{
- var httpRequest = WebRequest.CreateHttp(alertOptions.ApiRequestUrl);
- httpRequest.Method = alertOptions.ApiRequestMethod;
- httpRequest.ContentType = "application/json";
+ using var httpClient = _httpClientFactory.CreateClient();
+ using var request = new HttpRequestMessage(
+ new HttpMethod(alertOptions.ApiRequestMethod),
+ alertOptions.ApiRequestUrl);
+
+ request.Content = new StringContent(alertOptions.ApiRequestBody);
+ request.Content.Headers.ContentType.MediaType = "application/json";
+
foreach (var header in alertOptions.ApiRequestHeaders)
{
- httpRequest.Headers.Add(header.Key, header.Value);
+ request.Headers.TryAddWithoutValidation(header.Key, header.Value);
}
- using (var rs = httpRequest.GetRequestStream())
- using (var sw = new StreamWriter(rs))
- {
- sw.Write(alertOptions.ApiRequestBody);
- }
- using var response = (HttpWebResponse)httpRequest.GetResponse();
- DataService.WriteEvent($"Alert API Response Status: {response.StatusCode}.", orgID);
+
+ using var response = await httpClient.SendAsync(request);
+ _dataService.WriteEvent($"Alert API Response Status: {response.StatusCode}.", orgID);
}
catch (Exception ex)
{
- DataService.WriteEvent(ex, orgID);
+ _dataService.WriteEvent(ex, orgID);
}
}
@@ -93,11 +98,11 @@ namespace Remotely.Server.API
{
Request.Headers.TryGetValue("OrganizationID", out var orgID);
- var alert = await DataService.GetAlert(alertID);
+ var alert = await _dataService.GetAlert(alertID);
if (alert?.OrganizationID == orgID)
{
- await DataService.DeleteAlert(alert);
+ await _dataService.DeleteAlert(alert);
return Ok();
}
@@ -112,11 +117,11 @@ namespace Remotely.Server.API
if (User.Identity.IsAuthenticated)
{
- await DataService.DeleteAllAlerts(orgID, User.Identity.Name);
+ await _dataService.DeleteAllAlerts(orgID, User.Identity.Name);
}
else
{
- await DataService.DeleteAllAlerts(orgID);
+ await _dataService.DeleteAllAlerts(orgID);
}
return Ok();
diff --git a/Server/Components/Devices/DevicesFrame.razor.cs b/Server/Components/Devices/DevicesFrame.razor.cs
index 3ea35d16..b283389e 100644
--- a/Server/Components/Devices/DevicesFrame.razor.cs
+++ b/Server/Components/Devices/DevicesFrame.razor.cs
@@ -221,29 +221,26 @@ namespace Remotely.Server.Components.Devices
continue;
}
- if (_selectedGroupId == _deviceGroupNone &&
- !string.IsNullOrWhiteSpace(device.DeviceGroupID))
- {
- continue;
- }
- else if (_selectedGroupId != _deviceGroupAll &&
- _selectedGroupId != device.DeviceGroupID)
- {
- continue;
- }
-
if (!string.IsNullOrWhiteSpace(_filter) &&
- device.Alias?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true &&
- device.CurrentUser?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true &&
- device.DeviceName?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true &&
- device.Notes?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true &&
- device.Platform?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true &&
- device.Tags?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true)
+ device.Alias?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true &&
+ device.CurrentUser?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true &&
+ device.DeviceName?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true &&
+ device.Notes?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true &&
+ device.Platform?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true &&
+ device.Tags?.Contains(_filter, StringComparison.OrdinalIgnoreCase) != true)
{
continue;
}
- _filteredDevices.Add(device);
+ if (_selectedGroupId == _deviceGroupAll ||
+ _selectedGroupId == device.DeviceGroupID ||
+ (
+ _selectedGroupId == _deviceGroupNone &&
+ string.IsNullOrWhiteSpace(device.DeviceGroupID
+ )))
+ {
+ _filteredDevices.Add(device);
+ }
}
if (!string.IsNullOrWhiteSpace(_selectedSortProperty))
diff --git a/Server/Data/AppDb.cs b/Server/Data/AppDb.cs
index f4edd64c..5270beaf 100644
--- a/Server/Data/AppDb.cs
+++ b/Server/Data/AppDb.cs
@@ -16,16 +16,11 @@ namespace Remotely.Server.Data
{
public class AppDb : IdentityDbContext
{
- private static ValueComparer _stringArrayComparer = new(
+ private static readonly ValueComparer _stringArrayComparer = new(
(a, b) => a.SequenceEqual(b),
c => c.Aggregate(0, (a, b) => HashCode.Combine(a, b.GetHashCode())),
c => c.ToArray());
- public AppDb(DbContextOptions context)
- : base(context)
- {
- }
-
public DbSet Alerts { get; set; }
public DbSet ApiTokens { get; set; }
@@ -106,8 +101,8 @@ namespace Remotely.Server.Data
builder.Entity()
.Property(x => x.UserOptions)
.HasConversion(
- x => JsonSerializer.Serialize(x, null),
- x => JsonSerializer.Deserialize(x, null));
+ x => JsonSerializer.Serialize(x, (JsonSerializerOptions)null),
+ x => JsonSerializer.Deserialize(x, (JsonSerializerOptions)null));
builder.Entity()
.HasMany(x => x.SavedScripts)
.WithOne(x => x.Creator);
@@ -121,8 +116,8 @@ namespace Remotely.Server.Data
builder.Entity()
.Property(x => x.Drives)
.HasConversion(
- x => JsonSerializer.Serialize(x, null),
- x => JsonSerializer.Deserialize>(x, null));
+ x => JsonSerializer.Serialize(x, (JsonSerializerOptions)null),
+ x => JsonSerializer.Deserialize>(x, (JsonSerializerOptions)null));
builder.Entity()
.Property(x => x.Drives)
.Metadata.SetValueComparer(new ValueComparer>(true));
@@ -157,16 +152,16 @@ namespace Remotely.Server.Data
builder.Entity()
.Property(x => x.ErrorOutput)
.HasConversion(
- x => JsonSerializer.Serialize(x, null),
- x => JsonSerializer.Deserialize(x, null))
+ x => JsonSerializer.Serialize(x, (JsonSerializerOptions)null),
+ x => JsonSerializer.Deserialize(x, (JsonSerializerOptions)null))
.Metadata
.SetValueComparer(_stringArrayComparer);
builder.Entity()
.Property(x => x.StandardOutput)
.HasConversion(
- x => JsonSerializer.Serialize(x, null),
- x => JsonSerializer.Deserialize(x, null))
+ x => JsonSerializer.Serialize(x, (JsonSerializerOptions)null),
+ x => JsonSerializer.Deserialize(x, (JsonSerializerOptions)null))
.Metadata
.SetValueComparer(_stringArrayComparer);
diff --git a/Server/Data/PostgreSqlDbContext.cs b/Server/Data/PostgreSqlDbContext.cs
index 504e03ea..8217b927 100644
--- a/Server/Data/PostgreSqlDbContext.cs
+++ b/Server/Data/PostgreSqlDbContext.cs
@@ -14,8 +14,7 @@ namespace Remotely.Server.Data
{
private readonly IConfiguration _configuration;
- public PostgreSqlDbContext(DbContextOptions context, IConfiguration configuration)
- : base(context)
+ public PostgreSqlDbContext(IConfiguration configuration)
{
_configuration = configuration;
}
diff --git a/Server/Data/SqlServerDbContext.cs b/Server/Data/SqlServerDbContext.cs
index 0c5bdf3a..b9077180 100644
--- a/Server/Data/SqlServerDbContext.cs
+++ b/Server/Data/SqlServerDbContext.cs
@@ -13,8 +13,7 @@ namespace Remotely.Server.Data
{
private readonly IConfiguration _configuration;
- public SqlServerDbContext(DbContextOptions context, IConfiguration configuration)
- : base(context)
+ public SqlServerDbContext(IConfiguration configuration)
{
_configuration = configuration;
}
diff --git a/Server/Data/SqliteDbContext.cs b/Server/Data/SqliteDbContext.cs
index 1960fb1d..9b46ae03 100644
--- a/Server/Data/SqliteDbContext.cs
+++ b/Server/Data/SqliteDbContext.cs
@@ -13,8 +13,7 @@ namespace Remotely.Server.Data
{
private readonly IConfiguration _configuration;
- public SqliteDbContext(DbContextOptions context, IConfiguration configuration)
- : base(context)
+ public SqliteDbContext(IConfiguration configuration)
{
_configuration = configuration;
}
diff --git a/Server/Data/TestingDbContext.cs b/Server/Data/TestingDbContext.cs
new file mode 100644
index 00000000..a89d458f
--- /dev/null
+++ b/Server/Data/TestingDbContext.cs
@@ -0,0 +1,20 @@
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Configuration;
+using Remotely.Server.Data;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Remotely.Server.Data
+{
+ public class TestingDbContext : AppDb
+ {
+ protected override void OnConfiguring(DbContextOptionsBuilder options)
+ {
+ options.UseInMemoryDatabase("Remotely");
+ base.OnConfiguring(options);
+ }
+ }
+}
diff --git a/Server/Server.csproj b/Server/Server.csproj
index b1618bea..86ffecb5 100644
--- a/Server/Server.csproj
+++ b/Server/Server.csproj
@@ -1,7 +1,7 @@
- net5.0
+ net6.0
aspnet-Server-F297B939-4A64-4B42-8C70-E142EBDAA131
Linux
remotely
@@ -23,28 +23,29 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
-
-
+
+
diff --git a/Server/Services/DataService.cs b/Server/Services/DataService.cs
index 5b774f5b..34922043 100644
--- a/Server/Services/DataService.cs
+++ b/Server/Services/DataService.cs
@@ -2,9 +2,9 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Primitives;
using Remotely.Server.Data;
using Remotely.Server.Models;
using Remotely.Shared.Enums;
@@ -13,7 +13,6 @@ using Remotely.Shared.Utilities;
using Remotely.Shared.ViewModels;
using System;
using System.Collections.Generic;
-using System.IO;
using System.Linq;
using System.Threading.Tasks;
@@ -23,6 +22,7 @@ namespace Remotely.Server.Services
public interface IDataService
{
Task AddAlert(string deviceID, string organizationID, string alertMessage, string details = null);
+
bool AddDeviceGroup(string orgID, DeviceGroup deviceGroup, out string deviceGroupID, out string errorMessage);
InviteLink AddInvite(string orgID, InviteViewModel invite);
@@ -35,6 +35,8 @@ namespace Remotely.Server.Services
Task AddOrUpdateScriptSchedule(ScriptSchedule schedule);
+ Task AddScriptResultToScriptRun(string scriptResultId, int scriptRunId);
+
Task AddScriptRun(ScriptRun scriptRun);
Task AddSharedFile(IBrowserFile file, string organizationID, Action progressCallback);
@@ -48,6 +50,7 @@ namespace Remotely.Server.Services
void CleanupOldRecords();
Task ClearLogs(string currentUserName);
+
Task CreateApiToken(string userName, string tokenName, string secretHash);
Task CreateDevice(DeviceSetupOptions options);
@@ -79,9 +82,9 @@ namespace Remotely.Server.Services
bool DoesUserHaveAccessToDevice(string deviceID, RemotelyUser remotelyUser);
bool DoesUserHaveAccessToDevice(string deviceID, string remotelyUserID);
- Task GetDeviceGroup(string deviceGroupID);
+
string[] FilterDeviceIDsByUserPermission(string[] deviceIDs, RemotelyUser remotelyUser);
- Task AddScriptResultToScriptRun(string scriptResultId, int scriptRunId);
+
string[] FilterUsersByDevicePermission(IEnumerable userIDs, string deviceID);
Task GetAlert(string alertID);
@@ -124,6 +127,7 @@ namespace Remotely.Server.Services
int GetDeviceCount(RemotelyUser user);
+ Task GetDeviceGroup(string deviceGroupID);
DeviceGroup[] GetDeviceGroups(string username);
DeviceGroup[] GetDeviceGroupsForOrganization(string organizationId);
@@ -163,6 +167,7 @@ namespace Remotely.Server.Services
Task> GetScriptSchedules(string organizationID);
Task> GetScriptSchedulesDue();
+
List GetServerAdmins();
SharedFile GetSharedFiled(string fileID);
@@ -184,6 +189,7 @@ namespace Remotely.Server.Services
void RemoveDevices(string[] deviceIDs);
Task RemoveUserFromDeviceGroup(string orgID, string groupID, string userID);
+
Task RenameApiToken(string userName, string tokenId, string tokenName);
Task ResetBranding(string organizationId);
@@ -202,43 +208,54 @@ namespace Remotely.Server.Services
Task UpdateBrandingInfo(
string organizationId,
- string productName,
+ string productName,
byte[] iconBytes,
- ColorPickerModel titleForeground,
- ColorPickerModel titleBackground,
+ ColorPickerModel titleForeground,
+ ColorPickerModel titleBackground,
ColorPickerModel titleButtonForeground);
+
Task UpdateDevice(DeviceSetupOptions deviceOptions, string organizationId);
+
void UpdateDevice(string deviceID, string tag, string alias, string deviceGroupID, string notes, WebRtcSetting webRtcSetting);
+
void UpdateOrganizationName(string orgID, string organizationName);
+
void UpdateTags(string deviceID, string tags);
+
void UpdateUserOptions(string userName, RemotelyUserOptions options);
+
bool ValidateApiKey(string keyId, string apiSecret, string requestPath, string remoteIP);
+
void WriteEvent(EventLog eventLog);
+
void WriteEvent(Exception ex, string organizationID);
+
void WriteEvent(string message, EventType eventType, string organizationID);
+
void WriteEvent(string message, string organizationID);
+
void WriteLog(LogLevel logLevel, string category, EventId eventId, string state, Exception exception, string[] scopeStack);
}
public class DataService : IDataService
{
private readonly IApplicationConfig _appConfig;
-
- private readonly IDbContextFactory _dbFactory;
+ private readonly IConfiguration _configuration;
private readonly IHostEnvironment _hostEnvironment;
- public DataService(IDbContextFactory dbFactory,
+ public DataService(
+ IConfiguration configuration,
IApplicationConfig appConfig,
IHostEnvironment hostEnvironment)
{
- _dbFactory = dbFactory;
+ _configuration = configuration;
_appConfig = appConfig;
_hostEnvironment = hostEnvironment;
}
public async Task AddAlert(string deviceId, string organizationID, string alertMessage, string details = null)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var users = dbContext.Users
.Include(x => x.Alerts)
@@ -272,7 +289,7 @@ namespace Remotely.Server.Services
public bool AddDeviceGroup(string orgID, DeviceGroup deviceGroup, out string deviceGroupID, out string errorMessage)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
deviceGroupID = null;
errorMessage = null;
@@ -301,7 +318,7 @@ namespace Remotely.Server.Services
public InviteLink AddInvite(string orgID, InviteViewModel invite)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var organization = dbContext.Organizations
.Include(x => x.InviteLinks)
@@ -323,7 +340,7 @@ namespace Remotely.Server.Services
public bool AddOrUpdateDevice(Device device, out Device updatedDevice)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var existingDevice = dbContext.Devices.Find(device.ID);
if (existingDevice != null)
@@ -378,7 +395,7 @@ namespace Remotely.Server.Services
public async Task AddOrUpdateSavedScript(SavedScript script, string userId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
dbContext.SavedScripts.Update(script);
script.CreatorId = userId;
@@ -389,7 +406,7 @@ namespace Remotely.Server.Services
public void AddOrUpdateScriptResult(ScriptResult result)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var device = dbContext.Devices.Find(result.DeviceID);
@@ -416,7 +433,7 @@ namespace Remotely.Server.Services
public async Task AddOrUpdateScriptSchedule(ScriptSchedule schedule)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var existingSchedule = await dbContext.ScriptSchedules
.Include(x => x.Creator)
@@ -459,7 +476,7 @@ namespace Remotely.Server.Services
public async Task AddScriptResultToScriptRun(string scriptResultId, int scriptRunId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var run = await dbContext.ScriptRuns
.Include(x => x.Results)
@@ -488,7 +505,7 @@ namespace Remotely.Server.Services
public async Task AddScriptRun(ScriptRun scriptRun)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
dbContext.Attach(scriptRun);
dbContext.ScriptRuns.Add(scriptRun);
@@ -522,7 +539,7 @@ namespace Remotely.Server.Services
public bool AddUserToDeviceGroup(string orgID, string groupID, string userName, out string resultMessage)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
resultMessage = string.Empty;
@@ -570,7 +587,7 @@ namespace Remotely.Server.Services
public void ChangeUserIsAdmin(string organizationID, string targetUserID, bool isAdmin)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var targetUser = dbContext.Users.FirstOrDefault(x =>
x.OrganizationID == organizationID &&
@@ -585,17 +602,16 @@ namespace Remotely.Server.Services
public void CleanupOldRecords()
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
if (_appConfig.DataRetentionInDays > -1)
{
-
var expirationDate = DateTimeOffset.Now - TimeSpan.FromDays(_appConfig.DataRetentionInDays);
var scriptRuns = dbContext.ScriptRuns
- .Include(x=>x.Results)
- .Include(x=>x.Devices)
- .Include(x=>x.DevicesCompleted)
+ .Include(x => x.Results)
+ .Include(x => x.Devices)
+ .Include(x => x.DevicesCompleted)
.Where(x => x.RunAt < expirationDate);
foreach (var run in scriptRuns)
@@ -628,7 +644,7 @@ namespace Remotely.Server.Services
public async Task ClearLogs(string currentUserName)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var currentUser = await dbContext.Users.FirstOrDefaultAsync(x => x.UserName == currentUserName);
if (currentUser is null)
@@ -638,7 +654,6 @@ namespace Remotely.Server.Services
try
{
-
if (currentUser.IsServerAdmin)
{
dbContext.EventLogs.RemoveRange(dbContext.EventLogs);
@@ -659,7 +674,7 @@ namespace Remotely.Server.Services
public async Task CreateApiToken(string userName, string tokenName, string secretHash)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var user = dbContext.Users.FirstOrDefault(x => x.UserName == userName);
@@ -676,7 +691,7 @@ namespace Remotely.Server.Services
public async Task CreateDevice(DeviceSetupOptions options)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
try
{
@@ -718,12 +733,11 @@ namespace Remotely.Server.Services
WriteEvent(ex, options.OrganizationID);
return null;
}
-
}
public async Task CreateUser(string userEmail, bool isAdmin, string organizationID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
try
{
@@ -748,12 +762,11 @@ namespace Remotely.Server.Services
WriteEvent(ex, organizationID);
return false;
}
-
}
public async Task DeleteAlert(Alert alert)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
dbContext.Alerts.Remove(alert);
await dbContext.SaveChangesAsync();
@@ -761,7 +774,7 @@ namespace Remotely.Server.Services
public async Task DeleteAllAlerts(string orgID, string userName = null)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var alerts = dbContext.Alerts.Where(x => x.OrganizationID == orgID);
@@ -778,7 +791,7 @@ namespace Remotely.Server.Services
public async Task DeleteApiToken(string userName, string tokenId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var user = dbContext.Users.FirstOrDefault(x => x.UserName == userName);
var token = dbContext.ApiTokens.FirstOrDefault(x =>
@@ -791,7 +804,7 @@ namespace Remotely.Server.Services
public void DeleteDeviceGroup(string orgID, string deviceGroupID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var deviceGroup = dbContext.DeviceGroups
.Include(x => x.Devices)
@@ -821,7 +834,7 @@ namespace Remotely.Server.Services
public void DeleteInvite(string orgID, string inviteID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var invite = dbContext.InviteLinks.FirstOrDefault(x =>
x.OrganizationID == orgID &&
@@ -839,7 +852,7 @@ namespace Remotely.Server.Services
public async Task DeleteSavedScript(Guid scriptId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var script = dbContext.SavedScripts.Find(scriptId);
if (script is not null)
@@ -851,7 +864,7 @@ namespace Remotely.Server.Services
public async Task DeleteScriptSchedule(int scriptScheduleId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var schedule = dbContext.ScriptSchedules.Find(scriptScheduleId);
if (schedule is not null)
@@ -863,7 +876,7 @@ namespace Remotely.Server.Services
public async Task DeleteUser(string orgID, string targetUserID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var target = dbContext.Users
.Include(x => x.DeviceGroups)
@@ -903,24 +916,21 @@ namespace Remotely.Server.Services
.FirstOrDefault(x => x.ID == orgID)
.RemotelyUsers.Remove(target);
-
dbContext.Users.Remove(target);
-
await dbContext.SaveChangesAsync();
-
}
public void DetachEntity(object entity)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
dbContext.Entry(entity).State = EntityState.Detached;
}
public void DeviceDisconnected(string deviceID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var device = dbContext.Devices.Find(deviceID);
if (device != null)
@@ -933,7 +943,7 @@ namespace Remotely.Server.Services
public bool DoesUserExist(string userName)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
if (string.IsNullOrWhiteSpace(userName))
{
@@ -949,7 +959,7 @@ namespace Remotely.Server.Services
return false;
}
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Devices
.Include(x => x.DeviceGroup)
@@ -965,7 +975,7 @@ namespace Remotely.Server.Services
public bool DoesUserHaveAccessToDevice(string deviceID, string remotelyUserID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var remotelyUser = dbContext.Users.Find(remotelyUserID);
@@ -974,7 +984,7 @@ namespace Remotely.Server.Services
public string[] FilterDeviceIDsByUserPermission(string[] deviceIDs, RemotelyUser remotelyUser)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Devices
.Include(x => x.DeviceGroup)
@@ -993,14 +1003,14 @@ namespace Remotely.Server.Services
public string[] FilterUsersByDevicePermission(IEnumerable userIDs, string deviceID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return FilterUsersByDevicePermissionInternal(dbContext, userIDs, deviceID);
}
public async Task GetAlert(string alertID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return await dbContext.Alerts
.Include(x => x.Device)
@@ -1010,7 +1020,7 @@ namespace Remotely.Server.Services
public Alert[] GetAlerts(string userID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Alerts
.Include(x => x.Device)
@@ -1022,7 +1032,7 @@ namespace Remotely.Server.Services
public ApiToken[] GetAllApiTokens(string userID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var user = dbContext.Users.FirstOrDefault(x => x.Id == userID);
@@ -1034,7 +1044,7 @@ namespace Remotely.Server.Services
public ScriptResult[] GetAllCommandResults(string orgID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.ScriptResults
.Where(x => x.OrganizationID == orgID)
@@ -1044,7 +1054,7 @@ namespace Remotely.Server.Services
public ScriptResult[] GetAllCommandResultsForUser(string orgId, string userName, string deviceId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.ScriptResults
.Where(x => x.OrganizationID == orgId &&
@@ -1056,14 +1066,14 @@ namespace Remotely.Server.Services
public Device[] GetAllDevices(string orgID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Devices.Where(x => x.OrganizationID == orgID).ToArray();
}
public EventLog[] GetAllEventLogs(string orgID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.EventLogs
.Where(x => x.OrganizationID == orgID)
@@ -1073,7 +1083,7 @@ namespace Remotely.Server.Services
public InviteLink[] GetAllInviteLinks(string organizationId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.InviteLinks
.Where(x => x.OrganizationID == organizationId)
@@ -1082,7 +1092,7 @@ namespace Remotely.Server.Services
public ScriptResult[] GetAllScriptResults(string orgId, string deviceId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.ScriptResults
.Where(x => x.OrganizationID == orgId && x.DeviceID == deviceId)
@@ -1092,7 +1102,7 @@ namespace Remotely.Server.Services
public ScriptResult[] GetAllScriptResultsForUser(string orgId, string userName)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.ScriptResults
.Where(x => x.OrganizationID == orgId && x.SenderUserName == userName)
@@ -1102,7 +1112,7 @@ namespace Remotely.Server.Services
public RemotelyUser[] GetAllUsersForServer()
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Users.ToArray();
}
@@ -1114,7 +1124,7 @@ namespace Remotely.Server.Services
return Array.Empty();
}
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var organization = await dbContext.Organizations
.Include(x => x.RemotelyUsers)
@@ -1130,7 +1140,7 @@ namespace Remotely.Server.Services
return null;
}
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.ApiTokens.FirstOrDefault(x => x.ID == keyId);
}
@@ -1142,7 +1152,7 @@ namespace Remotely.Server.Services
return null;
}
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var organization = await dbContext.Organizations
.Include(x => x.BrandingInfo)
@@ -1163,14 +1173,14 @@ namespace Remotely.Server.Services
public async Task GetDefaultOrganization()
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return await dbContext.Organizations.FirstOrDefaultAsync(x => x.IsDefaultOrganization);
}
public async Task GetDefaultRelayCode()
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var relayCode = await dbContext.Organizations
.Where(x => x.IsDefaultOrganization)
@@ -1182,7 +1192,7 @@ namespace Remotely.Server.Services
public Device GetDevice(string orgID, string deviceID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Devices.FirstOrDefault(x =>
x.OrganizationID == orgID &&
@@ -1191,21 +1201,21 @@ namespace Remotely.Server.Services
public Device GetDevice(string deviceID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Devices.FirstOrDefault(x => x.ID == deviceID);
}
public int GetDeviceCount()
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Devices.Count();
}
public int GetDeviceCount(RemotelyUser user)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Devices
.Include(x => x.DeviceGroup)
@@ -1222,13 +1232,13 @@ namespace Remotely.Server.Services
public async Task GetDeviceGroup(string deviceGroupID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return await dbContext.DeviceGroups.FindAsync(deviceGroupID);
}
public DeviceGroup[] GetDeviceGroups(string username)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var user = dbContext.Users.FirstOrDefault(x => x.UserName == username);
@@ -1264,7 +1274,7 @@ namespace Remotely.Server.Services
public DeviceGroup[] GetDeviceGroupsForOrganization(string organizationId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.DeviceGroups
.Include(x => x.Users)
@@ -1276,17 +1286,16 @@ namespace Remotely.Server.Services
public List GetDevices(IEnumerable deviceIds)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Devices
.Where(x => deviceIds.Contains(x.ID))
.ToList();
-
}
public Device[] GetDevicesForUser(string userName)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
if (string.IsNullOrWhiteSpace(userName))
{
@@ -1320,7 +1329,7 @@ namespace Remotely.Server.Services
public EventLog[] GetEventLogs(string userName, DateTimeOffset from, DateTimeOffset to, EventType? type, string message)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var user = dbContext.Users
.FirstOrDefault(x => x.UserName == userName);
@@ -1341,7 +1350,7 @@ namespace Remotely.Server.Services
{
var orgID = user.OrganizationID;
query = query
- .Where(x => x.OrganizationID == orgID &&
+ .Where(x => x.OrganizationID == orgID &&
x.TimeStamp >= fromDate && x.TimeStamp <= toDate)
.OrderByDescending(x => x.TimeStamp);
}
@@ -1359,14 +1368,14 @@ namespace Remotely.Server.Services
public Organization GetOrganizationById(string organizationID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Organizations.Find(organizationID);
}
public async Task GetOrganizationByRelayCode(string relayCode)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
if (string.IsNullOrWhiteSpace(relayCode))
{
@@ -1378,7 +1387,7 @@ namespace Remotely.Server.Services
public async Task GetOrganizationByUserName(string userName)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var user = await dbContext
.Users
@@ -1390,21 +1399,21 @@ namespace Remotely.Server.Services
public int GetOrganizationCount()
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Organizations.Count();
}
public string GetOrganizationNameById(string organizationID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Organizations.FirstOrDefault(x => x.ID == organizationID)?.OrganizationName;
}
public string GetOrganizationNameByUserName(string userName)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Users
.Include(x => x.Organization)
@@ -1415,12 +1424,12 @@ namespace Remotely.Server.Services
public async Task> GetPendingScriptRuns(string deviceId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var pendingRuns = new List();
var now = Time.Now;
-
+
var scriptRunGroups = dbContext.ScriptRuns
.Include(x => x.Devices)
.Include(x => x.DevicesCompleted)
@@ -1446,13 +1455,12 @@ namespace Remotely.Server.Services
await dbContext.SaveChangesAsync();
-
return pendingRuns;
}
public async Task> GetQuickScripts(string userId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return await dbContext.SavedScripts
.Where(x => x.CreatorId == userId && x.IsQuickScript)
@@ -1461,8 +1469,8 @@ namespace Remotely.Server.Services
public async Task GetSavedScript(string userId, Guid scriptId)
{
- using var dbContext = _dbFactory.CreateDbContext();
-
+ using var dbContext = GetDbContext();
+
return await dbContext.SavedScripts
.FirstOrDefaultAsync(x =>
x.Id == scriptId &&
@@ -1471,13 +1479,13 @@ namespace Remotely.Server.Services
public async Task GetSavedScript(Guid scriptId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return await dbContext.SavedScripts.FirstOrDefaultAsync(x => x.Id == scriptId);
}
public async Task> GetSavedScriptsWithoutContent(string userId, string organizationId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var query = dbContext.SavedScripts
.Include(x => x.Creator)
@@ -1499,7 +1507,7 @@ namespace Remotely.Server.Services
public ScriptResult GetScriptResult(string commandResultID, string orgID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.ScriptResults
.FirstOrDefault(x =>
@@ -1509,14 +1517,14 @@ namespace Remotely.Server.Services
public ScriptResult GetScriptResult(string commandResultID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.ScriptResults.Find(commandResultID);
}
public async Task> GetScriptSchedules(string organizationId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return await dbContext.ScriptSchedules
.Include(x => x.Creator)
.Include(x => x.Devices)
@@ -1527,7 +1535,7 @@ namespace Remotely.Server.Services
public async Task> GetScriptSchedulesDue()
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var now = Time.Now;
@@ -1541,7 +1549,7 @@ namespace Remotely.Server.Services
public List GetServerAdmins()
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Users
.Where(x => x.IsServerAdmin)
@@ -1551,14 +1559,14 @@ namespace Remotely.Server.Services
public SharedFile GetSharedFiled(string fileID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.SharedFiles.Find(fileID);
}
public int GetTotalDevices()
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Devices.Count();
}
@@ -1569,7 +1577,7 @@ namespace Remotely.Server.Services
{
return null;
}
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return await dbContext.Users.FirstOrDefaultAsync(x => x.UserName == username);
}
@@ -1580,7 +1588,7 @@ namespace Remotely.Server.Services
{
return null;
}
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Users.FirstOrDefault(x => x.Id == userID);
}
@@ -1592,7 +1600,7 @@ namespace Remotely.Server.Services
return null;
}
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Users
.Include(x => x.Organization)
@@ -1601,7 +1609,7 @@ namespace Remotely.Server.Services
public RemotelyUserOptions GetUserOptions(string userName)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
return dbContext.Users
.FirstOrDefault(x => x.UserName == userName)
@@ -1610,7 +1618,7 @@ namespace Remotely.Server.Services
public bool JoinViaInvitation(string userName, string inviteID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var invite = dbContext.InviteLinks.FirstOrDefault(x =>
x.InvitedUser.ToLower() == userName.ToLower() &&
@@ -1640,7 +1648,7 @@ namespace Remotely.Server.Services
public void PopulateRelayCodes()
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
foreach (var organization in dbContext.Organizations)
{
@@ -1658,7 +1666,7 @@ namespace Remotely.Server.Services
public void RemoveDevices(string[] deviceIDs)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var devices = dbContext.Devices
.Include(x => x.ScriptResults)
@@ -1675,7 +1683,7 @@ namespace Remotely.Server.Services
public async Task RemoveUserFromDeviceGroup(string orgID, string groupID, string userID)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var deviceGroup = dbContext.DeviceGroups
.Include(x => x.Users)
@@ -1699,7 +1707,7 @@ namespace Remotely.Server.Services
public async Task RenameApiToken(string userName, string tokenId, string tokenName)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var user = dbContext.Users.FirstOrDefault(x => x.UserName == userName);
var token = dbContext.ApiTokens.FirstOrDefault(x =>
@@ -1712,7 +1720,7 @@ namespace Remotely.Server.Services
public async Task ResetBranding(string organizationId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var organization = await dbContext.Organizations
.Include(x => x.BrandingInfo)
@@ -1730,7 +1738,7 @@ namespace Remotely.Server.Services
public void SetAllDevicesNotOnline()
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
dbContext.Devices.ForEachAsync(x =>
{
@@ -1741,7 +1749,7 @@ namespace Remotely.Server.Services
public async Task SetDisplayName(RemotelyUser user, string displayName)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
dbContext.Attach(user);
user.UserOptions.DisplayName = displayName;
@@ -1750,7 +1758,7 @@ namespace Remotely.Server.Services
public async Task SetIsDefaultOrganization(string orgID, bool isDefault)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var organization = await dbContext.Organizations.FindAsync(orgID);
if (organization is null)
@@ -1769,7 +1777,7 @@ namespace Remotely.Server.Services
public async Task SetIsServerAdmin(string targetUserId, bool isServerAdmin, string callerUserId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var caller = await dbContext.Users.FindAsync(callerUserId);
if (caller?.IsServerAdmin != true)
@@ -1796,7 +1804,7 @@ namespace Remotely.Server.Services
public void SetServerVerificationToken(string deviceID, string verificationToken)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var device = dbContext.Devices.Find(deviceID);
if (device != null)
@@ -1819,7 +1827,7 @@ namespace Remotely.Server.Services
{
return false;
}
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
if (user.TempPassword == password)
{
@@ -1839,7 +1847,7 @@ namespace Remotely.Server.Services
ColorPickerModel titleBackground,
ColorPickerModel titleButtonForeground)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var organization = await dbContext.Organizations
.Include(x => x.BrandingInfo)
@@ -1879,16 +1887,28 @@ namespace Remotely.Server.Services
public void UpdateDevice(string deviceID, string tag, string alias, string deviceGroupID, string notes, WebRtcSetting webRtcSetting)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
- var device = dbContext.Devices.Find(deviceID);
+ var device = dbContext.Devices
+ .Include(x => x.DeviceGroup)
+ .FirstOrDefault(x => x.ID == deviceID);
if (device == null)
{
return;
}
+ if (string.IsNullOrWhiteSpace(deviceGroupID))
+ {
+ device.DeviceGroup?.Devices?.RemoveAll(x => x.ID == deviceID);
+ device.DeviceGroup = null;
+ device.DeviceGroupID = null;
+ }
+ else
+ {
+ device.DeviceGroupID = deviceGroupID;
+ }
+
device.Tags = tag;
- device.DeviceGroupID = deviceGroupID;
device.Alias = alias;
device.Notes = notes;
device.WebRtcSetting = webRtcSetting;
@@ -1897,7 +1917,7 @@ namespace Remotely.Server.Services
public async Task UpdateDevice(DeviceSetupOptions deviceOptions, string organizationId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var device = dbContext.Devices.Find(deviceOptions.DeviceID);
if (device == null || device.OrganizationID != organizationId)
@@ -1917,7 +1937,7 @@ namespace Remotely.Server.Services
public void UpdateOrganizationName(string orgID, string organizationName)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
dbContext.Organizations
.FirstOrDefault(x => x.ID == orgID)
@@ -1927,7 +1947,7 @@ namespace Remotely.Server.Services
public void UpdateTags(string deviceID, string tags)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var device = dbContext.Devices.Find(deviceID);
if (device == null)
@@ -1941,7 +1961,7 @@ namespace Remotely.Server.Services
public void UpdateUserOptions(string userName, RemotelyUserOptions options)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
dbContext.Users.FirstOrDefault(x => x.UserName == userName).UserOptions = options;
dbContext.SaveChanges();
@@ -1949,16 +1969,14 @@ namespace Remotely.Server.Services
public bool ValidateApiKey(string keyId, string apiSecret, string requestPath, string remoteIP)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var hasher = new PasswordHasher();
var token = dbContext.ApiTokens.FirstOrDefault(x => x.ID == keyId);
-
var isValid = token is not null &&
hasher.VerifyHashedPassword(null, token.Secret, apiSecret) == PasswordVerificationResult.Success;
-
if (token is not null)
{
token.LastUsed = DateTimeOffset.Now;
@@ -1974,7 +1992,7 @@ namespace Remotely.Server.Services
{
try
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
dbContext.EventLogs.Add(eventLog);
dbContext.SaveChanges();
@@ -1986,7 +2004,7 @@ namespace Remotely.Server.Services
{
try
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
dbContext.EventLogs.Add(new EventLog()
{
@@ -2011,7 +2029,7 @@ namespace Remotely.Server.Services
{
try
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
dbContext.EventLogs.Add(new EventLog()
{
@@ -2036,7 +2054,7 @@ namespace Remotely.Server.Services
try
{
// TODO: Refactor EventLog to resemble these params. Replace WriteEvent with ILogger.
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
EventType eventType = EventType.Debug;
switch (logLevel)
@@ -2046,16 +2064,20 @@ namespace Remotely.Server.Services
case LogLevel.Debug:
eventType = EventType.Debug;
break;
+
case LogLevel.Information:
eventType = EventType.Info;
break;
+
case LogLevel.Warning:
eventType = EventType.Warning;
break;
+
case LogLevel.Error:
case LogLevel.Critical:
eventType = EventType.Error;
break;
+
default:
break;
}
@@ -2071,7 +2093,6 @@ namespace Remotely.Server.Services
dbContext.SaveChanges();
}
catch { }
-
}
private async Task AddSharedFileInternal(
@@ -2080,7 +2101,7 @@ namespace Remotely.Server.Services
string contentType,
string organizationId)
{
- using var dbContext = _dbFactory.CreateDbContext();
+ using var dbContext = GetDbContext();
var expirationDate = DateTimeOffset.Now.AddDays(-_appConfig.DataRetentionInDays);
var expiredFiles = dbContext.SharedFiles.Where(x => x.Timestamp < expirationDate);
@@ -2099,6 +2120,7 @@ namespace Remotely.Server.Services
await dbContext.SaveChangesAsync();
return sharedFile.ID;
}
+
private string[] FilterUsersByDevicePermissionInternal(AppDb dbContext, IEnumerable userIDs, string deviceID)
{
var device = dbContext.Devices
@@ -2133,5 +2155,24 @@ namespace Remotely.Server.Services
.Select(x => x.Id)
.ToArray();
}
+
+ private AppDb GetDbContext()
+ {
+ switch (_appConfig.DBProvider.ToLower())
+ {
+ case "sqlite":
+ return new SqliteDbContext(_configuration);
+
+ case "sqlserver":
+ return new SqlServerDbContext(_configuration);
+
+ case "postgresql":
+ return new PostgreSqlDbContext(_configuration);
+ case "inmemory":
+ return new TestingDbContext();
+ default:
+ throw new ArgumentException("Unknown DB provider.");
+ }
+ }
}
-}
+}
\ No newline at end of file
diff --git a/Server/Startup.cs b/Server/Startup.cs
index 4e7a2ac3..38588c75 100644
--- a/Server/Startup.cs
+++ b/Server/Startup.cs
@@ -49,34 +49,22 @@ namespace Remotely.Server
var dbProvider = Configuration["ApplicationOptions:DBProvider"].ToLower();
if (dbProvider == "sqlite")
{
- services.AddDbContextFactory(options =>
+ services.AddDbContext(options =>
{
options.UseSqlite(Configuration.GetConnectionString("SQLite"));
});
- services.AddScoped>(p =>
- p.GetRequiredService>());
-
- services.AddScoped(p =>
- p.GetRequiredService>().CreateDbContext());
-
}
else if (dbProvider == "sqlserver")
{
- services.AddDbContextFactory(options =>
+ services.AddDbContext(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("SQLServer"));
});
-
- services.AddScoped>(p =>
- p.GetRequiredService>());
-
- services.AddScoped(p =>
- p.GetRequiredService>().CreateDbContext());
}
else if (dbProvider == "postgresql")
{
- services.AddDbContextFactory(options =>
+ services.AddDbContext(options =>
{
// Password should be set in User Secrets in dev environment.
// See https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-3.1
@@ -93,12 +81,6 @@ namespace Remotely.Server
options.UseNpgsql(Configuration.GetConnectionString("PostgreSQL"));
}
});
-
- services.AddScoped>(p =>
- p.GetRequiredService>());
-
- services.AddScoped(p =>
- p.GetRequiredService>().CreateDbContext());
}
services.AddIdentity(options =>
diff --git a/Server/appsettings.json b/Server/appsettings.json
index cb4e5a7e..b8c4d1a4 100644
--- a/Server/appsettings.json
+++ b/Server/appsettings.json
@@ -37,19 +37,17 @@
"RemoteControlRequiresAuthentication": true,
"RemoteControlSessionLimit": 3,
"Require2FA": false,
- "ServerUrl": "",
"SmtpDisplayName": "",
"SmtpEmail": "",
- "SmtpEnableSsl": true,
"SmtpHost": "",
"SmtpLocalDomain": "",
+ "SmtpCheckCertificateRevocation": true,
"SmtpPassword": "",
"SmtpPort": 587,
"SmtpUserName": "",
- "SmtpCheckCertificateRevocation": true,
"Theme": "Dark",
"TrustedCorsOrigins": [],
"UseHsts": false,
- "UseWebRtc": true
+ "UseWebRtc": false
}
-}
+}
\ No newline at end of file
diff --git a/Server/libman.json b/Server/libman.json
index 3077a4d6..a52cd5c0 100644
--- a/Server/libman.json
+++ b/Server/libman.json
@@ -3,7 +3,7 @@
"defaultProvider": "cdnjs",
"libraries": [
{
- "library": "microsoft-signalr@5.0.7",
+ "library": "microsoft-signalr@6.0.0",
"destination": "wwwroot/lib/microsoft-signalr/"
},
{
@@ -12,7 +12,7 @@
},
{
"provider": "unpkg",
- "library": "@microsoft/signalr-protocol-msgpack@5.0.7",
+ "library": "@microsoft/signalr-protocol-msgpack@6.0.0",
"destination": "wwwroot/lib/microsoft/signalr-protocol-msgpack/",
"files": [
"dist/browser/signalr-protocol-msgpack.js",
diff --git a/Server/wwwroot/Content/Install-Manjaro-x64.sh b/Server/wwwroot/Content/Install-Manjaro-x64.sh
index bb28bd72..68f28278 100644
--- a/Server/wwwroot/Content/Install-Manjaro-x64.sh
+++ b/Server/wwwroot/Content/Install-Manjaro-x64.sh
@@ -22,7 +22,7 @@ do
done
pacman -Sy
-pacman -S dotnet-runtime-5.0 --noconfirm
+pacman -S dotnet-runtime-6.0 --noconfirm
pacman -S libx11 --noconfirm
pacman -S unzip --noconfirm
pacman -S libc6 --noconfirm
diff --git a/Server/wwwroot/Content/Install-Ubuntu-x64.sh b/Server/wwwroot/Content/Install-Ubuntu-x64.sh
index dca7651f..d591ec1c 100644
--- a/Server/wwwroot/Content/Install-Ubuntu-x64.sh
+++ b/Server/wwwroot/Content/Install-Ubuntu-x64.sh
@@ -28,7 +28,7 @@ dpkg -i packages-microsoft-prod.deb
apt-get update
apt-get -y install apt-transport-https
apt-get update
-apt-get -y install dotnet-runtime-5.0
+apt-get -y install dotnet-runtime-6.0
rm packages-microsoft-prod.deb
apt-get -y install libx11-dev
diff --git a/Server/wwwroot/lib/microsoft-signalr/signalr.js b/Server/wwwroot/lib/microsoft-signalr/signalr.js
index 5716b6b0..c4955b2e 100644
--- a/Server/wwwroot/lib/microsoft-signalr/signalr.js
+++ b/Server/wwwroot/lib/microsoft-signalr/signalr.js
@@ -1,5298 +1,2 @@
-(function webpackUniversalModuleDefinition(root, factory) {
- if(typeof exports === 'object' && typeof module === 'object')
- module.exports = factory();
- else if(typeof define === 'function' && define.amd)
- define([], factory);
- else if(typeof exports === 'object')
- exports["signalR"] = factory();
- else
- root["signalR"] = factory();
-})(window, function() {
-return /******/ (function(modules) { // webpackBootstrap
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId]) {
-/******/ return installedModules[moduleId].exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ i: moduleId,
-/******/ l: false,
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.l = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = modules;
-/******/
-/******/ // expose the module cache
-/******/ __webpack_require__.c = installedModules;
-/******/
-/******/ // define getter function for harmony exports
-/******/ __webpack_require__.d = function(exports, name, getter) {
-/******/ if(!__webpack_require__.o(exports, name)) {
-/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/ }
-/******/ };
-/******/
-/******/ // define __esModule on exports
-/******/ __webpack_require__.r = function(exports) {
-/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ }
-/******/ Object.defineProperty(exports, '__esModule', { value: true });
-/******/ };
-/******/
-/******/ // create a fake namespace object
-/******/ // mode & 1: value is a module id, require it
-/******/ // mode & 2: merge all properties of value into the ns
-/******/ // mode & 4: return value when already ns object
-/******/ // mode & 8|1: behave like require
-/******/ __webpack_require__.t = function(value, mode) {
-/******/ if(mode & 1) value = __webpack_require__(value);
-/******/ if(mode & 8) return value;
-/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/ var ns = Object.create(null);
-/******/ __webpack_require__.r(ns);
-/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/ return ns;
-/******/ };
-/******/
-/******/ // getDefaultExport function for compatibility with non-harmony modules
-/******/ __webpack_require__.n = function(module) {
-/******/ var getter = module && module.__esModule ?
-/******/ function getDefault() { return module['default']; } :
-/******/ function getModuleExports() { return module; };
-/******/ __webpack_require__.d(getter, 'a', getter);
-/******/ return getter;
-/******/ };
-/******/
-/******/ // Object.prototype.hasOwnProperty.call
-/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "";
-/******/
-/******/
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var es6_promise_dist_es6_promise_auto_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
-/* harmony import */ var es6_promise_dist_es6_promise_auto_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(es6_promise_dist_es6_promise_auto_js__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AbortError", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["AbortError"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpError", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HttpError"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["TimeoutError"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpClient", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HttpClient"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpResponse", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HttpResponse"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DefaultHttpClient", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["DefaultHttpClient"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnection", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HubConnection"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnectionState", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HubConnectionState"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnectionBuilder", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HubConnectionBuilder"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MessageType", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["MessageType"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LogLevel", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["LogLevel"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpTransportType", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HttpTransportType"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TransferFormat", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["TransferFormat"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NullLogger", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["NullLogger"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "JsonHubProtocol", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["JsonHubProtocol"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["Subject"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["VERSION"]; });
-
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-// This is where we add any polyfills we'll need for the browser. It is the entry module for browser-specific builds.
-
-// Copy from Array.prototype into Uint8Array to polyfill on IE. It's OK because the implementations of indexOf and slice use properties
-// that exist on Uint8Array with the same name, and JavaScript is magic.
-// We make them 'writable' because the Buffer polyfill messes with it as well.
-if (!Uint8Array.prototype.indexOf) {
- Object.defineProperty(Uint8Array.prototype, "indexOf", {
- value: Array.prototype.indexOf,
- writable: true,
- });
-}
-if (!Uint8Array.prototype.slice) {
- Object.defineProperty(Uint8Array.prototype, "slice", {
- // wrap the slice in Uint8Array so it looks like a Uint8Array.slice call
- // tslint:disable-next-line:object-literal-shorthand
- value: function (start, end) { return new Uint8Array(Array.prototype.slice.call(this, start, end)); },
- writable: true,
- });
-}
-if (!Uint8Array.prototype.forEach) {
- Object.defineProperty(Uint8Array.prototype, "forEach", {
- value: Array.prototype.forEach,
- writable: true,
- });
-}
-
-
-
-/***/ }),
-/* 1 */
-/***/ (function(module, exports, __webpack_require__) {
-
-/* WEBPACK VAR INJECTION */(function(global) {var require;/*!
- * @overview es6-promise - a tiny implementation of Promises/A+.
- * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
- * @license Licensed under MIT license
- * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
- * @version v4.2.2+97478eb6
- */
-
-(function (global, factory) {
- true ? module.exports = factory() :
- undefined;
-}(this, (function () { 'use strict';
-
-function objectOrFunction(x) {
- var type = typeof x;
- return x !== null && (type === 'object' || type === 'function');
-}
-
-function isFunction(x) {
- return typeof x === 'function';
-}
-
-
-
-var _isArray = void 0;
-if (Array.isArray) {
- _isArray = Array.isArray;
-} else {
- _isArray = function (x) {
- return Object.prototype.toString.call(x) === '[object Array]';
- };
-}
-
-var isArray = _isArray;
-
-var len = 0;
-var vertxNext = void 0;
-var customSchedulerFn = void 0;
-
-var asap = function asap(callback, arg) {
- queue[len] = callback;
- queue[len + 1] = arg;
- len += 2;
- if (len === 2) {
- // If len is 2, that means that we need to schedule an async flush.
- // If additional callbacks are queued before the queue is flushed, they
- // will be processed by this flush that we are scheduling.
- if (customSchedulerFn) {
- customSchedulerFn(flush);
- } else {
- scheduleFlush();
- }
- }
-};
-
-function setScheduler(scheduleFn) {
- customSchedulerFn = scheduleFn;
-}
-
-function setAsap(asapFn) {
- asap = asapFn;
-}
-
-var browserWindow = typeof window !== 'undefined' ? window : undefined;
-var browserGlobal = browserWindow || {};
-var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
-var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
-
-// test for web worker but not in IE10
-var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
-
-// node
-function useNextTick() {
- // node version 0.10.x displays a deprecation warning when nextTick is used recursively
- // see https://github.com/cujojs/when/issues/410 for details
- return function () {
- return process.nextTick(flush);
- };
-}
-
-// vertx
-function useVertxTimer() {
- if (typeof vertxNext !== 'undefined') {
- return function () {
- vertxNext(flush);
- };
- }
-
- return useSetTimeout();
-}
-
-function useMutationObserver() {
- var iterations = 0;
- var observer = new BrowserMutationObserver(flush);
- var node = document.createTextNode('');
- observer.observe(node, { characterData: true });
-
- return function () {
- node.data = iterations = ++iterations % 2;
- };
-}
-
-// web worker
-function useMessageChannel() {
- var channel = new MessageChannel();
- channel.port1.onmessage = flush;
- return function () {
- return channel.port2.postMessage(0);
- };
-}
-
-function useSetTimeout() {
- // Store setTimeout reference so es6-promise will be unaffected by
- // other code modifying setTimeout (like sinon.useFakeTimers())
- var globalSetTimeout = setTimeout;
- return function () {
- return globalSetTimeout(flush, 1);
- };
-}
-
-var queue = new Array(1000);
-function flush() {
- for (var i = 0; i < len; i += 2) {
- var callback = queue[i];
- var arg = queue[i + 1];
-
- callback(arg);
-
- queue[i] = undefined;
- queue[i + 1] = undefined;
- }
-
- len = 0;
-}
-
-function attemptVertx() {
- try {
- var r = require;
- var vertx = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module 'vertx'"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));
- vertxNext = vertx.runOnLoop || vertx.runOnContext;
- return useVertxTimer();
- } catch (e) {
- return useSetTimeout();
- }
-}
-
-var scheduleFlush = void 0;
-// Decide what async method to use to triggering processing of queued callbacks:
-if (isNode) {
- scheduleFlush = useNextTick();
-} else if (BrowserMutationObserver) {
- scheduleFlush = useMutationObserver();
-} else if (isWorker) {
- scheduleFlush = useMessageChannel();
-} else if (browserWindow === undefined && "function" === 'function') {
- scheduleFlush = attemptVertx();
-} else {
- scheduleFlush = useSetTimeout();
-}
-
-function then(onFulfillment, onRejection) {
- var parent = this;
-
- var child = new this.constructor(noop);
-
- if (child[PROMISE_ID] === undefined) {
- makePromise(child);
- }
-
- var _state = parent._state;
-
-
- if (_state) {
- var callback = arguments[_state - 1];
- asap(function () {
- return invokeCallback(_state, child, callback, parent._result);
- });
- } else {
- subscribe(parent, child, onFulfillment, onRejection);
- }
-
- return child;
-}
-
-/**
- `Promise.resolve` returns a promise that will become resolved with the
- passed `value`. It is shorthand for the following:
-
- ```javascript
- let promise = new Promise(function(resolve, reject){
- resolve(1);
- });
-
- promise.then(function(value){
- // value === 1
- });
- ```
-
- Instead of writing the above, your code now simply becomes the following:
-
- ```javascript
- let promise = Promise.resolve(1);
-
- promise.then(function(value){
- // value === 1
- });
- ```
-
- @method resolve
- @static
- @param {Any} value value that the returned promise will be resolved with
- Useful for tooling.
- @return {Promise} a promise that will become fulfilled with the given
- `value`
-*/
-function resolve$1(object) {
- /*jshint validthis:true */
- var Constructor = this;
-
- if (object && typeof object === 'object' && object.constructor === Constructor) {
- return object;
- }
-
- var promise = new Constructor(noop);
- resolve(promise, object);
- return promise;
-}
-
-var PROMISE_ID = Math.random().toString(36).substring(16);
-
-function noop() {}
-
-var PENDING = void 0;
-var FULFILLED = 1;
-var REJECTED = 2;
-
-var GET_THEN_ERROR = new ErrorObject();
-
-function selfFulfillment() {
- return new TypeError("You cannot resolve a promise with itself");
-}
-
-function cannotReturnOwn() {
- return new TypeError('A promises callback cannot return that same promise.');
-}
-
-function getThen(promise) {
- try {
- return promise.then;
- } catch (error) {
- GET_THEN_ERROR.error = error;
- return GET_THEN_ERROR;
- }
-}
-
-function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
- try {
- then$$1.call(value, fulfillmentHandler, rejectionHandler);
- } catch (e) {
- return e;
- }
-}
-
-function handleForeignThenable(promise, thenable, then$$1) {
- asap(function (promise) {
- var sealed = false;
- var error = tryThen(then$$1, thenable, function (value) {
- if (sealed) {
- return;
- }
- sealed = true;
- if (thenable !== value) {
- resolve(promise, value);
- } else {
- fulfill(promise, value);
- }
- }, function (reason) {
- if (sealed) {
- return;
- }
- sealed = true;
-
- reject(promise, reason);
- }, 'Settle: ' + (promise._label || ' unknown promise'));
-
- if (!sealed && error) {
- sealed = true;
- reject(promise, error);
- }
- }, promise);
-}
-
-function handleOwnThenable(promise, thenable) {
- if (thenable._state === FULFILLED) {
- fulfill(promise, thenable._result);
- } else if (thenable._state === REJECTED) {
- reject(promise, thenable._result);
- } else {
- subscribe(thenable, undefined, function (value) {
- return resolve(promise, value);
- }, function (reason) {
- return reject(promise, reason);
- });
- }
-}
-
-function handleMaybeThenable(promise, maybeThenable, then$$1) {
- if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {
- handleOwnThenable(promise, maybeThenable);
- } else {
- if (then$$1 === GET_THEN_ERROR) {
- reject(promise, GET_THEN_ERROR.error);
- GET_THEN_ERROR.error = null;
- } else if (then$$1 === undefined) {
- fulfill(promise, maybeThenable);
- } else if (isFunction(then$$1)) {
- handleForeignThenable(promise, maybeThenable, then$$1);
- } else {
- fulfill(promise, maybeThenable);
- }
- }
-}
-
-function resolve(promise, value) {
- if (promise === value) {
- reject(promise, selfFulfillment());
- } else if (objectOrFunction(value)) {
- handleMaybeThenable(promise, value, getThen(value));
- } else {
- fulfill(promise, value);
- }
-}
-
-function publishRejection(promise) {
- if (promise._onerror) {
- promise._onerror(promise._result);
- }
-
- publish(promise);
-}
-
-function fulfill(promise, value) {
- if (promise._state !== PENDING) {
- return;
- }
-
- promise._result = value;
- promise._state = FULFILLED;
-
- if (promise._subscribers.length !== 0) {
- asap(publish, promise);
- }
-}
-
-function reject(promise, reason) {
- if (promise._state !== PENDING) {
- return;
- }
- promise._state = REJECTED;
- promise._result = reason;
-
- asap(publishRejection, promise);
-}
-
-function subscribe(parent, child, onFulfillment, onRejection) {
- var _subscribers = parent._subscribers;
- var length = _subscribers.length;
-
-
- parent._onerror = null;
-
- _subscribers[length] = child;
- _subscribers[length + FULFILLED] = onFulfillment;
- _subscribers[length + REJECTED] = onRejection;
-
- if (length === 0 && parent._state) {
- asap(publish, parent);
- }
-}
-
-function publish(promise) {
- var subscribers = promise._subscribers;
- var settled = promise._state;
-
- if (subscribers.length === 0) {
- return;
- }
-
- var child = void 0,
- callback = void 0,
- detail = promise._result;
-
- for (var i = 0; i < subscribers.length; i += 3) {
- child = subscribers[i];
- callback = subscribers[i + settled];
-
- if (child) {
- invokeCallback(settled, child, callback, detail);
- } else {
- callback(detail);
- }
- }
-
- promise._subscribers.length = 0;
-}
-
-function ErrorObject() {
- this.error = null;
-}
-
-var TRY_CATCH_ERROR = new ErrorObject();
-
-function tryCatch(callback, detail) {
- try {
- return callback(detail);
- } catch (e) {
- TRY_CATCH_ERROR.error = e;
- return TRY_CATCH_ERROR;
- }
-}
-
-function invokeCallback(settled, promise, callback, detail) {
- var hasCallback = isFunction(callback),
- value = void 0,
- error = void 0,
- succeeded = void 0,
- failed = void 0;
-
- if (hasCallback) {
- value = tryCatch(callback, detail);
-
- if (value === TRY_CATCH_ERROR) {
- failed = true;
- error = value.error;
- value.error = null;
- } else {
- succeeded = true;
- }
-
- if (promise === value) {
- reject(promise, cannotReturnOwn());
- return;
- }
- } else {
- value = detail;
- succeeded = true;
- }
-
- if (promise._state !== PENDING) {
- // noop
- } else if (hasCallback && succeeded) {
- resolve(promise, value);
- } else if (failed) {
- reject(promise, error);
- } else if (settled === FULFILLED) {
- fulfill(promise, value);
- } else if (settled === REJECTED) {
- reject(promise, value);
- }
-}
-
-function initializePromise(promise, resolver) {
- try {
- resolver(function resolvePromise(value) {
- resolve(promise, value);
- }, function rejectPromise(reason) {
- reject(promise, reason);
- });
- } catch (e) {
- reject(promise, e);
- }
-}
-
-var id = 0;
-function nextId() {
- return id++;
-}
-
-function makePromise(promise) {
- promise[PROMISE_ID] = id++;
- promise._state = undefined;
- promise._result = undefined;
- promise._subscribers = [];
-}
-
-function validationError() {
- return new Error('Array Methods must be provided an Array');
-}
-
-function validationError() {
- return new Error('Array Methods must be provided an Array');
-}
-
-var Enumerator = function () {
- function Enumerator(Constructor, input) {
- this._instanceConstructor = Constructor;
- this.promise = new Constructor(noop);
-
- if (!this.promise[PROMISE_ID]) {
- makePromise(this.promise);
- }
-
- if (isArray(input)) {
- this.length = input.length;
- this._remaining = input.length;
-
- this._result = new Array(this.length);
-
- if (this.length === 0) {
- fulfill(this.promise, this._result);
- } else {
- this.length = this.length || 0;
- this._enumerate(input);
- if (this._remaining === 0) {
- fulfill(this.promise, this._result);
- }
- }
- } else {
- reject(this.promise, validationError());
- }
- }
-
- Enumerator.prototype._enumerate = function _enumerate(input) {
- for (var i = 0; this._state === PENDING && i < input.length; i++) {
- this._eachEntry(input[i], i);
- }
- };
-
- Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {
- var c = this._instanceConstructor;
- var resolve$$1 = c.resolve;
-
-
- if (resolve$$1 === resolve$1) {
- var _then = getThen(entry);
-
- if (_then === then && entry._state !== PENDING) {
- this._settledAt(entry._state, i, entry._result);
- } else if (typeof _then !== 'function') {
- this._remaining--;
- this._result[i] = entry;
- } else if (c === Promise$2) {
- var promise = new c(noop);
- handleMaybeThenable(promise, entry, _then);
- this._willSettleAt(promise, i);
- } else {
- this._willSettleAt(new c(function (resolve$$1) {
- return resolve$$1(entry);
- }), i);
- }
- } else {
- this._willSettleAt(resolve$$1(entry), i);
- }
- };
-
- Enumerator.prototype._settledAt = function _settledAt(state, i, value) {
- var promise = this.promise;
-
-
- if (promise._state === PENDING) {
- this._remaining--;
-
- if (state === REJECTED) {
- reject(promise, value);
- } else {
- this._result[i] = value;
- }
- }
-
- if (this._remaining === 0) {
- fulfill(promise, this._result);
- }
- };
-
- Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {
- var enumerator = this;
-
- subscribe(promise, undefined, function (value) {
- return enumerator._settledAt(FULFILLED, i, value);
- }, function (reason) {
- return enumerator._settledAt(REJECTED, i, reason);
- });
- };
-
- return Enumerator;
-}();
-
-/**
- `Promise.all` accepts an array of promises, and returns a new promise which
- is fulfilled with an array of fulfillment values for the passed promises, or
- rejected with the reason of the first passed promise to be rejected. It casts all
- elements of the passed iterable to promises as it runs this algorithm.
-
- Example:
-
- ```javascript
- let promise1 = resolve(1);
- let promise2 = resolve(2);
- let promise3 = resolve(3);
- let promises = [ promise1, promise2, promise3 ];
-
- Promise.all(promises).then(function(array){
- // The array here would be [ 1, 2, 3 ];
- });
- ```
-
- If any of the `promises` given to `all` are rejected, the first promise
- that is rejected will be given as an argument to the returned promises's
- rejection handler. For example:
-
- Example:
-
- ```javascript
- let promise1 = resolve(1);
- let promise2 = reject(new Error("2"));
- let promise3 = reject(new Error("3"));
- let promises = [ promise1, promise2, promise3 ];
-
- Promise.all(promises).then(function(array){
- // Code here never runs because there are rejected promises!
- }, function(error) {
- // error.message === "2"
- });
- ```
-
- @method all
- @static
- @param {Array} entries array of promises
- @param {String} label optional string for labeling the promise.
- Useful for tooling.
- @return {Promise} promise that is fulfilled when all `promises` have been
- fulfilled, or rejected if any of them become rejected.
- @static
-*/
-function all(entries) {
- return new Enumerator(this, entries).promise;
-}
-
-/**
- `Promise.race` returns a new promise which is settled in the same way as the
- first passed promise to settle.
-
- Example:
-
- ```javascript
- let promise1 = new Promise(function(resolve, reject){
- setTimeout(function(){
- resolve('promise 1');
- }, 200);
- });
-
- let promise2 = new Promise(function(resolve, reject){
- setTimeout(function(){
- resolve('promise 2');
- }, 100);
- });
-
- Promise.race([promise1, promise2]).then(function(result){
- // result === 'promise 2' because it was resolved before promise1
- // was resolved.
- });
- ```
-
- `Promise.race` is deterministic in that only the state of the first
- settled promise matters. For example, even if other promises given to the
- `promises` array argument are resolved, but the first settled promise has
- become rejected before the other promises became fulfilled, the returned
- promise will become rejected:
-
- ```javascript
- let promise1 = new Promise(function(resolve, reject){
- setTimeout(function(){
- resolve('promise 1');
- }, 200);
- });
-
- let promise2 = new Promise(function(resolve, reject){
- setTimeout(function(){
- reject(new Error('promise 2'));
- }, 100);
- });
-
- Promise.race([promise1, promise2]).then(function(result){
- // Code here never runs
- }, function(reason){
- // reason.message === 'promise 2' because promise 2 became rejected before
- // promise 1 became fulfilled
- });
- ```
-
- An example real-world use case is implementing timeouts:
-
- ```javascript
- Promise.race([ajax('foo.json'), timeout(5000)])
- ```
-
- @method race
- @static
- @param {Array} promises array of promises to observe
- Useful for tooling.
- @return {Promise} a promise which settles in the same way as the first passed
- promise to settle.
-*/
-function race(entries) {
- /*jshint validthis:true */
- var Constructor = this;
-
- if (!isArray(entries)) {
- return new Constructor(function (_, reject) {
- return reject(new TypeError('You must pass an array to race.'));
- });
- } else {
- return new Constructor(function (resolve, reject) {
- var length = entries.length;
- for (var i = 0; i < length; i++) {
- Constructor.resolve(entries[i]).then(resolve, reject);
- }
- });
- }
-}
-
-/**
- `Promise.reject` returns a promise rejected with the passed `reason`.
- It is shorthand for the following:
-
- ```javascript
- let promise = new Promise(function(resolve, reject){
- reject(new Error('WHOOPS'));
- });
-
- promise.then(function(value){
- // Code here doesn't run because the promise is rejected!
- }, function(reason){
- // reason.message === 'WHOOPS'
- });
- ```
-
- Instead of writing the above, your code now simply becomes the following:
-
- ```javascript
- let promise = Promise.reject(new Error('WHOOPS'));
-
- promise.then(function(value){
- // Code here doesn't run because the promise is rejected!
- }, function(reason){
- // reason.message === 'WHOOPS'
- });
- ```
-
- @method reject
- @static
- @param {Any} reason value that the returned promise will be rejected with.
- Useful for tooling.
- @return {Promise} a promise rejected with the given `reason`.
-*/
-function reject$1(reason) {
- /*jshint validthis:true */
- var Constructor = this;
- var promise = new Constructor(noop);
- reject(promise, reason);
- return promise;
-}
-
-function needsResolver() {
- throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
-}
-
-function needsNew() {
- throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
-}
-
-/**
- Promise objects represent the eventual result of an asynchronous operation. The
- primary way of interacting with a promise is through its `then` method, which
- registers callbacks to receive either a promise's eventual value or the reason
- why the promise cannot be fulfilled.
-
- Terminology
- -----------
-
- - `promise` is an object or function with a `then` method whose behavior conforms to this specification.
- - `thenable` is an object or function that defines a `then` method.
- - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).
- - `exception` is a value that is thrown using the throw statement.
- - `reason` is a value that indicates why a promise was rejected.
- - `settled` the final resting state of a promise, fulfilled or rejected.
-
- A promise can be in one of three states: pending, fulfilled, or rejected.
-
- Promises that are fulfilled have a fulfillment value and are in the fulfilled
- state. Promises that are rejected have a rejection reason and are in the
- rejected state. A fulfillment value is never a thenable.
-
- Promises can also be said to *resolve* a value. If this value is also a
- promise, then the original promise's settled state will match the value's
- settled state. So a promise that *resolves* a promise that rejects will
- itself reject, and a promise that *resolves* a promise that fulfills will
- itself fulfill.
-
-
- Basic Usage:
- ------------
-
- ```js
- let promise = new Promise(function(resolve, reject) {
- // on success
- resolve(value);
-
- // on failure
- reject(reason);
- });
-
- promise.then(function(value) {
- // on fulfillment
- }, function(reason) {
- // on rejection
- });
- ```
-
- Advanced Usage:
- ---------------
-
- Promises shine when abstracting away asynchronous interactions such as
- `XMLHttpRequest`s.
-
- ```js
- function getJSON(url) {
- return new Promise(function(resolve, reject){
- let xhr = new XMLHttpRequest();
-
- xhr.open('GET', url);
- xhr.onreadystatechange = handler;
- xhr.responseType = 'json';
- xhr.setRequestHeader('Accept', 'application/json');
- xhr.send();
-
- function handler() {
- if (this.readyState === this.DONE) {
- if (this.status === 200) {
- resolve(this.response);
- } else {
- reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
- }
- }
- };
- });
- }
-
- getJSON('/posts.json').then(function(json) {
- // on fulfillment
- }, function(reason) {
- // on rejection
- });
- ```
-
- Unlike callbacks, promises are great composable primitives.
-
- ```js
- Promise.all([
- getJSON('/posts'),
- getJSON('/comments')
- ]).then(function(values){
- values[0] // => postsJSON
- values[1] // => commentsJSON
-
- return values;
- });
- ```
-
- @class Promise
- @param {Function} resolver
- Useful for tooling.
- @constructor
-*/
-
-var Promise$2 = function () {
- function Promise(resolver) {
- this[PROMISE_ID] = nextId();
- this._result = this._state = undefined;
- this._subscribers = [];
-
- if (noop !== resolver) {
- typeof resolver !== 'function' && needsResolver();
- this instanceof Promise ? initializePromise(this, resolver) : needsNew();
- }
- }
-
- /**
- The primary way of interacting with a promise is through its `then` method,
- which registers callbacks to receive either a promise's eventual value or the
- reason why the promise cannot be fulfilled.
- ```js
- findUser().then(function(user){
- // user is available
- }, function(reason){
- // user is unavailable, and you are given the reason why
- });
- ```
- Chaining
- --------
- The return value of `then` is itself a promise. This second, 'downstream'
- promise is resolved with the return value of the first promise's fulfillment
- or rejection handler, or rejected if the handler throws an exception.
- ```js
- findUser().then(function (user) {
- return user.name;
- }, function (reason) {
- return 'default name';
- }).then(function (userName) {
- // If `findUser` fulfilled, `userName` will be the user's name, otherwise it
- // will be `'default name'`
- });
- findUser().then(function (user) {
- throw new Error('Found user, but still unhappy');
- }, function (reason) {
- throw new Error('`findUser` rejected and we're unhappy');
- }).then(function (value) {
- // never reached
- }, function (reason) {
- // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
- // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
- });
- ```
- If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
- ```js
- findUser().then(function (user) {
- throw new PedagogicalException('Upstream error');
- }).then(function (value) {
- // never reached
- }).then(function (value) {
- // never reached
- }, function (reason) {
- // The `PedgagocialException` is propagated all the way down to here
- });
- ```
- Assimilation
- ------------
- Sometimes the value you want to propagate to a downstream promise can only be
- retrieved asynchronously. This can be achieved by returning a promise in the
- fulfillment or rejection handler. The downstream promise will then be pending
- until the returned promise is settled. This is called *assimilation*.
- ```js
- findUser().then(function (user) {
- return findCommentsByAuthor(user);
- }).then(function (comments) {
- // The user's comments are now available
- });
- ```
- If the assimliated promise rejects, then the downstream promise will also reject.
- ```js
- findUser().then(function (user) {
- return findCommentsByAuthor(user);
- }).then(function (comments) {
- // If `findCommentsByAuthor` fulfills, we'll have the value here
- }, function (reason) {
- // If `findCommentsByAuthor` rejects, we'll have the reason here
- });
- ```
- Simple Example
- --------------
- Synchronous Example
- ```javascript
- let result;
- try {
- result = findResult();
- // success
- } catch(reason) {
- // failure
- }
- ```
- Errback Example
- ```js
- findResult(function(result, err){
- if (err) {
- // failure
- } else {
- // success
- }
- });
- ```
- Promise Example;
- ```javascript
- findResult().then(function(result){
- // success
- }, function(reason){
- // failure
- });
- ```
- Advanced Example
- --------------
- Synchronous Example
- ```javascript
- let author, books;
- try {
- author = findAuthor();
- books = findBooksByAuthor(author);
- // success
- } catch(reason) {
- // failure
- }
- ```
- Errback Example
- ```js
- function foundBooks(books) {
- }
- function failure(reason) {
- }
- findAuthor(function(author, err){
- if (err) {
- failure(err);
- // failure
- } else {
- try {
- findBoooksByAuthor(author, function(books, err) {
- if (err) {
- failure(err);
- } else {
- try {
- foundBooks(books);
- } catch(reason) {
- failure(reason);
- }
- }
- });
- } catch(error) {
- failure(err);
- }
- // success
- }
- });
- ```
- Promise Example;
- ```javascript
- findAuthor().
- then(findBooksByAuthor).
- then(function(books){
- // found books
- }).catch(function(reason){
- // something went wrong
- });
- ```
- @method then
- @param {Function} onFulfilled
- @param {Function} onRejected
- Useful for tooling.
- @return {Promise}
- */
-
- /**
- `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
- as the catch block of a try/catch statement.
- ```js
- function findAuthor(){
- throw new Error('couldn't find that author');
- }
- // synchronous
- try {
- findAuthor();
- } catch(reason) {
- // something went wrong
- }
- // async with promises
- findAuthor().catch(function(reason){
- // something went wrong
- });
- ```
- @method catch
- @param {Function} onRejection
- Useful for tooling.
- @return {Promise}
- */
-
-
- Promise.prototype.catch = function _catch(onRejection) {
- return this.then(null, onRejection);
- };
-
- /**
- `finally` will be invoked regardless of the promise's fate just as native
- try/catch/finally behaves
-
- Synchronous example:
-
- ```js
- findAuthor() {
- if (Math.random() > 0.5) {
- throw new Error();
- }
- return new Author();
- }
-
- try {
- return findAuthor(); // succeed or fail
- } catch(error) {
- return findOtherAuther();
- } finally {
- // always runs
- // doesn't affect the return value
- }
- ```
-
- Asynchronous example:
-
- ```js
- findAuthor().catch(function(reason){
- return findOtherAuther();
- }).finally(function(){
- // author was either found, or not
- });
- ```
-
- @method finally
- @param {Function} callback
- @return {Promise}
- */
-
-
- Promise.prototype.finally = function _finally(callback) {
- var promise = this;
- var constructor = promise.constructor;
-
- return promise.then(function (value) {
- return constructor.resolve(callback()).then(function () {
- return value;
- });
- }, function (reason) {
- return constructor.resolve(callback()).then(function () {
- throw reason;
- });
- });
- };
-
- return Promise;
-}();
-
-Promise$2.prototype.then = then;
-Promise$2.all = all;
-Promise$2.race = race;
-Promise$2.resolve = resolve$1;
-Promise$2.reject = reject$1;
-Promise$2._setScheduler = setScheduler;
-Promise$2._setAsap = setAsap;
-Promise$2._asap = asap;
-
-/*global self*/
-function polyfill() {
- var local = void 0;
-
- if (typeof global !== 'undefined') {
- local = global;
- } else if (typeof self !== 'undefined') {
- local = self;
- } else {
- try {
- local = Function('return this')();
- } catch (e) {
- throw new Error('polyfill failed because global object is unavailable in this environment');
- }
- }
-
- var P = local.Promise;
-
- if (P) {
- var promiseToString = null;
- try {
- promiseToString = Object.prototype.toString.call(P.resolve());
- } catch (e) {
- // silently ignored
- }
-
- if (promiseToString === '[object Promise]' && !P.cast) {
- return;
- }
- }
-
- local.Promise = Promise$2;
-}
-
-// Strange compat..
-Promise$2.polyfill = polyfill;
-Promise$2.Promise = Promise$2;
-
-Promise$2.polyfill();
-
-return Promise$2;
-
-})));
-
-
-
-//# sourceMappingURL=es6-promise.auto.map
-
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(2)))
-
-/***/ }),
-/* 2 */
-/***/ (function(module, exports) {
-
-var g;
-
-// This works in non-strict mode
-g = (function() {
- return this;
-})();
-
-try {
- // This works if eval is allowed (see CSP)
- g = g || new Function("return this")();
-} catch (e) {
- // This works if the window reference is available
- if (typeof window === "object") g = window;
-}
-
-// g can still be undefined, but nothing to do about it...
-// We return undefined, instead of nothing here, so it's
-// easier to handle this case. if(!global) { ...}
-
-module.exports = g;
-
-
-/***/ }),
-/* 3 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AbortError", function() { return _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpError", function() { return _Errors__WEBPACK_IMPORTED_MODULE_0__["HttpError"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _Errors__WEBPACK_IMPORTED_MODULE_0__["TimeoutError"]; });
-
-/* harmony import */ var _HttpClient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpClient", function() { return _HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpClient"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpResponse", function() { return _HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpResponse"]; });
-
-/* harmony import */ var _DefaultHttpClient__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DefaultHttpClient", function() { return _DefaultHttpClient__WEBPACK_IMPORTED_MODULE_2__["DefaultHttpClient"]; });
-
-/* harmony import */ var _HubConnection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnection", function() { return _HubConnection__WEBPACK_IMPORTED_MODULE_3__["HubConnection"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnectionState", function() { return _HubConnection__WEBPACK_IMPORTED_MODULE_3__["HubConnectionState"]; });
-
-/* harmony import */ var _HubConnectionBuilder__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnectionBuilder", function() { return _HubConnectionBuilder__WEBPACK_IMPORTED_MODULE_4__["HubConnectionBuilder"]; });
-
-/* harmony import */ var _IHubProtocol__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(15);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MessageType", function() { return _IHubProtocol__WEBPACK_IMPORTED_MODULE_5__["MessageType"]; });
-
-/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(8);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LogLevel", function() { return _ILogger__WEBPACK_IMPORTED_MODULE_6__["LogLevel"]; });
-
-/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(20);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpTransportType", function() { return _ITransport__WEBPACK_IMPORTED_MODULE_7__["HttpTransportType"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TransferFormat", function() { return _ITransport__WEBPACK_IMPORTED_MODULE_7__["TransferFormat"]; });
-
-/* harmony import */ var _Loggers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(10);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NullLogger", function() { return _Loggers__WEBPACK_IMPORTED_MODULE_8__["NullLogger"]; });
-
-/* harmony import */ var _JsonHubProtocol__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(25);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "JsonHubProtocol", function() { return _JsonHubProtocol__WEBPACK_IMPORTED_MODULE_9__["JsonHubProtocol"]; });
-
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(16);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return _Subject__WEBPACK_IMPORTED_MODULE_10__["Subject"]; });
-
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(9);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return _Utils__WEBPACK_IMPORTED_MODULE_11__["VERSION"]; });
-
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/***/ }),
-/* 4 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpError", function() { return HttpError; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return TimeoutError; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbortError", function() { return AbortError; });
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __extends = (undefined && undefined.__extends) || (function () {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
-})();
-/** Error thrown when an HTTP request fails. */
-var HttpError = /** @class */ (function (_super) {
- __extends(HttpError, _super);
- /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.
- *
- * @param {string} errorMessage A descriptive error message.
- * @param {number} statusCode The HTTP status code represented by this error.
- */
- function HttpError(errorMessage, statusCode) {
- var _newTarget = this.constructor;
- var _this = this;
- var trueProto = _newTarget.prototype;
- _this = _super.call(this, errorMessage) || this;
- _this.statusCode = statusCode;
- // Workaround issue in Typescript compiler
- // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200
- _this.__proto__ = trueProto;
- return _this;
- }
- return HttpError;
-}(Error));
-
-/** Error thrown when a timeout elapses. */
-var TimeoutError = /** @class */ (function (_super) {
- __extends(TimeoutError, _super);
- /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.
- *
- * @param {string} errorMessage A descriptive error message.
- */
- function TimeoutError(errorMessage) {
- var _newTarget = this.constructor;
- if (errorMessage === void 0) { errorMessage = "A timeout occurred."; }
- var _this = this;
- var trueProto = _newTarget.prototype;
- _this = _super.call(this, errorMessage) || this;
- // Workaround issue in Typescript compiler
- // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200
- _this.__proto__ = trueProto;
- return _this;
- }
- return TimeoutError;
-}(Error));
-
-/** Error thrown when an action is aborted. */
-var AbortError = /** @class */ (function (_super) {
- __extends(AbortError, _super);
- /** Constructs a new instance of {@link AbortError}.
- *
- * @param {string} errorMessage A descriptive error message.
- */
- function AbortError(errorMessage) {
- var _newTarget = this.constructor;
- if (errorMessage === void 0) { errorMessage = "An abort occurred."; }
- var _this = this;
- var trueProto = _newTarget.prototype;
- _this = _super.call(this, errorMessage) || this;
- // Workaround issue in Typescript compiler
- // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200
- _this.__proto__ = trueProto;
- return _this;
- }
- return AbortError;
-}(Error));
-
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpResponse", function() { return HttpResponse; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpClient", function() { return HttpClient; });
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
-};
-/** Represents an HTTP response. */
-var HttpResponse = /** @class */ (function () {
- function HttpResponse(statusCode, statusText, content) {
- this.statusCode = statusCode;
- this.statusText = statusText;
- this.content = content;
- }
- return HttpResponse;
-}());
-
-/** Abstraction over an HTTP client.
- *
- * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.
- */
-var HttpClient = /** @class */ (function () {
- function HttpClient() {
- }
- HttpClient.prototype.get = function (url, options) {
- return this.send(__assign({}, options, { method: "GET", url: url }));
- };
- HttpClient.prototype.post = function (url, options) {
- return this.send(__assign({}, options, { method: "POST", url: url }));
- };
- HttpClient.prototype.delete = function (url, options) {
- return this.send(__assign({}, options, { method: "DELETE", url: url }));
- };
- /** Gets all cookies that apply to the specified URL.
- *
- * @param url The URL that the cookies are valid for.
- * @returns {string} A string containing all the key-value cookie pairs for the specified URL.
- */
- // @ts-ignore
- HttpClient.prototype.getCookieString = function (url) {
- return "";
- };
- return HttpClient;
-}());
-
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultHttpClient", function() { return DefaultHttpClient; });
-/* harmony import */ var _Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
-/* harmony import */ var _FetchHttpClient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
-/* harmony import */ var _HttpClient__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9);
-/* harmony import */ var _XhrHttpClient__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(11);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __extends = (undefined && undefined.__extends) || (function () {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
-})();
-
-
-
-
-
-/** Default implementation of {@link @microsoft/signalr.HttpClient}. */
-var DefaultHttpClient = /** @class */ (function (_super) {
- __extends(DefaultHttpClient, _super);
- /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */
- function DefaultHttpClient(logger) {
- var _this = _super.call(this) || this;
- if (typeof fetch !== "undefined" || _Utils__WEBPACK_IMPORTED_MODULE_3__["Platform"].isNode) {
- _this.httpClient = new _FetchHttpClient__WEBPACK_IMPORTED_MODULE_1__["FetchHttpClient"](logger);
- }
- else if (typeof XMLHttpRequest !== "undefined") {
- _this.httpClient = new _XhrHttpClient__WEBPACK_IMPORTED_MODULE_4__["XhrHttpClient"](logger);
- }
- else {
- throw new Error("No usable HttpClient found.");
- }
- return _this;
- }
- /** @inheritDoc */
- DefaultHttpClient.prototype.send = function (request) {
- // Check that abort was not signaled before calling send
- if (request.abortSignal && request.abortSignal.aborted) {
- return Promise.reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"]());
- }
- if (!request.method) {
- return Promise.reject(new Error("No method defined."));
- }
- if (!request.url) {
- return Promise.reject(new Error("No url defined."));
- }
- return this.httpClient.send(request);
- };
- DefaultHttpClient.prototype.getCookieString = function (url) {
- return this.httpClient.getCookieString(url);
- };
- return DefaultHttpClient;
-}(_HttpClient__WEBPACK_IMPORTED_MODULE_2__["HttpClient"]));
-
-
-
-/***/ }),
-/* 7 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FetchHttpClient", function() { return FetchHttpClient; });
-/* harmony import */ var _Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
-/* harmony import */ var _HttpClient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
-/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __extends = (undefined && undefined.__extends) || (function () {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
-})();
-var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
-};
-var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-};
-
-
-
-
-var FetchHttpClient = /** @class */ (function (_super) {
- __extends(FetchHttpClient, _super);
- function FetchHttpClient(logger) {
- var _this = _super.call(this) || this;
- _this.logger = logger;
- if (typeof fetch === "undefined") {
- // In order to ignore the dynamic require in webpack builds we need to do this magic
- // @ts-ignore: TS doesn't know about these names
- var requireFunc = true ? require : undefined;
- // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests
- _this.jar = new (requireFunc("tough-cookie")).CookieJar();
- _this.fetchType = requireFunc("node-fetch");
- // node-fetch doesn't have a nice API for getting and setting cookies
- // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one
- _this.fetchType = requireFunc("fetch-cookie")(_this.fetchType, _this.jar);
- // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide
- _this.abortControllerType = requireFunc("abort-controller");
- }
- else {
- _this.fetchType = fetch.bind(self);
- _this.abortControllerType = AbortController;
- }
- return _this;
- }
- /** @inheritDoc */
- FetchHttpClient.prototype.send = function (request) {
- return __awaiter(this, void 0, void 0, function () {
- var abortController, error, timeoutId, msTimeout, response, e_1, content, payload;
- var _this = this;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- // Check that abort was not signaled before calling send
- if (request.abortSignal && request.abortSignal.aborted) {
- throw new _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"]();
- }
- if (!request.method) {
- throw new Error("No method defined.");
- }
- if (!request.url) {
- throw new Error("No url defined.");
- }
- abortController = new this.abortControllerType();
- // Hook our abortSignal into the abort controller
- if (request.abortSignal) {
- request.abortSignal.onabort = function () {
- abortController.abort();
- error = new _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"]();
- };
- }
- timeoutId = null;
- if (request.timeout) {
- msTimeout = request.timeout;
- timeoutId = setTimeout(function () {
- abortController.abort();
- _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning, "Timeout from HTTP request.");
- error = new _Errors__WEBPACK_IMPORTED_MODULE_0__["TimeoutError"]();
- }, msTimeout);
- }
- _a.label = 1;
- case 1:
- _a.trys.push([1, 3, 4, 5]);
- return [4 /*yield*/, this.fetchType(request.url, {
- body: request.content,
- cache: "no-cache",
- credentials: request.withCredentials === true ? "include" : "same-origin",
- headers: __assign({ "Content-Type": "text/plain;charset=UTF-8", "X-Requested-With": "XMLHttpRequest" }, request.headers),
- method: request.method,
- mode: "cors",
- redirect: "manual",
- signal: abortController.signal,
- })];
- case 2:
- response = _a.sent();
- return [3 /*break*/, 5];
- case 3:
- e_1 = _a.sent();
- if (error) {
- throw error;
- }
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning, "Error from HTTP request. " + e_1 + ".");
- throw e_1;
- case 4:
- if (timeoutId) {
- clearTimeout(timeoutId);
- }
- if (request.abortSignal) {
- request.abortSignal.onabort = null;
- }
- return [7 /*endfinally*/];
- case 5:
- if (!response.ok) {
- throw new _Errors__WEBPACK_IMPORTED_MODULE_0__["HttpError"](response.statusText, response.status);
- }
- content = deserializeContent(response, request.responseType);
- return [4 /*yield*/, content];
- case 6:
- payload = _a.sent();
- return [2 /*return*/, new _HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpResponse"](response.status, response.statusText, payload)];
- }
- });
- });
- };
- FetchHttpClient.prototype.getCookieString = function (url) {
- var cookies = "";
- if (_Utils__WEBPACK_IMPORTED_MODULE_3__["Platform"].isNode && this.jar) {
- // @ts-ignore: unused variable
- this.jar.getCookies(url, function (e, c) { return cookies = c.join("; "); });
- }
- return cookies;
- };
- return FetchHttpClient;
-}(_HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpClient"]));
-
-function deserializeContent(response, responseType) {
- var content;
- switch (responseType) {
- case "arraybuffer":
- content = response.arrayBuffer();
- break;
- case "text":
- content = response.text();
- break;
- case "blob":
- case "document":
- case "json":
- throw new Error(responseType + " is not supported.");
- default:
- content = response.text();
- break;
- }
- return content;
-}
-
-
-/***/ }),
-/* 8 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LogLevel", function() { return LogLevel; });
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.
-/** Indicates the severity of a log message.
- *
- * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.
- */
-var LogLevel;
-(function (LogLevel) {
- /** Log level for very low severity diagnostic messages. */
- LogLevel[LogLevel["Trace"] = 0] = "Trace";
- /** Log level for low severity diagnostic messages. */
- LogLevel[LogLevel["Debug"] = 1] = "Debug";
- /** Log level for informational diagnostic messages. */
- LogLevel[LogLevel["Information"] = 2] = "Information";
- /** Log level for diagnostic messages that indicate a non-fatal problem. */
- LogLevel[LogLevel["Warning"] = 3] = "Warning";
- /** Log level for diagnostic messages that indicate a failure in the current operation. */
- LogLevel[LogLevel["Error"] = 4] = "Error";
- /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */
- LogLevel[LogLevel["Critical"] = 5] = "Critical";
- /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */
- LogLevel[LogLevel["None"] = 6] = "None";
-})(LogLevel || (LogLevel = {}));
-
-
-/***/ }),
-/* 9 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return VERSION; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Arg", function() { return Arg; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Platform", function() { return Platform; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDataDetail", function() { return getDataDetail; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatArrayBuffer", function() { return formatArrayBuffer; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArrayBuffer", function() { return isArrayBuffer; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sendMessage", function() { return sendMessage; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createLogger", function() { return createLogger; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscription", function() { return SubjectSubscription; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConsoleLogger", function() { return ConsoleLogger; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getUserAgentHeader", function() { return getUserAgentHeader; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "constructUserAgent", function() { return constructUserAgent; });
-/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8);
-/* harmony import */ var _Loggers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
-};
-var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-};
-
-
-// Version token that will be replaced by the prepack command
-/** The version of the SignalR client. */
-var VERSION = "5.0.7";
-/** @private */
-var Arg = /** @class */ (function () {
- function Arg() {
- }
- Arg.isRequired = function (val, name) {
- if (val === null || val === undefined) {
- throw new Error("The '" + name + "' argument is required.");
- }
- };
- Arg.isNotEmpty = function (val, name) {
- if (!val || val.match(/^\s*$/)) {
- throw new Error("The '" + name + "' argument should not be empty.");
- }
- };
- Arg.isIn = function (val, values, name) {
- // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.
- if (!(val in values)) {
- throw new Error("Unknown " + name + " value: " + val + ".");
- }
- };
- return Arg;
-}());
-
-/** @private */
-var Platform = /** @class */ (function () {
- function Platform() {
- }
- Object.defineProperty(Platform, "isBrowser", {
- get: function () {
- return typeof window === "object";
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(Platform, "isWebWorker", {
- get: function () {
- return typeof self === "object" && "importScripts" in self;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(Platform, "isNode", {
- get: function () {
- return !this.isBrowser && !this.isWebWorker;
- },
- enumerable: true,
- configurable: true
- });
- return Platform;
-}());
-
-/** @private */
-function getDataDetail(data, includeContent) {
- var detail = "";
- if (isArrayBuffer(data)) {
- detail = "Binary data of length " + data.byteLength;
- if (includeContent) {
- detail += ". Content: '" + formatArrayBuffer(data) + "'";
- }
- }
- else if (typeof data === "string") {
- detail = "String data of length " + data.length;
- if (includeContent) {
- detail += ". Content: '" + data + "'";
- }
- }
- return detail;
-}
-/** @private */
-function formatArrayBuffer(data) {
- var view = new Uint8Array(data);
- // Uint8Array.map only supports returning another Uint8Array?
- var str = "";
- view.forEach(function (num) {
- var pad = num < 16 ? "0" : "";
- str += "0x" + pad + num.toString(16) + " ";
- });
- // Trim of trailing space.
- return str.substr(0, str.length - 1);
-}
-// Also in signalr-protocol-msgpack/Utils.ts
-/** @private */
-function isArrayBuffer(val) {
- return val && typeof ArrayBuffer !== "undefined" &&
- (val instanceof ArrayBuffer ||
- // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof
- (val.constructor && val.constructor.name === "ArrayBuffer"));
-}
-/** @private */
-function sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, logMessageContent, withCredentials, defaultHeaders) {
- return __awaiter(this, void 0, void 0, function () {
- var _a, headers, token, _b, name, value, responseType, response;
- return __generator(this, function (_c) {
- switch (_c.label) {
- case 0:
- headers = {};
- if (!accessTokenFactory) return [3 /*break*/, 2];
- return [4 /*yield*/, accessTokenFactory()];
- case 1:
- token = _c.sent();
- if (token) {
- headers = (_a = {},
- _a["Authorization"] = "Bearer " + token,
- _a);
- }
- _c.label = 2;
- case 2:
- _b = getUserAgentHeader(), name = _b[0], value = _b[1];
- headers[name] = value;
- logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(" + transportName + " transport) sending data. " + getDataDetail(content, logMessageContent) + ".");
- responseType = isArrayBuffer(content) ? "arraybuffer" : "text";
- return [4 /*yield*/, httpClient.post(url, {
- content: content,
- headers: __assign({}, headers, defaultHeaders),
- responseType: responseType,
- withCredentials: withCredentials,
- })];
- case 3:
- response = _c.sent();
- logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(" + transportName + " transport) request complete. Response status: " + response.statusCode + ".");
- return [2 /*return*/];
- }
- });
- });
-}
-/** @private */
-function createLogger(logger) {
- if (logger === undefined) {
- return new ConsoleLogger(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Information);
- }
- if (logger === null) {
- return _Loggers__WEBPACK_IMPORTED_MODULE_1__["NullLogger"].instance;
- }
- if (logger.log) {
- return logger;
- }
- return new ConsoleLogger(logger);
-}
-/** @private */
-var SubjectSubscription = /** @class */ (function () {
- function SubjectSubscription(subject, observer) {
- this.subject = subject;
- this.observer = observer;
- }
- SubjectSubscription.prototype.dispose = function () {
- var index = this.subject.observers.indexOf(this.observer);
- if (index > -1) {
- this.subject.observers.splice(index, 1);
- }
- if (this.subject.observers.length === 0 && this.subject.cancelCallback) {
- this.subject.cancelCallback().catch(function (_) { });
- }
- };
- return SubjectSubscription;
-}());
-
-/** @private */
-var ConsoleLogger = /** @class */ (function () {
- function ConsoleLogger(minimumLogLevel) {
- this.minimumLogLevel = minimumLogLevel;
- this.outputConsole = console;
- }
- ConsoleLogger.prototype.log = function (logLevel, message) {
- if (logLevel >= this.minimumLogLevel) {
- switch (logLevel) {
- case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Critical:
- case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Error:
- this.outputConsole.error("[" + new Date().toISOString() + "] " + _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel] + ": " + message);
- break;
- case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Warning:
- this.outputConsole.warn("[" + new Date().toISOString() + "] " + _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel] + ": " + message);
- break;
- case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Information:
- this.outputConsole.info("[" + new Date().toISOString() + "] " + _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel] + ": " + message);
- break;
- default:
- // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug
- this.outputConsole.log("[" + new Date().toISOString() + "] " + _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel] + ": " + message);
- break;
- }
- }
- };
- return ConsoleLogger;
-}());
-
-/** @private */
-function getUserAgentHeader() {
- var userAgentHeaderName = "X-SignalR-User-Agent";
- if (Platform.isNode) {
- userAgentHeaderName = "User-Agent";
- }
- return [userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion())];
-}
-/** @private */
-function constructUserAgent(version, os, runtime, runtimeVersion) {
- // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])
- var userAgent = "Microsoft SignalR/";
- var majorAndMinor = version.split(".");
- userAgent += majorAndMinor[0] + "." + majorAndMinor[1];
- userAgent += " (" + version + "; ";
- if (os && os !== "") {
- userAgent += os + "; ";
- }
- else {
- userAgent += "Unknown OS; ";
- }
- userAgent += "" + runtime;
- if (runtimeVersion) {
- userAgent += "; " + runtimeVersion;
- }
- else {
- userAgent += "; Unknown Runtime Version";
- }
- userAgent += ")";
- return userAgent;
-}
-function getOsName() {
- if (Platform.isNode) {
- switch (process.platform) {
- case "win32":
- return "Windows NT";
- case "darwin":
- return "macOS";
- case "linux":
- return "Linux";
- default:
- return process.platform;
- }
- }
- else {
- return "";
- }
-}
-function getRuntimeVersion() {
- if (Platform.isNode) {
- return process.versions.node;
- }
- return undefined;
-}
-function getRuntime() {
- if (Platform.isNode) {
- return "NodeJS";
- }
- else {
- return "Browser";
- }
-}
-
-
-/***/ }),
-/* 10 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NullLogger", function() { return NullLogger; });
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-/** A logger that does nothing when log messages are sent to it. */
-var NullLogger = /** @class */ (function () {
- function NullLogger() {
- }
- /** @inheritDoc */
- // tslint:disable-next-line
- NullLogger.prototype.log = function (_logLevel, _message) {
- };
- /** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */
- NullLogger.instance = new NullLogger();
- return NullLogger;
-}());
-
-
-
-/***/ }),
-/* 11 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "XhrHttpClient", function() { return XhrHttpClient; });
-/* harmony import */ var _Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
-/* harmony import */ var _HttpClient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
-/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __extends = (undefined && undefined.__extends) || (function () {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
-})();
-
-
-
-var XhrHttpClient = /** @class */ (function (_super) {
- __extends(XhrHttpClient, _super);
- function XhrHttpClient(logger) {
- var _this = _super.call(this) || this;
- _this.logger = logger;
- return _this;
- }
- /** @inheritDoc */
- XhrHttpClient.prototype.send = function (request) {
- var _this = this;
- // Check that abort was not signaled before calling send
- if (request.abortSignal && request.abortSignal.aborted) {
- return Promise.reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"]());
- }
- if (!request.method) {
- return Promise.reject(new Error("No method defined."));
- }
- if (!request.url) {
- return Promise.reject(new Error("No url defined."));
- }
- return new Promise(function (resolve, reject) {
- var xhr = new XMLHttpRequest();
- xhr.open(request.method, request.url, true);
- xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;
- xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
- // Explicitly setting the Content-Type header for React Native on Android platform.
- xhr.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
- var headers = request.headers;
- if (headers) {
- Object.keys(headers)
- .forEach(function (header) {
- xhr.setRequestHeader(header, headers[header]);
- });
- }
- if (request.responseType) {
- xhr.responseType = request.responseType;
- }
- if (request.abortSignal) {
- request.abortSignal.onabort = function () {
- xhr.abort();
- reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"]());
- };
- }
- if (request.timeout) {
- xhr.timeout = request.timeout;
- }
- xhr.onload = function () {
- if (request.abortSignal) {
- request.abortSignal.onabort = null;
- }
- if (xhr.status >= 200 && xhr.status < 300) {
- resolve(new _HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpResponse"](xhr.status, xhr.statusText, xhr.response || xhr.responseText));
- }
- else {
- reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["HttpError"](xhr.statusText, xhr.status));
- }
- };
- xhr.onerror = function () {
- _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning, "Error from HTTP request. " + xhr.status + ": " + xhr.statusText + ".");
- reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["HttpError"](xhr.statusText, xhr.status));
- };
- xhr.ontimeout = function () {
- _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning, "Timeout from HTTP request.");
- reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["TimeoutError"]());
- };
- xhr.send(request.content || "");
- });
- };
- return XhrHttpClient;
-}(_HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpClient"]));
-
-
-
-/***/ }),
-/* 12 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HubConnectionState", function() { return HubConnectionState; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HubConnection", function() { return HubConnection; });
-/* harmony import */ var _HandshakeProtocol__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
-/* harmony import */ var _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
-/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
-/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-};
-
-
-
-
-
-var DEFAULT_TIMEOUT_IN_MS = 30 * 1000;
-var DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;
-/** Describes the current state of the {@link HubConnection} to the server. */
-var HubConnectionState;
-(function (HubConnectionState) {
- /** The hub connection is disconnected. */
- HubConnectionState["Disconnected"] = "Disconnected";
- /** The hub connection is connecting. */
- HubConnectionState["Connecting"] = "Connecting";
- /** The hub connection is connected. */
- HubConnectionState["Connected"] = "Connected";
- /** The hub connection is disconnecting. */
- HubConnectionState["Disconnecting"] = "Disconnecting";
- /** The hub connection is reconnecting. */
- HubConnectionState["Reconnecting"] = "Reconnecting";
-})(HubConnectionState || (HubConnectionState = {}));
-/** Represents a connection to a SignalR Hub. */
-var HubConnection = /** @class */ (function () {
- function HubConnection(connection, logger, protocol, reconnectPolicy) {
- var _this = this;
- this.nextKeepAlive = 0;
- _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isRequired(connection, "connection");
- _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isRequired(logger, "logger");
- _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isRequired(protocol, "protocol");
- this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;
- this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;
- this.logger = logger;
- this.protocol = protocol;
- this.connection = connection;
- this.reconnectPolicy = reconnectPolicy;
- this.handshakeProtocol = new _HandshakeProtocol__WEBPACK_IMPORTED_MODULE_0__["HandshakeProtocol"]();
- this.connection.onreceive = function (data) { return _this.processIncomingData(data); };
- this.connection.onclose = function (error) { return _this.connectionClosed(error); };
- this.callbacks = {};
- this.methods = {};
- this.closedCallbacks = [];
- this.reconnectingCallbacks = [];
- this.reconnectedCallbacks = [];
- this.invocationId = 0;
- this.receivedHandshakeResponse = false;
- this.connectionState = HubConnectionState.Disconnected;
- this.connectionStarted = false;
- this.cachedPingMessage = this.protocol.writeMessage({ type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Ping });
- }
- /** @internal */
- // Using a public static factory method means we can have a private constructor and an _internal_
- // create method that can be used by HubConnectionBuilder. An "internal" constructor would just
- // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a
- // public parameter-less constructor.
- HubConnection.create = function (connection, logger, protocol, reconnectPolicy) {
- return new HubConnection(connection, logger, protocol, reconnectPolicy);
- };
- Object.defineProperty(HubConnection.prototype, "state", {
- /** Indicates the state of the {@link HubConnection} to the server. */
- get: function () {
- return this.connectionState;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(HubConnection.prototype, "connectionId", {
- /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either
- * in the disconnected state or if the negotiation step was skipped.
- */
- get: function () {
- return this.connection ? (this.connection.connectionId || null) : null;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(HubConnection.prototype, "baseUrl", {
- /** Indicates the url of the {@link HubConnection} to the server. */
- get: function () {
- return this.connection.baseUrl || "";
- },
- /**
- * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or
- * Reconnecting states.
- * @param {string} url The url to connect to.
- */
- set: function (url) {
- if (this.connectionState !== HubConnectionState.Disconnected && this.connectionState !== HubConnectionState.Reconnecting) {
- throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");
- }
- if (!url) {
- throw new Error("The HubConnection url must be a valid url.");
- }
- this.connection.baseUrl = url;
- },
- enumerable: true,
- configurable: true
- });
- /** Starts the connection.
- *
- * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.
- */
- HubConnection.prototype.start = function () {
- this.startPromise = this.startWithStateTransitions();
- return this.startPromise;
- };
- HubConnection.prototype.startWithStateTransitions = function () {
- return __awaiter(this, void 0, void 0, function () {
- var e_1;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (this.connectionState !== HubConnectionState.Disconnected) {
- return [2 /*return*/, Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."))];
- }
- this.connectionState = HubConnectionState.Connecting;
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Starting HubConnection.");
- _a.label = 1;
- case 1:
- _a.trys.push([1, 3, , 4]);
- return [4 /*yield*/, this.startInternal()];
- case 2:
- _a.sent();
- this.connectionState = HubConnectionState.Connected;
- this.connectionStarted = true;
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "HubConnection connected successfully.");
- return [3 /*break*/, 4];
- case 3:
- e_1 = _a.sent();
- this.connectionState = HubConnectionState.Disconnected;
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "HubConnection failed to start successfully because of error '" + e_1 + "'.");
- return [2 /*return*/, Promise.reject(e_1)];
- case 4: return [2 /*return*/];
- }
- });
- });
- };
- HubConnection.prototype.startInternal = function () {
- return __awaiter(this, void 0, void 0, function () {
- var handshakePromise, handshakeRequest, e_2;
- var _this = this;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- this.stopDuringStartError = undefined;
- this.receivedHandshakeResponse = false;
- handshakePromise = new Promise(function (resolve, reject) {
- _this.handshakeResolver = resolve;
- _this.handshakeRejecter = reject;
- });
- return [4 /*yield*/, this.connection.start(this.protocol.transferFormat)];
- case 1:
- _a.sent();
- _a.label = 2;
- case 2:
- _a.trys.push([2, 5, , 7]);
- handshakeRequest = {
- protocol: this.protocol.name,
- version: this.protocol.version,
- };
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Sending handshake request.");
- return [4 /*yield*/, this.sendMessage(this.handshakeProtocol.writeHandshakeRequest(handshakeRequest))];
- case 3:
- _a.sent();
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Using HubProtocol '" + this.protocol.name + "'.");
- // defensively cleanup timeout in case we receive a message from the server before we finish start
- this.cleanupTimeout();
- this.resetTimeoutPeriod();
- this.resetKeepAliveInterval();
- return [4 /*yield*/, handshakePromise];
- case 4:
- _a.sent();
- // It's important to check the stopDuringStartError instead of just relying on the handshakePromise
- // being rejected on close, because this continuation can run after both the handshake completed successfully
- // and the connection was closed.
- if (this.stopDuringStartError) {
- // It's important to throw instead of returning a rejected promise, because we don't want to allow any state
- // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise
- // will cause the calling continuation to get scheduled to run later.
- throw this.stopDuringStartError;
- }
- return [3 /*break*/, 7];
- case 5:
- e_2 = _a.sent();
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Hub handshake failed with error '" + e_2 + "' during start(). Stopping HubConnection.");
- this.cleanupTimeout();
- this.cleanupPingTimer();
- // HttpConnection.stop() should not complete until after the onclose callback is invoked.
- // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.
- return [4 /*yield*/, this.connection.stop(e_2)];
- case 6:
- // HttpConnection.stop() should not complete until after the onclose callback is invoked.
- // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.
- _a.sent();
- throw e_2;
- case 7: return [2 /*return*/];
- }
- });
- });
- };
- /** Stops the connection.
- *
- * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.
- */
- HubConnection.prototype.stop = function () {
- return __awaiter(this, void 0, void 0, function () {
- var startPromise, e_3;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- startPromise = this.startPromise;
- this.stopPromise = this.stopInternal();
- return [4 /*yield*/, this.stopPromise];
- case 1:
- _a.sent();
- _a.label = 2;
- case 2:
- _a.trys.push([2, 4, , 5]);
- // Awaiting undefined continues immediately
- return [4 /*yield*/, startPromise];
- case 3:
- // Awaiting undefined continues immediately
- _a.sent();
- return [3 /*break*/, 5];
- case 4:
- e_3 = _a.sent();
- return [3 /*break*/, 5];
- case 5: return [2 /*return*/];
- }
- });
- });
- };
- HubConnection.prototype.stopInternal = function (error) {
- if (this.connectionState === HubConnectionState.Disconnected) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Call to HubConnection.stop(" + error + ") ignored because it is already in the disconnected state.");
- return Promise.resolve();
- }
- if (this.connectionState === HubConnectionState.Disconnecting) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Call to HttpConnection.stop(" + error + ") ignored because the connection is already in the disconnecting state.");
- return this.stopPromise;
- }
- this.connectionState = HubConnectionState.Disconnecting;
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Stopping HubConnection.");
- if (this.reconnectDelayHandle) {
- // We're in a reconnect delay which means the underlying connection is currently already stopped.
- // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and
- // fire the onclose callbacks.
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Connection stopped during reconnect delay. Done reconnecting.");
- clearTimeout(this.reconnectDelayHandle);
- this.reconnectDelayHandle = undefined;
- this.completeClose();
- return Promise.resolve();
- }
- this.cleanupTimeout();
- this.cleanupPingTimer();
- this.stopDuringStartError = error || new Error("The connection was stopped before the hub handshake could complete.");
- // HttpConnection.stop() should not complete until after either HttpConnection.start() fails
- // or the onclose callback is invoked. The onclose callback will transition the HubConnection
- // to the disconnected state if need be before HttpConnection.stop() completes.
- return this.connection.stop(error);
- };
- /** Invokes a streaming hub method on the server using the specified name and arguments.
- *
- * @typeparam T The type of the items returned by the server.
- * @param {string} methodName The name of the server method to invoke.
- * @param {any[]} args The arguments used to invoke the server method.
- * @returns {IStreamResult} An object that yields results from the server as they are received.
- */
- HubConnection.prototype.stream = function (methodName) {
- var _this = this;
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];
- var invocationDescriptor = this.createStreamInvocation(methodName, args, streamIds);
- var promiseQueue;
- var subject = new _Subject__WEBPACK_IMPORTED_MODULE_3__["Subject"]();
- subject.cancelCallback = function () {
- var cancelInvocation = _this.createCancelInvocation(invocationDescriptor.invocationId);
- delete _this.callbacks[invocationDescriptor.invocationId];
- return promiseQueue.then(function () {
- return _this.sendWithProtocol(cancelInvocation);
- });
- };
- this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {
- if (error) {
- subject.error(error);
- return;
- }
- else if (invocationEvent) {
- // invocationEvent will not be null when an error is not passed to the callback
- if (invocationEvent.type === _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion) {
- if (invocationEvent.error) {
- subject.error(new Error(invocationEvent.error));
- }
- else {
- subject.complete();
- }
- }
- else {
- subject.next((invocationEvent.item));
- }
- }
- };
- promiseQueue = this.sendWithProtocol(invocationDescriptor)
- .catch(function (e) {
- subject.error(e);
- delete _this.callbacks[invocationDescriptor.invocationId];
- });
- this.launchStreams(streams, promiseQueue);
- return subject;
- };
- HubConnection.prototype.sendMessage = function (message) {
- this.resetKeepAliveInterval();
- return this.connection.send(message);
- };
- /**
- * Sends a js object to the server.
- * @param message The js object to serialize and send.
- */
- HubConnection.prototype.sendWithProtocol = function (message) {
- return this.sendMessage(this.protocol.writeMessage(message));
- };
- /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.
- *
- * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still
- * be processing the invocation.
- *
- * @param {string} methodName The name of the server method to invoke.
- * @param {any[]} args The arguments used to invoke the server method.
- * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.
- */
- HubConnection.prototype.send = function (methodName) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];
- var sendPromise = this.sendWithProtocol(this.createInvocation(methodName, args, true, streamIds));
- this.launchStreams(streams, sendPromise);
- return sendPromise;
- };
- /** Invokes a hub method on the server using the specified name and arguments.
- *
- * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise
- * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of
- * resolving the Promise.
- *
- * @typeparam T The expected return type.
- * @param {string} methodName The name of the server method to invoke.
- * @param {any[]} args The arguments used to invoke the server method.
- * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.
- */
- HubConnection.prototype.invoke = function (methodName) {
- var _this = this;
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];
- var invocationDescriptor = this.createInvocation(methodName, args, false, streamIds);
- var p = new Promise(function (resolve, reject) {
- // invocationId will always have a value for a non-blocking invocation
- _this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {
- if (error) {
- reject(error);
- return;
- }
- else if (invocationEvent) {
- // invocationEvent will not be null when an error is not passed to the callback
- if (invocationEvent.type === _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion) {
- if (invocationEvent.error) {
- reject(new Error(invocationEvent.error));
- }
- else {
- resolve(invocationEvent.result);
- }
- }
- else {
- reject(new Error("Unexpected message type: " + invocationEvent.type));
- }
- }
- };
- var promiseQueue = _this.sendWithProtocol(invocationDescriptor)
- .catch(function (e) {
- reject(e);
- // invocationId will always have a value for a non-blocking invocation
- delete _this.callbacks[invocationDescriptor.invocationId];
- });
- _this.launchStreams(streams, promiseQueue);
- });
- return p;
- };
- /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.
- *
- * @param {string} methodName The name of the hub method to define.
- * @param {Function} newMethod The handler that will be raised when the hub method is invoked.
- */
- HubConnection.prototype.on = function (methodName, newMethod) {
- if (!methodName || !newMethod) {
- return;
- }
- methodName = methodName.toLowerCase();
- if (!this.methods[methodName]) {
- this.methods[methodName] = [];
- }
- // Preventing adding the same handler multiple times.
- if (this.methods[methodName].indexOf(newMethod) !== -1) {
- return;
- }
- this.methods[methodName].push(newMethod);
- };
- HubConnection.prototype.off = function (methodName, method) {
- if (!methodName) {
- return;
- }
- methodName = methodName.toLowerCase();
- var handlers = this.methods[methodName];
- if (!handlers) {
- return;
- }
- if (method) {
- var removeIdx = handlers.indexOf(method);
- if (removeIdx !== -1) {
- handlers.splice(removeIdx, 1);
- if (handlers.length === 0) {
- delete this.methods[methodName];
- }
- }
- }
- else {
- delete this.methods[methodName];
- }
- };
- /** Registers a handler that will be invoked when the connection is closed.
- *
- * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).
- */
- HubConnection.prototype.onclose = function (callback) {
- if (callback) {
- this.closedCallbacks.push(callback);
- }
- };
- /** Registers a handler that will be invoked when the connection starts reconnecting.
- *
- * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).
- */
- HubConnection.prototype.onreconnecting = function (callback) {
- if (callback) {
- this.reconnectingCallbacks.push(callback);
- }
- };
- /** Registers a handler that will be invoked when the connection successfully reconnects.
- *
- * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.
- */
- HubConnection.prototype.onreconnected = function (callback) {
- if (callback) {
- this.reconnectedCallbacks.push(callback);
- }
- };
- HubConnection.prototype.processIncomingData = function (data) {
- this.cleanupTimeout();
- if (!this.receivedHandshakeResponse) {
- data = this.processHandshakeResponse(data);
- this.receivedHandshakeResponse = true;
- }
- // Data may have all been read when processing handshake response
- if (data) {
- // Parse the messages
- var messages = this.protocol.parseMessages(data, this.logger);
- for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {
- var message = messages_1[_i];
- switch (message.type) {
- case _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Invocation:
- this.invokeClientMethod(message);
- break;
- case _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].StreamItem:
- case _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion:
- var callback = this.callbacks[message.invocationId];
- if (callback) {
- if (message.type === _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion) {
- delete this.callbacks[message.invocationId];
- }
- callback(message);
- }
- break;
- case _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Ping:
- // Don't care about pings
- break;
- case _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Close:
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Close message received from server.");
- var error = message.error ? new Error("Server returned an error on close: " + message.error) : undefined;
- if (message.allowReconnect === true) {
- // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,
- // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.
- // tslint:disable-next-line:no-floating-promises
- this.connection.stop(error);
- }
- else {
- // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.
- this.stopPromise = this.stopInternal(error);
- }
- break;
- default:
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning, "Invalid message type: " + message.type + ".");
- break;
- }
- }
- }
- this.resetTimeoutPeriod();
- };
- HubConnection.prototype.processHandshakeResponse = function (data) {
- var _a;
- var responseMessage;
- var remainingData;
- try {
- _a = this.handshakeProtocol.parseHandshakeResponse(data), remainingData = _a[0], responseMessage = _a[1];
- }
- catch (e) {
- var message = "Error parsing handshake response: " + e;
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, message);
- var error = new Error(message);
- this.handshakeRejecter(error);
- throw error;
- }
- if (responseMessage.error) {
- var message = "Server returned handshake error: " + responseMessage.error;
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, message);
- var error = new Error(message);
- this.handshakeRejecter(error);
- throw error;
- }
- else {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Server handshake complete.");
- }
- this.handshakeResolver();
- return remainingData;
- };
- HubConnection.prototype.resetKeepAliveInterval = function () {
- if (this.connection.features.inherentKeepAlive) {
- return;
- }
- // Set the time we want the next keep alive to be sent
- // Timer will be setup on next message receive
- this.nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;
- this.cleanupPingTimer();
- };
- HubConnection.prototype.resetTimeoutPeriod = function () {
- var _this = this;
- if (!this.connection.features || !this.connection.features.inherentKeepAlive) {
- // Set the timeout timer
- this.timeoutHandle = setTimeout(function () { return _this.serverTimeout(); }, this.serverTimeoutInMilliseconds);
- // Set keepAlive timer if there isn't one
- if (this.pingServerHandle === undefined) {
- var nextPing = this.nextKeepAlive - new Date().getTime();
- if (nextPing < 0) {
- nextPing = 0;
- }
- // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute
- this.pingServerHandle = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
- var _a;
- return __generator(this, function (_b) {
- switch (_b.label) {
- case 0:
- if (!(this.connectionState === HubConnectionState.Connected)) return [3 /*break*/, 4];
- _b.label = 1;
- case 1:
- _b.trys.push([1, 3, , 4]);
- return [4 /*yield*/, this.sendMessage(this.cachedPingMessage)];
- case 2:
- _b.sent();
- return [3 /*break*/, 4];
- case 3:
- _a = _b.sent();
- // We don't care about the error. It should be seen elsewhere in the client.
- // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering
- this.cleanupPingTimer();
- return [3 /*break*/, 4];
- case 4: return [2 /*return*/];
- }
- });
- }); }, nextPing);
- }
- }
- };
- HubConnection.prototype.serverTimeout = function () {
- // The server hasn't talked to us in a while. It doesn't like us anymore ... :(
- // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.
- // tslint:disable-next-line:no-floating-promises
- this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."));
- };
- HubConnection.prototype.invokeClientMethod = function (invocationMessage) {
- var _this = this;
- var methods = this.methods[invocationMessage.target.toLowerCase()];
- if (methods) {
- try {
- methods.forEach(function (m) { return m.apply(_this, invocationMessage.arguments); });
- }
- catch (e) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "A callback for the method " + invocationMessage.target.toLowerCase() + " threw error '" + e + "'.");
- }
- if (invocationMessage.invocationId) {
- // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.
- var message = "Server requested a response, which is not supported in this version of the client.";
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, message);
- // We don't want to wait on the stop itself.
- this.stopPromise = this.stopInternal(new Error(message));
- }
- }
- else {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning, "No client method with the name '" + invocationMessage.target + "' found.");
- }
- };
- HubConnection.prototype.connectionClosed = function (error) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "HubConnection.connectionClosed(" + error + ") called while in state " + this.connectionState + ".");
- // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.
- this.stopDuringStartError = this.stopDuringStartError || error || new Error("The underlying connection was closed before the hub handshake could complete.");
- // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.
- // If it has already completed, this should just noop.
- if (this.handshakeResolver) {
- this.handshakeResolver();
- }
- this.cancelCallbacksWithError(error || new Error("Invocation canceled due to the underlying connection being closed."));
- this.cleanupTimeout();
- this.cleanupPingTimer();
- if (this.connectionState === HubConnectionState.Disconnecting) {
- this.completeClose(error);
- }
- else if (this.connectionState === HubConnectionState.Connected && this.reconnectPolicy) {
- // tslint:disable-next-line:no-floating-promises
- this.reconnect(error);
- }
- else if (this.connectionState === HubConnectionState.Connected) {
- this.completeClose(error);
- }
- // If none of the above if conditions were true were called the HubConnection must be in either:
- // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.
- // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt
- // and potentially continue the reconnect() loop.
- // 3. The Disconnected state in which case we're already done.
- };
- HubConnection.prototype.completeClose = function (error) {
- var _this = this;
- if (this.connectionStarted) {
- this.connectionState = HubConnectionState.Disconnected;
- this.connectionStarted = false;
- try {
- this.closedCallbacks.forEach(function (c) { return c.apply(_this, [error]); });
- }
- catch (e) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "An onclose callback called with error '" + error + "' threw error '" + e + "'.");
- }
- }
- };
- HubConnection.prototype.reconnect = function (error) {
- return __awaiter(this, void 0, void 0, function () {
- var reconnectStartTime, previousReconnectAttempts, retryError, nextRetryDelay, e_4;
- var _this = this;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- reconnectStartTime = Date.now();
- previousReconnectAttempts = 0;
- retryError = error !== undefined ? error : new Error("Attempting to reconnect due to a unknown error.");
- nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, 0, retryError);
- if (nextRetryDelay === null) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.");
- this.completeClose(error);
- return [2 /*return*/];
- }
- this.connectionState = HubConnectionState.Reconnecting;
- if (error) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Connection reconnecting because of error '" + error + "'.");
- }
- else {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Connection reconnecting.");
- }
- if (this.onreconnecting) {
- try {
- this.reconnectingCallbacks.forEach(function (c) { return c.apply(_this, [error]); });
- }
- catch (e) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "An onreconnecting callback called with error '" + error + "' threw error '" + e + "'.");
- }
- // Exit early if an onreconnecting callback called connection.stop().
- if (this.connectionState !== HubConnectionState.Reconnecting) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Connection left the reconnecting state in onreconnecting callback. Done reconnecting.");
- return [2 /*return*/];
- }
- }
- _a.label = 1;
- case 1:
- if (!(nextRetryDelay !== null)) return [3 /*break*/, 7];
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Reconnect attempt number " + previousReconnectAttempts + " will start in " + nextRetryDelay + " ms.");
- return [4 /*yield*/, new Promise(function (resolve) {
- _this.reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);
- })];
- case 2:
- _a.sent();
- this.reconnectDelayHandle = undefined;
- if (this.connectionState !== HubConnectionState.Reconnecting) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Connection left the reconnecting state during reconnect delay. Done reconnecting.");
- return [2 /*return*/];
- }
- _a.label = 3;
- case 3:
- _a.trys.push([3, 5, , 6]);
- return [4 /*yield*/, this.startInternal()];
- case 4:
- _a.sent();
- this.connectionState = HubConnectionState.Connected;
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "HubConnection reconnected successfully.");
- if (this.onreconnected) {
- try {
- this.reconnectedCallbacks.forEach(function (c) { return c.apply(_this, [_this.connection.connectionId]); });
- }
- catch (e) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "An onreconnected callback called with connectionId '" + this.connection.connectionId + "; threw error '" + e + "'.");
- }
- }
- return [2 /*return*/];
- case 5:
- e_4 = _a.sent();
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Reconnect attempt failed because of error '" + e_4 + "'.");
- if (this.connectionState !== HubConnectionState.Reconnecting) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Connection moved to the '" + this.connectionState + "' from the reconnecting state during reconnect attempt. Done reconnecting.");
- // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.
- if (this.connectionState === HubConnectionState.Disconnecting) {
- this.completeClose();
- }
- return [2 /*return*/];
- }
- retryError = e_4 instanceof Error ? e_4 : new Error(e_4.toString());
- nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);
- return [3 /*break*/, 6];
- case 6: return [3 /*break*/, 1];
- case 7:
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Reconnect retries have been exhausted after " + (Date.now() - reconnectStartTime) + " ms and " + previousReconnectAttempts + " failed attempts. Connection disconnecting.");
- this.completeClose();
- return [2 /*return*/];
- }
- });
- });
- };
- HubConnection.prototype.getNextRetryDelay = function (previousRetryCount, elapsedMilliseconds, retryReason) {
- try {
- return this.reconnectPolicy.nextRetryDelayInMilliseconds({
- elapsedMilliseconds: elapsedMilliseconds,
- previousRetryCount: previousRetryCount,
- retryReason: retryReason,
- });
- }
- catch (e) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "IRetryPolicy.nextRetryDelayInMilliseconds(" + previousRetryCount + ", " + elapsedMilliseconds + ") threw error '" + e + "'.");
- return null;
- }
- };
- HubConnection.prototype.cancelCallbacksWithError = function (error) {
- var callbacks = this.callbacks;
- this.callbacks = {};
- Object.keys(callbacks)
- .forEach(function (key) {
- var callback = callbacks[key];
- callback(null, error);
- });
- };
- HubConnection.prototype.cleanupPingTimer = function () {
- if (this.pingServerHandle) {
- clearTimeout(this.pingServerHandle);
- this.pingServerHandle = undefined;
- }
- };
- HubConnection.prototype.cleanupTimeout = function () {
- if (this.timeoutHandle) {
- clearTimeout(this.timeoutHandle);
- }
- };
- HubConnection.prototype.createInvocation = function (methodName, args, nonblocking, streamIds) {
- if (nonblocking) {
- if (streamIds.length !== 0) {
- return {
- arguments: args,
- streamIds: streamIds,
- target: methodName,
- type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Invocation,
- };
- }
- else {
- return {
- arguments: args,
- target: methodName,
- type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Invocation,
- };
- }
- }
- else {
- var invocationId = this.invocationId;
- this.invocationId++;
- if (streamIds.length !== 0) {
- return {
- arguments: args,
- invocationId: invocationId.toString(),
- streamIds: streamIds,
- target: methodName,
- type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Invocation,
- };
- }
- else {
- return {
- arguments: args,
- invocationId: invocationId.toString(),
- target: methodName,
- type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Invocation,
- };
- }
- }
- };
- HubConnection.prototype.launchStreams = function (streams, promiseQueue) {
- var _this = this;
- if (streams.length === 0) {
- return;
- }
- // Synchronize stream data so they arrive in-order on the server
- if (!promiseQueue) {
- promiseQueue = Promise.resolve();
- }
- var _loop_1 = function (streamId) {
- streams[streamId].subscribe({
- complete: function () {
- promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createCompletionMessage(streamId)); });
- },
- error: function (err) {
- var message;
- if (err instanceof Error) {
- message = err.message;
- }
- else if (err && err.toString) {
- message = err.toString();
- }
- else {
- message = "Unknown error";
- }
- promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createCompletionMessage(streamId, message)); });
- },
- next: function (item) {
- promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createStreamItemMessage(streamId, item)); });
- },
- });
- };
- // We want to iterate over the keys, since the keys are the stream ids
- // tslint:disable-next-line:forin
- for (var streamId in streams) {
- _loop_1(streamId);
- }
- };
- HubConnection.prototype.replaceStreamingParams = function (args) {
- var streams = [];
- var streamIds = [];
- for (var i = 0; i < args.length; i++) {
- var argument = args[i];
- if (this.isObservable(argument)) {
- var streamId = this.invocationId;
- this.invocationId++;
- // Store the stream for later use
- streams[streamId] = argument;
- streamIds.push(streamId.toString());
- // remove stream from args
- args.splice(i, 1);
- }
- }
- return [streams, streamIds];
- };
- HubConnection.prototype.isObservable = function (arg) {
- // This allows other stream implementations to just work (like rxjs)
- return arg && arg.subscribe && typeof arg.subscribe === "function";
- };
- HubConnection.prototype.createStreamInvocation = function (methodName, args, streamIds) {
- var invocationId = this.invocationId;
- this.invocationId++;
- if (streamIds.length !== 0) {
- return {
- arguments: args,
- invocationId: invocationId.toString(),
- streamIds: streamIds,
- target: methodName,
- type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].StreamInvocation,
- };
- }
- else {
- return {
- arguments: args,
- invocationId: invocationId.toString(),
- target: methodName,
- type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].StreamInvocation,
- };
- }
- };
- HubConnection.prototype.createCancelInvocation = function (id) {
- return {
- invocationId: id,
- type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].CancelInvocation,
- };
- };
- HubConnection.prototype.createStreamItemMessage = function (id, item) {
- return {
- invocationId: id,
- item: item,
- type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].StreamItem,
- };
- };
- HubConnection.prototype.createCompletionMessage = function (id, error, result) {
- if (error) {
- return {
- error: error,
- invocationId: id,
- type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion,
- };
- }
- return {
- invocationId: id,
- result: result,
- type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion,
- };
- };
- return HubConnection;
-}());
-
-
-
-/***/ }),
-/* 13 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HandshakeProtocol", function() { return HandshakeProtocol; });
-/* harmony import */ var _TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-
-/** @private */
-var HandshakeProtocol = /** @class */ (function () {
- function HandshakeProtocol() {
- }
- // Handshake request is always JSON
- HandshakeProtocol.prototype.writeHandshakeRequest = function (handshakeRequest) {
- return _TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__["TextMessageFormat"].write(JSON.stringify(handshakeRequest));
- };
- HandshakeProtocol.prototype.parseHandshakeResponse = function (data) {
- var responseMessage;
- var messageData;
- var remainingData;
- if (Object(_Utils__WEBPACK_IMPORTED_MODULE_1__["isArrayBuffer"])(data) || (typeof Buffer !== "undefined" && data instanceof Buffer)) {
- // Format is binary but still need to read JSON text from handshake response
- var binaryData = new Uint8Array(data);
- var separatorIndex = binaryData.indexOf(_TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__["TextMessageFormat"].RecordSeparatorCode);
- if (separatorIndex === -1) {
- throw new Error("Message is incomplete.");
- }
- // content before separator is handshake response
- // optional content after is additional messages
- var responseLength = separatorIndex + 1;
- messageData = String.fromCharCode.apply(null, binaryData.slice(0, responseLength));
- remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;
- }
- else {
- var textData = data;
- var separatorIndex = textData.indexOf(_TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__["TextMessageFormat"].RecordSeparator);
- if (separatorIndex === -1) {
- throw new Error("Message is incomplete.");
- }
- // content before separator is handshake response
- // optional content after is additional messages
- var responseLength = separatorIndex + 1;
- messageData = textData.substring(0, responseLength);
- remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;
- }
- // At this point we should have just the single handshake message
- var messages = _TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__["TextMessageFormat"].parse(messageData);
- var response = JSON.parse(messages[0]);
- if (response.type) {
- throw new Error("Expected a handshake response from the server.");
- }
- responseMessage = response;
- // multiple messages could have arrived with handshake
- // return additional data to be parsed as usual, or null if all parsed
- return [remainingData, responseMessage];
- };
- return HandshakeProtocol;
-}());
-
-
-
-/***/ }),
-/* 14 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextMessageFormat", function() { return TextMessageFormat; });
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-// Not exported from index
-/** @private */
-var TextMessageFormat = /** @class */ (function () {
- function TextMessageFormat() {
- }
- TextMessageFormat.write = function (output) {
- return "" + output + TextMessageFormat.RecordSeparator;
- };
- TextMessageFormat.parse = function (input) {
- if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {
- throw new Error("Message is incomplete.");
- }
- var messages = input.split(TextMessageFormat.RecordSeparator);
- messages.pop();
- return messages;
- };
- TextMessageFormat.RecordSeparatorCode = 0x1e;
- TextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);
- return TextMessageFormat;
-}());
-
-
-
-/***/ }),
-/* 15 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MessageType", function() { return MessageType; });
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-/** Defines the type of a Hub Message. */
-var MessageType;
-(function (MessageType) {
- /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */
- MessageType[MessageType["Invocation"] = 1] = "Invocation";
- /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */
- MessageType[MessageType["StreamItem"] = 2] = "StreamItem";
- /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */
- MessageType[MessageType["Completion"] = 3] = "Completion";
- /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */
- MessageType[MessageType["StreamInvocation"] = 4] = "StreamInvocation";
- /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */
- MessageType[MessageType["CancelInvocation"] = 5] = "CancelInvocation";
- /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */
- MessageType[MessageType["Ping"] = 6] = "Ping";
- /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */
- MessageType[MessageType["Close"] = 7] = "Close";
-})(MessageType || (MessageType = {}));
-
-
-/***/ }),
-/* 16 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return Subject; });
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-/** Stream implementation to stream items to the server. */
-var Subject = /** @class */ (function () {
- function Subject() {
- this.observers = [];
- }
- Subject.prototype.next = function (item) {
- for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {
- var observer = _a[_i];
- observer.next(item);
- }
- };
- Subject.prototype.error = function (err) {
- for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {
- var observer = _a[_i];
- if (observer.error) {
- observer.error(err);
- }
- }
- };
- Subject.prototype.complete = function () {
- for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {
- var observer = _a[_i];
- if (observer.complete) {
- observer.complete();
- }
- }
- };
- Subject.prototype.subscribe = function (observer) {
- this.observers.push(observer);
- return new _Utils__WEBPACK_IMPORTED_MODULE_0__["SubjectSubscription"](this, observer);
- };
- return Subject;
-}());
-
-
-
-/***/ }),
-/* 17 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HubConnectionBuilder", function() { return HubConnectionBuilder; });
-/* harmony import */ var _DefaultReconnectPolicy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
-/* harmony import */ var _HttpConnection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);
-/* harmony import */ var _HubConnection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
-/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8);
-/* harmony import */ var _JsonHubProtocol__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25);
-/* harmony import */ var _Loggers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(10);
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(9);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
-};
-
-
-
-
-
-
-
-// tslint:disable:object-literal-sort-keys
-var LogLevelNameMapping = {
- trace: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Trace,
- debug: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Debug,
- info: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Information,
- information: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Information,
- warn: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Warning,
- warning: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Warning,
- error: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Error,
- critical: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Critical,
- none: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].None,
-};
-function parseLogLevel(name) {
- // Case-insensitive matching via lower-casing
- // Yes, I know case-folding is a complicated problem in Unicode, but we only support
- // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.
- var mapping = LogLevelNameMapping[name.toLowerCase()];
- if (typeof mapping !== "undefined") {
- return mapping;
- }
- else {
- throw new Error("Unknown log level: " + name);
- }
-}
-/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */
-var HubConnectionBuilder = /** @class */ (function () {
- function HubConnectionBuilder() {
- }
- HubConnectionBuilder.prototype.configureLogging = function (logging) {
- _Utils__WEBPACK_IMPORTED_MODULE_6__["Arg"].isRequired(logging, "logging");
- if (isLogger(logging)) {
- this.logger = logging;
- }
- else if (typeof logging === "string") {
- var logLevel = parseLogLevel(logging);
- this.logger = new _Utils__WEBPACK_IMPORTED_MODULE_6__["ConsoleLogger"](logLevel);
- }
- else {
- this.logger = new _Utils__WEBPACK_IMPORTED_MODULE_6__["ConsoleLogger"](logging);
- }
- return this;
- };
- HubConnectionBuilder.prototype.withUrl = function (url, transportTypeOrOptions) {
- _Utils__WEBPACK_IMPORTED_MODULE_6__["Arg"].isRequired(url, "url");
- _Utils__WEBPACK_IMPORTED_MODULE_6__["Arg"].isNotEmpty(url, "url");
- this.url = url;
- // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed
- // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.
- if (typeof transportTypeOrOptions === "object") {
- this.httpConnectionOptions = __assign({}, this.httpConnectionOptions, transportTypeOrOptions);
- }
- else {
- this.httpConnectionOptions = __assign({}, this.httpConnectionOptions, { transport: transportTypeOrOptions });
- }
- return this;
- };
- /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.
- *
- * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.
- */
- HubConnectionBuilder.prototype.withHubProtocol = function (protocol) {
- _Utils__WEBPACK_IMPORTED_MODULE_6__["Arg"].isRequired(protocol, "protocol");
- this.protocol = protocol;
- return this;
- };
- HubConnectionBuilder.prototype.withAutomaticReconnect = function (retryDelaysOrReconnectPolicy) {
- if (this.reconnectPolicy) {
- throw new Error("A reconnectPolicy has already been set.");
- }
- if (!retryDelaysOrReconnectPolicy) {
- this.reconnectPolicy = new _DefaultReconnectPolicy__WEBPACK_IMPORTED_MODULE_0__["DefaultReconnectPolicy"]();
- }
- else if (Array.isArray(retryDelaysOrReconnectPolicy)) {
- this.reconnectPolicy = new _DefaultReconnectPolicy__WEBPACK_IMPORTED_MODULE_0__["DefaultReconnectPolicy"](retryDelaysOrReconnectPolicy);
- }
- else {
- this.reconnectPolicy = retryDelaysOrReconnectPolicy;
- }
- return this;
- };
- /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.
- *
- * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.
- */
- HubConnectionBuilder.prototype.build = function () {
- // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one
- // provided to configureLogger
- var httpConnectionOptions = this.httpConnectionOptions || {};
- // If it's 'null', the user **explicitly** asked for null, don't mess with it.
- if (httpConnectionOptions.logger === undefined) {
- // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.
- httpConnectionOptions.logger = this.logger;
- }
- // Now create the connection
- if (!this.url) {
- throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");
- }
- var connection = new _HttpConnection__WEBPACK_IMPORTED_MODULE_1__["HttpConnection"](this.url, httpConnectionOptions);
- return _HubConnection__WEBPACK_IMPORTED_MODULE_2__["HubConnection"].create(connection, this.logger || _Loggers__WEBPACK_IMPORTED_MODULE_5__["NullLogger"].instance, this.protocol || new _JsonHubProtocol__WEBPACK_IMPORTED_MODULE_4__["JsonHubProtocol"](), this.reconnectPolicy);
- };
- return HubConnectionBuilder;
-}());
-
-function isLogger(logger) {
- return logger.log !== undefined;
-}
-
-
-/***/ }),
-/* 18 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultReconnectPolicy", function() { return DefaultReconnectPolicy; });
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-// 0, 2, 10, 30 second delays before reconnect attempts.
-var DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];
-/** @private */
-var DefaultReconnectPolicy = /** @class */ (function () {
- function DefaultReconnectPolicy(retryDelays) {
- this.retryDelays = retryDelays !== undefined ? retryDelays.concat([null]) : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;
- }
- DefaultReconnectPolicy.prototype.nextRetryDelayInMilliseconds = function (retryContext) {
- return this.retryDelays[retryContext.previousRetryCount];
- };
- return DefaultReconnectPolicy;
-}());
-
-
-
-/***/ }),
-/* 19 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpConnection", function() { return HttpConnection; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TransportSendQueue", function() { return TransportSendQueue; });
-/* harmony import */ var _DefaultHttpClient__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
-/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
-/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
-/* harmony import */ var _LongPollingTransport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
-/* harmony import */ var _ServerSentEventsTransport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23);
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9);
-/* harmony import */ var _WebSocketTransport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(24);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
-};
-var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-};
-
-
-
-
-
-
-
-var MAX_REDIRECTS = 100;
-/** @private */
-var HttpConnection = /** @class */ (function () {
- function HttpConnection(url, options) {
- if (options === void 0) { options = {}; }
- this.stopPromiseResolver = function () { };
- this.features = {};
- this.negotiateVersion = 1;
- _Utils__WEBPACK_IMPORTED_MODULE_5__["Arg"].isRequired(url, "url");
- this.logger = Object(_Utils__WEBPACK_IMPORTED_MODULE_5__["createLogger"])(options.logger);
- this.baseUrl = this.resolveUrl(url);
- options = options || {};
- options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;
- if (typeof options.withCredentials === "boolean" || options.withCredentials === undefined) {
- options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;
- }
- else {
- throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");
- }
- var webSocketModule = null;
- var eventSourceModule = null;
- if (_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isNode && "function" !== "undefined") {
- // In order to ignore the dynamic require in webpack builds we need to do this magic
- // @ts-ignore: TS doesn't know about these names
- var requireFunc = true ? require : undefined;
- webSocketModule = requireFunc("ws");
- eventSourceModule = requireFunc("eventsource");
- }
- if (!_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isNode && typeof WebSocket !== "undefined" && !options.WebSocket) {
- options.WebSocket = WebSocket;
- }
- else if (_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isNode && !options.WebSocket) {
- if (webSocketModule) {
- options.WebSocket = webSocketModule;
- }
- }
- if (!_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isNode && typeof EventSource !== "undefined" && !options.EventSource) {
- options.EventSource = EventSource;
- }
- else if (_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isNode && !options.EventSource) {
- if (typeof eventSourceModule !== "undefined") {
- options.EventSource = eventSourceModule;
- }
- }
- this.httpClient = options.httpClient || new _DefaultHttpClient__WEBPACK_IMPORTED_MODULE_0__["DefaultHttpClient"](this.logger);
- this.connectionState = "Disconnected" /* Disconnected */;
- this.connectionStarted = false;
- this.options = options;
- this.onreceive = null;
- this.onclose = null;
- }
- HttpConnection.prototype.start = function (transferFormat) {
- return __awaiter(this, void 0, void 0, function () {
- var message, message;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- transferFormat = transferFormat || _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"].Binary;
- _Utils__WEBPACK_IMPORTED_MODULE_5__["Arg"].isIn(transferFormat, _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"], "transferFormat");
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Starting connection with transfer format '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"][transferFormat] + "'.");
- if (this.connectionState !== "Disconnected" /* Disconnected */) {
- return [2 /*return*/, Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."))];
- }
- this.connectionState = "Connecting" /* Connecting */;
- this.startInternalPromise = this.startInternal(transferFormat);
- return [4 /*yield*/, this.startInternalPromise];
- case 1:
- _a.sent();
- if (!(this.connectionState === "Disconnecting" /* Disconnecting */)) return [3 /*break*/, 3];
- message = "Failed to start the HttpConnection before stop() was called.";
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, message);
- // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.
- return [4 /*yield*/, this.stopPromise];
- case 2:
- // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.
- _a.sent();
- return [2 /*return*/, Promise.reject(new Error(message))];
- case 3:
- if (this.connectionState !== "Connected" /* Connected */) {
- message = "HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, message);
- return [2 /*return*/, Promise.reject(new Error(message))];
- }
- _a.label = 4;
- case 4:
- this.connectionStarted = true;
- return [2 /*return*/];
- }
- });
- });
- };
- HttpConnection.prototype.send = function (data) {
- if (this.connectionState !== "Connected" /* Connected */) {
- return Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State."));
- }
- if (!this.sendQueue) {
- this.sendQueue = new TransportSendQueue(this.transport);
- }
- // Transport will not be null if state is connected
- return this.sendQueue.send(data);
- };
- HttpConnection.prototype.stop = function (error) {
- return __awaiter(this, void 0, void 0, function () {
- var _this = this;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (this.connectionState === "Disconnected" /* Disconnected */) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Call to HttpConnection.stop(" + error + ") ignored because the connection is already in the disconnected state.");
- return [2 /*return*/, Promise.resolve()];
- }
- if (this.connectionState === "Disconnecting" /* Disconnecting */) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Call to HttpConnection.stop(" + error + ") ignored because the connection is already in the disconnecting state.");
- return [2 /*return*/, this.stopPromise];
- }
- this.connectionState = "Disconnecting" /* Disconnecting */;
- this.stopPromise = new Promise(function (resolve) {
- // Don't complete stop() until stopConnection() completes.
- _this.stopPromiseResolver = resolve;
- });
- // stopInternal should never throw so just observe it.
- return [4 /*yield*/, this.stopInternal(error)];
- case 1:
- // stopInternal should never throw so just observe it.
- _a.sent();
- return [4 /*yield*/, this.stopPromise];
- case 2:
- _a.sent();
- return [2 /*return*/];
- }
- });
- });
- };
- HttpConnection.prototype.stopInternal = function (error) {
- return __awaiter(this, void 0, void 0, function () {
- var e_1, e_2;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- // Set error as soon as possible otherwise there is a race between
- // the transport closing and providing an error and the error from a close message
- // We would prefer the close message error.
- this.stopError = error;
- _a.label = 1;
- case 1:
- _a.trys.push([1, 3, , 4]);
- return [4 /*yield*/, this.startInternalPromise];
- case 2:
- _a.sent();
- return [3 /*break*/, 4];
- case 3:
- e_1 = _a.sent();
- return [3 /*break*/, 4];
- case 4:
- if (!this.transport) return [3 /*break*/, 9];
- _a.label = 5;
- case 5:
- _a.trys.push([5, 7, , 8]);
- return [4 /*yield*/, this.transport.stop()];
- case 6:
- _a.sent();
- return [3 /*break*/, 8];
- case 7:
- e_2 = _a.sent();
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "HttpConnection.transport.stop() threw error '" + e_2 + "'.");
- this.stopConnection();
- return [3 /*break*/, 8];
- case 8:
- this.transport = undefined;
- return [3 /*break*/, 10];
- case 9:
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.");
- _a.label = 10;
- case 10: return [2 /*return*/];
- }
- });
- });
- };
- HttpConnection.prototype.startInternal = function (transferFormat) {
- return __awaiter(this, void 0, void 0, function () {
- var url, negotiateResponse, redirects, _loop_1, this_1, e_3;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- url = this.baseUrl;
- this.accessTokenFactory = this.options.accessTokenFactory;
- _a.label = 1;
- case 1:
- _a.trys.push([1, 12, , 13]);
- if (!this.options.skipNegotiation) return [3 /*break*/, 5];
- if (!(this.options.transport === _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].WebSockets)) return [3 /*break*/, 3];
- // No need to add a connection ID in this case
- this.transport = this.constructTransport(_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].WebSockets);
- // We should just call connect directly in this case.
- // No fallback or negotiate in this case.
- return [4 /*yield*/, this.startTransport(url, transferFormat)];
- case 2:
- // We should just call connect directly in this case.
- // No fallback or negotiate in this case.
- _a.sent();
- return [3 /*break*/, 4];
- case 3: throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");
- case 4: return [3 /*break*/, 11];
- case 5:
- negotiateResponse = null;
- redirects = 0;
- _loop_1 = function () {
- var accessToken_1;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4 /*yield*/, this_1.getNegotiationResponse(url)];
- case 1:
- negotiateResponse = _a.sent();
- // the user tries to stop the connection when it is being started
- if (this_1.connectionState === "Disconnecting" /* Disconnecting */ || this_1.connectionState === "Disconnected" /* Disconnected */) {
- throw new Error("The connection was stopped during negotiation.");
- }
- if (negotiateResponse.error) {
- throw new Error(negotiateResponse.error);
- }
- if (negotiateResponse.ProtocolVersion) {
- 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.");
- }
- if (negotiateResponse.url) {
- url = negotiateResponse.url;
- }
- if (negotiateResponse.accessToken) {
- accessToken_1 = negotiateResponse.accessToken;
- this_1.accessTokenFactory = function () { return accessToken_1; };
- }
- redirects++;
- return [2 /*return*/];
- }
- });
- };
- this_1 = this;
- _a.label = 6;
- case 6: return [5 /*yield**/, _loop_1()];
- case 7:
- _a.sent();
- _a.label = 8;
- case 8:
- if (negotiateResponse.url && redirects < MAX_REDIRECTS) return [3 /*break*/, 6];
- _a.label = 9;
- case 9:
- if (redirects === MAX_REDIRECTS && negotiateResponse.url) {
- throw new Error("Negotiate redirection limit exceeded.");
- }
- return [4 /*yield*/, this.createTransport(url, this.options.transport, negotiateResponse, transferFormat)];
- case 10:
- _a.sent();
- _a.label = 11;
- case 11:
- if (this.transport instanceof _LongPollingTransport__WEBPACK_IMPORTED_MODULE_3__["LongPollingTransport"]) {
- this.features.inherentKeepAlive = true;
- }
- if (this.connectionState === "Connecting" /* Connecting */) {
- // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.
- // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "The HttpConnection connected successfully.");
- this.connectionState = "Connected" /* Connected */;
- }
- return [3 /*break*/, 13];
- case 12:
- e_3 = _a.sent();
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "Failed to start the connection: " + e_3);
- this.connectionState = "Disconnected" /* Disconnected */;
- this.transport = undefined;
- // if start fails, any active calls to stop assume that start will complete the stop promise
- this.stopPromiseResolver();
- return [2 /*return*/, Promise.reject(e_3)];
- case 13: return [2 /*return*/];
- }
- });
- });
- };
- HttpConnection.prototype.getNegotiationResponse = function (url) {
- return __awaiter(this, void 0, void 0, function () {
- var headers, token, _a, name, value, negotiateUrl, response, negotiateResponse, e_4;
- return __generator(this, function (_b) {
- switch (_b.label) {
- case 0:
- headers = {};
- if (!this.accessTokenFactory) return [3 /*break*/, 2];
- return [4 /*yield*/, this.accessTokenFactory()];
- case 1:
- token = _b.sent();
- if (token) {
- headers["Authorization"] = "Bearer " + token;
- }
- _b.label = 2;
- case 2:
- _a = Object(_Utils__WEBPACK_IMPORTED_MODULE_5__["getUserAgentHeader"])(), name = _a[0], value = _a[1];
- headers[name] = value;
- negotiateUrl = this.resolveNegotiateUrl(url);
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Sending negotiation request: " + negotiateUrl + ".");
- _b.label = 3;
- case 3:
- _b.trys.push([3, 5, , 6]);
- return [4 /*yield*/, this.httpClient.post(negotiateUrl, {
- content: "",
- headers: __assign({}, headers, this.options.headers),
- withCredentials: this.options.withCredentials,
- })];
- case 4:
- response = _b.sent();
- if (response.statusCode !== 200) {
- return [2 /*return*/, Promise.reject(new Error("Unexpected status code returned from negotiate '" + response.statusCode + "'"))];
- }
- negotiateResponse = JSON.parse(response.content);
- if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {
- // Negotiate version 0 doesn't use connectionToken
- // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version
- negotiateResponse.connectionToken = negotiateResponse.connectionId;
- }
- return [2 /*return*/, negotiateResponse];
- case 5:
- e_4 = _b.sent();
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "Failed to complete negotiation with the server: " + e_4);
- return [2 /*return*/, Promise.reject(e_4)];
- case 6: return [2 /*return*/];
- }
- });
- });
- };
- HttpConnection.prototype.createConnectUrl = function (url, connectionToken) {
- if (!connectionToken) {
- return url;
- }
- return url + (url.indexOf("?") === -1 ? "?" : "&") + ("id=" + connectionToken);
- };
- HttpConnection.prototype.createTransport = function (url, requestedTransport, negotiateResponse, requestedTransferFormat) {
- return __awaiter(this, void 0, void 0, function () {
- var connectUrl, transportExceptions, transports, negotiate, _i, transports_1, endpoint, transportOrError, ex_1, ex_2, message;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- connectUrl = this.createConnectUrl(url, negotiateResponse.connectionToken);
- if (!this.isITransport(requestedTransport)) return [3 /*break*/, 2];
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Connection was provided an instance of ITransport, using that directly.");
- this.transport = requestedTransport;
- return [4 /*yield*/, this.startTransport(connectUrl, requestedTransferFormat)];
- case 1:
- _a.sent();
- this.connectionId = negotiateResponse.connectionId;
- return [2 /*return*/];
- case 2:
- transportExceptions = [];
- transports = negotiateResponse.availableTransports || [];
- negotiate = negotiateResponse;
- _i = 0, transports_1 = transports;
- _a.label = 3;
- case 3:
- if (!(_i < transports_1.length)) return [3 /*break*/, 13];
- endpoint = transports_1[_i];
- transportOrError = this.resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);
- if (!(transportOrError instanceof Error)) return [3 /*break*/, 4];
- // Store the error and continue, we don't want to cause a re-negotiate in these cases
- transportExceptions.push(endpoint.transport + " failed: " + transportOrError);
- return [3 /*break*/, 12];
- case 4:
- if (!this.isITransport(transportOrError)) return [3 /*break*/, 12];
- this.transport = transportOrError;
- if (!!negotiate) return [3 /*break*/, 9];
- _a.label = 5;
- case 5:
- _a.trys.push([5, 7, , 8]);
- return [4 /*yield*/, this.getNegotiationResponse(url)];
- case 6:
- negotiate = _a.sent();
- return [3 /*break*/, 8];
- case 7:
- ex_1 = _a.sent();
- return [2 /*return*/, Promise.reject(ex_1)];
- case 8:
- connectUrl = this.createConnectUrl(url, negotiate.connectionToken);
- _a.label = 9;
- case 9:
- _a.trys.push([9, 11, , 12]);
- return [4 /*yield*/, this.startTransport(connectUrl, requestedTransferFormat)];
- case 10:
- _a.sent();
- this.connectionId = negotiate.connectionId;
- return [2 /*return*/];
- case 11:
- ex_2 = _a.sent();
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "Failed to start the transport '" + endpoint.transport + "': " + ex_2);
- negotiate = undefined;
- transportExceptions.push(endpoint.transport + " failed: " + ex_2);
- if (this.connectionState !== "Connecting" /* Connecting */) {
- message = "Failed to select transport before stop() was called.";
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, message);
- return [2 /*return*/, Promise.reject(new Error(message))];
- }
- return [3 /*break*/, 12];
- case 12:
- _i++;
- return [3 /*break*/, 3];
- case 13:
- if (transportExceptions.length > 0) {
- return [2 /*return*/, Promise.reject(new Error("Unable to connect to the server with any of the available transports. " + transportExceptions.join(" ")))];
- }
- return [2 /*return*/, Promise.reject(new Error("None of the transports supported by the client are supported by the server."))];
- }
- });
- });
- };
- HttpConnection.prototype.constructTransport = function (transport) {
- switch (transport) {
- case _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].WebSockets:
- if (!this.options.WebSocket) {
- throw new Error("'WebSocket' is not supported in your environment.");
- }
- return new _WebSocketTransport__WEBPACK_IMPORTED_MODULE_6__["WebSocketTransport"](this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.WebSocket, this.options.headers || {});
- case _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].ServerSentEvents:
- if (!this.options.EventSource) {
- throw new Error("'EventSource' is not supported in your environment.");
- }
- return new _ServerSentEventsTransport__WEBPACK_IMPORTED_MODULE_4__["ServerSentEventsTransport"](this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.EventSource, this.options.withCredentials, this.options.headers || {});
- case _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].LongPolling:
- return new _LongPollingTransport__WEBPACK_IMPORTED_MODULE_3__["LongPollingTransport"](this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.withCredentials, this.options.headers || {});
- default:
- throw new Error("Unknown transport: " + transport + ".");
- }
- };
- HttpConnection.prototype.startTransport = function (url, transferFormat) {
- var _this = this;
- this.transport.onreceive = this.onreceive;
- this.transport.onclose = function (e) { return _this.stopConnection(e); };
- return this.transport.connect(url, transferFormat);
- };
- HttpConnection.prototype.resolveTransportOrError = function (endpoint, requestedTransport, requestedTransferFormat) {
- var transport = _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][endpoint.transport];
- if (transport === null || transport === undefined) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Skipping transport '" + endpoint.transport + "' because it is not supported by this client.");
- return new Error("Skipping transport '" + endpoint.transport + "' because it is not supported by this client.");
- }
- else {
- if (transportMatches(requestedTransport, transport)) {
- var transferFormats = endpoint.transferFormats.map(function (s) { return _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"][s]; });
- if (transferFormats.indexOf(requestedTransferFormat) >= 0) {
- if ((transport === _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].WebSockets && !this.options.WebSocket) ||
- (transport === _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].ServerSentEvents && !this.options.EventSource)) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Skipping transport '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' because it is not supported in your environment.'");
- return new Error("'" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' is not supported in your environment.");
- }
- else {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Selecting transport '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "'.");
- try {
- return this.constructTransport(transport);
- }
- catch (ex) {
- return ex;
- }
- }
- }
- else {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Skipping transport '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' because it does not support the requested transfer format '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"][requestedTransferFormat] + "'.");
- return new Error("'" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' does not support " + _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"][requestedTransferFormat] + ".");
- }
- }
- else {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Skipping transport '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' because it was disabled by the client.");
- return new Error("'" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' is disabled by the client.");
- }
- }
- };
- HttpConnection.prototype.isITransport = function (transport) {
- return transport && typeof (transport) === "object" && "connect" in transport;
- };
- HttpConnection.prototype.stopConnection = function (error) {
- var _this = this;
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "HttpConnection.stopConnection(" + error + ") called while in state " + this.connectionState + ".");
- this.transport = undefined;
- // If we have a stopError, it takes precedence over the error from the transport
- error = this.stopError || error;
- this.stopError = undefined;
- if (this.connectionState === "Disconnected" /* Disconnected */) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Call to HttpConnection.stopConnection(" + error + ") was ignored because the connection is already in the disconnected state.");
- return;
- }
- if (this.connectionState === "Connecting" /* Connecting */) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Warning, "Call to HttpConnection.stopConnection(" + error + ") was ignored because the connection is still in the connecting state.");
- throw new Error("HttpConnection.stopConnection(" + error + ") was called while the connection is still in the connecting state.");
- }
- if (this.connectionState === "Disconnecting" /* Disconnecting */) {
- // A call to stop() induced this call to stopConnection and needs to be completed.
- // Any stop() awaiters will be scheduled to continue after the onclose callback fires.
- this.stopPromiseResolver();
- }
- if (error) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "Connection disconnected with error '" + error + "'.");
- }
- else {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Information, "Connection disconnected.");
- }
- if (this.sendQueue) {
- this.sendQueue.stop().catch(function (e) {
- _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "TransportSendQueue.stop() threw error '" + e + "'.");
- });
- this.sendQueue = undefined;
- }
- this.connectionId = undefined;
- this.connectionState = "Disconnected" /* Disconnected */;
- if (this.connectionStarted) {
- this.connectionStarted = false;
- try {
- if (this.onclose) {
- this.onclose(error);
- }
- }
- catch (e) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "HttpConnection.onclose(" + error + ") threw error '" + e + "'.");
- }
- }
- };
- HttpConnection.prototype.resolveUrl = function (url) {
- // startsWith is not supported in IE
- if (url.lastIndexOf("https://", 0) === 0 || url.lastIndexOf("http://", 0) === 0) {
- return url;
- }
- if (!_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isBrowser || !window.document) {
- throw new Error("Cannot resolve '" + url + "'.");
- }
- // Setting the url to the href propery of an anchor tag handles normalization
- // for us. There are 3 main cases.
- // 1. Relative path normalization e.g "b" -> "http://localhost:5000/a/b"
- // 2. Absolute path normalization e.g "/a/b" -> "http://localhost:5000/a/b"
- // 3. Networkpath reference normalization e.g "//localhost:5000/a/b" -> "http://localhost:5000/a/b"
- var aTag = window.document.createElement("a");
- aTag.href = url;
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Information, "Normalizing '" + url + "' to '" + aTag.href + "'.");
- return aTag.href;
- };
- HttpConnection.prototype.resolveNegotiateUrl = function (url) {
- var index = url.indexOf("?");
- var negotiateUrl = url.substring(0, index === -1 ? url.length : index);
- if (negotiateUrl[negotiateUrl.length - 1] !== "/") {
- negotiateUrl += "/";
- }
- negotiateUrl += "negotiate";
- negotiateUrl += index === -1 ? "" : url.substring(index);
- if (negotiateUrl.indexOf("negotiateVersion") === -1) {
- negotiateUrl += index === -1 ? "?" : "&";
- negotiateUrl += "negotiateVersion=" + this.negotiateVersion;
- }
- return negotiateUrl;
- };
- return HttpConnection;
-}());
-
-function transportMatches(requestedTransport, actualTransport) {
- return !requestedTransport || ((actualTransport & requestedTransport) !== 0);
-}
-/** @private */
-var TransportSendQueue = /** @class */ (function () {
- function TransportSendQueue(transport) {
- this.transport = transport;
- this.buffer = [];
- this.executing = true;
- this.sendBufferedData = new PromiseSource();
- this.transportResult = new PromiseSource();
- this.sendLoopPromise = this.sendLoop();
- }
- TransportSendQueue.prototype.send = function (data) {
- this.bufferData(data);
- if (!this.transportResult) {
- this.transportResult = new PromiseSource();
- }
- return this.transportResult.promise;
- };
- TransportSendQueue.prototype.stop = function () {
- this.executing = false;
- this.sendBufferedData.resolve();
- return this.sendLoopPromise;
- };
- TransportSendQueue.prototype.bufferData = function (data) {
- if (this.buffer.length && typeof (this.buffer[0]) !== typeof (data)) {
- throw new Error("Expected data to be of type " + typeof (this.buffer) + " but was of type " + typeof (data));
- }
- this.buffer.push(data);
- this.sendBufferedData.resolve();
- };
- TransportSendQueue.prototype.sendLoop = function () {
- return __awaiter(this, void 0, void 0, function () {
- var transportResult, data, error_1;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (false) {}
- return [4 /*yield*/, this.sendBufferedData.promise];
- case 1:
- _a.sent();
- if (!this.executing) {
- if (this.transportResult) {
- this.transportResult.reject("Connection stopped.");
- }
- return [3 /*break*/, 6];
- }
- this.sendBufferedData = new PromiseSource();
- transportResult = this.transportResult;
- this.transportResult = undefined;
- data = typeof (this.buffer[0]) === "string" ?
- this.buffer.join("") :
- TransportSendQueue.concatBuffers(this.buffer);
- this.buffer.length = 0;
- _a.label = 2;
- case 2:
- _a.trys.push([2, 4, , 5]);
- return [4 /*yield*/, this.transport.send(data)];
- case 3:
- _a.sent();
- transportResult.resolve();
- return [3 /*break*/, 5];
- case 4:
- error_1 = _a.sent();
- transportResult.reject(error_1);
- return [3 /*break*/, 5];
- case 5: return [3 /*break*/, 0];
- case 6: return [2 /*return*/];
- }
- });
- });
- };
- TransportSendQueue.concatBuffers = function (arrayBuffers) {
- var totalLength = arrayBuffers.map(function (b) { return b.byteLength; }).reduce(function (a, b) { return a + b; });
- var result = new Uint8Array(totalLength);
- var offset = 0;
- for (var _i = 0, arrayBuffers_1 = arrayBuffers; _i < arrayBuffers_1.length; _i++) {
- var item = arrayBuffers_1[_i];
- result.set(new Uint8Array(item), offset);
- offset += item.byteLength;
- }
- return result.buffer;
- };
- return TransportSendQueue;
-}());
-
-var PromiseSource = /** @class */ (function () {
- function PromiseSource() {
- var _this = this;
- this.promise = new Promise(function (resolve, reject) {
- var _a;
- return _a = [resolve, reject], _this.resolver = _a[0], _this.rejecter = _a[1], _a;
- });
- }
- PromiseSource.prototype.resolve = function () {
- this.resolver();
- };
- PromiseSource.prototype.reject = function (reason) {
- this.rejecter(reason);
- };
- return PromiseSource;
-}());
-
-
-/***/ }),
-/* 20 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpTransportType", function() { return HttpTransportType; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TransferFormat", function() { return TransferFormat; });
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-// This will be treated as a bit flag in the future, so we keep it using power-of-two values.
-/** Specifies a specific HTTP transport type. */
-var HttpTransportType;
-(function (HttpTransportType) {
- /** Specifies no transport preference. */
- HttpTransportType[HttpTransportType["None"] = 0] = "None";
- /** Specifies the WebSockets transport. */
- HttpTransportType[HttpTransportType["WebSockets"] = 1] = "WebSockets";
- /** Specifies the Server-Sent Events transport. */
- HttpTransportType[HttpTransportType["ServerSentEvents"] = 2] = "ServerSentEvents";
- /** Specifies the Long Polling transport. */
- HttpTransportType[HttpTransportType["LongPolling"] = 4] = "LongPolling";
-})(HttpTransportType || (HttpTransportType = {}));
-/** Specifies the transfer format for a connection. */
-var TransferFormat;
-(function (TransferFormat) {
- /** Specifies that only text data will be transmitted over the connection. */
- TransferFormat[TransferFormat["Text"] = 1] = "Text";
- /** Specifies that binary data will be transmitted over the connection. */
- TransferFormat[TransferFormat["Binary"] = 2] = "Binary";
-})(TransferFormat || (TransferFormat = {}));
-
-
-/***/ }),
-/* 21 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LongPollingTransport", function() { return LongPollingTransport; });
-/* harmony import */ var _AbortController__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22);
-/* harmony import */ var _Errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
-/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
-/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
-};
-var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-};
-
-
-
-
-
-// Not exported from 'index', this type is internal.
-/** @private */
-var LongPollingTransport = /** @class */ (function () {
- function LongPollingTransport(httpClient, accessTokenFactory, logger, logMessageContent, withCredentials, headers) {
- this.httpClient = httpClient;
- this.accessTokenFactory = accessTokenFactory;
- this.logger = logger;
- this.pollAbort = new _AbortController__WEBPACK_IMPORTED_MODULE_0__["AbortController"]();
- this.logMessageContent = logMessageContent;
- this.withCredentials = withCredentials;
- this.headers = headers;
- this.running = false;
- this.onreceive = null;
- this.onclose = null;
- }
- Object.defineProperty(LongPollingTransport.prototype, "pollAborted", {
- // This is an internal type, not exported from 'index' so this is really just internal.
- get: function () {
- return this.pollAbort.aborted;
- },
- enumerable: true,
- configurable: true
- });
- LongPollingTransport.prototype.connect = function (url, transferFormat) {
- return __awaiter(this, void 0, void 0, function () {
- var _a, _b, name, value, headers, pollOptions, token, pollUrl, response;
- return __generator(this, function (_c) {
- switch (_c.label) {
- case 0:
- _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isRequired(url, "url");
- _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isRequired(transferFormat, "transferFormat");
- _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isIn(transferFormat, _ITransport__WEBPACK_IMPORTED_MODULE_3__["TransferFormat"], "transferFormat");
- this.url = url;
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Connecting.");
- // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)
- if (transferFormat === _ITransport__WEBPACK_IMPORTED_MODULE_3__["TransferFormat"].Binary &&
- (typeof XMLHttpRequest !== "undefined" && typeof new XMLHttpRequest().responseType !== "string")) {
- throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");
- }
- _b = Object(_Utils__WEBPACK_IMPORTED_MODULE_4__["getUserAgentHeader"])(), name = _b[0], value = _b[1];
- headers = __assign((_a = {}, _a[name] = value, _a), this.headers);
- pollOptions = {
- abortSignal: this.pollAbort.signal,
- headers: headers,
- timeout: 100000,
- withCredentials: this.withCredentials,
- };
- if (transferFormat === _ITransport__WEBPACK_IMPORTED_MODULE_3__["TransferFormat"].Binary) {
- pollOptions.responseType = "arraybuffer";
- }
- return [4 /*yield*/, this.getAccessToken()];
- case 1:
- token = _c.sent();
- this.updateHeaderToken(pollOptions, token);
- pollUrl = url + "&_=" + Date.now();
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) polling: " + pollUrl + ".");
- return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];
- case 2:
- response = _c.sent();
- if (response.statusCode !== 200) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "(LongPolling transport) Unexpected response code: " + response.statusCode + ".");
- // Mark running as false so that the poll immediately ends and runs the close logic
- this.closeError = new _Errors__WEBPACK_IMPORTED_MODULE_1__["HttpError"](response.statusText || "", response.statusCode);
- this.running = false;
- }
- else {
- this.running = true;
- }
- this.receiving = this.poll(this.url, pollOptions);
- return [2 /*return*/];
- }
- });
- });
- };
- LongPollingTransport.prototype.getAccessToken = function () {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (!this.accessTokenFactory) return [3 /*break*/, 2];
- return [4 /*yield*/, this.accessTokenFactory()];
- case 1: return [2 /*return*/, _a.sent()];
- case 2: return [2 /*return*/, null];
- }
- });
- });
- };
- LongPollingTransport.prototype.updateHeaderToken = function (request, token) {
- if (!request.headers) {
- request.headers = {};
- }
- if (token) {
- // tslint:disable-next-line:no-string-literal
- request.headers["Authorization"] = "Bearer " + token;
- return;
- }
- // tslint:disable-next-line:no-string-literal
- if (request.headers["Authorization"]) {
- // tslint:disable-next-line:no-string-literal
- delete request.headers["Authorization"];
- }
- };
- LongPollingTransport.prototype.poll = function (url, pollOptions) {
- return __awaiter(this, void 0, void 0, function () {
- var token, pollUrl, response, e_1;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- _a.trys.push([0, , 8, 9]);
- _a.label = 1;
- case 1:
- if (!this.running) return [3 /*break*/, 7];
- return [4 /*yield*/, this.getAccessToken()];
- case 2:
- token = _a.sent();
- this.updateHeaderToken(pollOptions, token);
- _a.label = 3;
- case 3:
- _a.trys.push([3, 5, , 6]);
- pollUrl = url + "&_=" + Date.now();
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) polling: " + pollUrl + ".");
- return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];
- case 4:
- response = _a.sent();
- if (response.statusCode === 204) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "(LongPolling transport) Poll terminated by server.");
- this.running = false;
- }
- else if (response.statusCode !== 200) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "(LongPolling transport) Unexpected response code: " + response.statusCode + ".");
- // Unexpected status code
- this.closeError = new _Errors__WEBPACK_IMPORTED_MODULE_1__["HttpError"](response.statusText || "", response.statusCode);
- this.running = false;
- }
- else {
- // Process the response
- if (response.content) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) data received. " + Object(_Utils__WEBPACK_IMPORTED_MODULE_4__["getDataDetail"])(response.content, this.logMessageContent) + ".");
- if (this.onreceive) {
- this.onreceive(response.content);
- }
- }
- else {
- // This is another way timeout manifest.
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Poll timed out, reissuing.");
- }
- }
- return [3 /*break*/, 6];
- case 5:
- e_1 = _a.sent();
- if (!this.running) {
- // Log but disregard errors that occur after stopping
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Poll errored after shutdown: " + e_1.message);
- }
- else {
- if (e_1 instanceof _Errors__WEBPACK_IMPORTED_MODULE_1__["TimeoutError"]) {
- // Ignore timeouts and reissue the poll.
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Poll timed out, reissuing.");
- }
- else {
- // Close the connection with the error as the result.
- this.closeError = e_1;
- this.running = false;
- }
- }
- return [3 /*break*/, 6];
- case 6: return [3 /*break*/, 1];
- case 7: return [3 /*break*/, 9];
- case 8:
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Polling complete.");
- // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.
- // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.
- if (!this.pollAborted) {
- this.raiseOnClose();
- }
- return [7 /*endfinally*/];
- case 9: return [2 /*return*/];
- }
- });
- });
- };
- LongPollingTransport.prototype.send = function (data) {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- if (!this.running) {
- return [2 /*return*/, Promise.reject(new Error("Cannot send until the transport is connected"))];
- }
- return [2 /*return*/, Object(_Utils__WEBPACK_IMPORTED_MODULE_4__["sendMessage"])(this.logger, "LongPolling", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent, this.withCredentials, this.headers)];
- });
- });
- };
- LongPollingTransport.prototype.stop = function () {
- return __awaiter(this, void 0, void 0, function () {
- var headers, _a, name_1, value, deleteOptions, token;
- return __generator(this, function (_b) {
- switch (_b.label) {
- case 0:
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Stopping polling.");
- // Tell receiving loop to stop, abort any current request, and then wait for it to finish
- this.running = false;
- this.pollAbort.abort();
- _b.label = 1;
- case 1:
- _b.trys.push([1, , 5, 6]);
- return [4 /*yield*/, this.receiving];
- case 2:
- _b.sent();
- // Send DELETE to clean up long polling on the server
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) sending DELETE request to " + this.url + ".");
- headers = {};
- _a = Object(_Utils__WEBPACK_IMPORTED_MODULE_4__["getUserAgentHeader"])(), name_1 = _a[0], value = _a[1];
- headers[name_1] = value;
- deleteOptions = {
- headers: __assign({}, headers, this.headers),
- withCredentials: this.withCredentials,
- };
- return [4 /*yield*/, this.getAccessToken()];
- case 3:
- token = _b.sent();
- this.updateHeaderToken(deleteOptions, token);
- return [4 /*yield*/, this.httpClient.delete(this.url, deleteOptions)];
- case 4:
- _b.sent();
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) DELETE request sent.");
- return [3 /*break*/, 6];
- case 5:
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Stop finished.");
- // Raise close event here instead of in polling
- // It needs to happen after the DELETE request is sent
- this.raiseOnClose();
- return [7 /*endfinally*/];
- case 6: return [2 /*return*/];
- }
- });
- });
- };
- LongPollingTransport.prototype.raiseOnClose = function () {
- if (this.onclose) {
- var logMessage = "(LongPolling transport) Firing onclose event.";
- if (this.closeError) {
- logMessage += " Error: " + this.closeError;
- }
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, logMessage);
- this.onclose(this.closeError);
- }
- };
- return LongPollingTransport;
-}());
-
-
-
-/***/ }),
-/* 22 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbortController", function() { return AbortController; });
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController
-// We don't actually ever use the API being polyfilled, we always use the polyfill because
-// it's a very new API right now.
-// Not exported from index.
-/** @private */
-var AbortController = /** @class */ (function () {
- function AbortController() {
- this.isAborted = false;
- this.onabort = null;
- }
- AbortController.prototype.abort = function () {
- if (!this.isAborted) {
- this.isAborted = true;
- if (this.onabort) {
- this.onabort();
- }
- }
- };
- Object.defineProperty(AbortController.prototype, "signal", {
- get: function () {
- return this;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(AbortController.prototype, "aborted", {
- get: function () {
- return this.isAborted;
- },
- enumerable: true,
- configurable: true
- });
- return AbortController;
-}());
-
-
-
-/***/ }),
-/* 23 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ServerSentEventsTransport", function() { return ServerSentEventsTransport; });
-/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8);
-/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
-};
-var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-};
-
-
-
-/** @private */
-var ServerSentEventsTransport = /** @class */ (function () {
- function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, logMessageContent, eventSourceConstructor, withCredentials, headers) {
- this.httpClient = httpClient;
- this.accessTokenFactory = accessTokenFactory;
- this.logger = logger;
- this.logMessageContent = logMessageContent;
- this.withCredentials = withCredentials;
- this.eventSourceConstructor = eventSourceConstructor;
- this.headers = headers;
- this.onreceive = null;
- this.onclose = null;
- }
- ServerSentEventsTransport.prototype.connect = function (url, transferFormat) {
- return __awaiter(this, void 0, void 0, function () {
- var token;
- var _this = this;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isRequired(url, "url");
- _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isRequired(transferFormat, "transferFormat");
- _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isIn(transferFormat, _ITransport__WEBPACK_IMPORTED_MODULE_1__["TransferFormat"], "transferFormat");
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(SSE transport) Connecting.");
- // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send
- this.url = url;
- if (!this.accessTokenFactory) return [3 /*break*/, 2];
- return [4 /*yield*/, this.accessTokenFactory()];
- case 1:
- token = _a.sent();
- if (token) {
- url += (url.indexOf("?") < 0 ? "?" : "&") + ("access_token=" + encodeURIComponent(token));
- }
- _a.label = 2;
- case 2: return [2 /*return*/, new Promise(function (resolve, reject) {
- var opened = false;
- if (transferFormat !== _ITransport__WEBPACK_IMPORTED_MODULE_1__["TransferFormat"].Text) {
- reject(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"));
- return;
- }
- var eventSource;
- if (_Utils__WEBPACK_IMPORTED_MODULE_2__["Platform"].isBrowser || _Utils__WEBPACK_IMPORTED_MODULE_2__["Platform"].isWebWorker) {
- eventSource = new _this.eventSourceConstructor(url, { withCredentials: _this.withCredentials });
- }
- else {
- // Non-browser passes cookies via the dictionary
- var cookies = _this.httpClient.getCookieString(url);
- var headers = {};
- headers.Cookie = cookies;
- var _a = Object(_Utils__WEBPACK_IMPORTED_MODULE_2__["getUserAgentHeader"])(), name_1 = _a[0], value = _a[1];
- headers[name_1] = value;
- eventSource = new _this.eventSourceConstructor(url, { withCredentials: _this.withCredentials, headers: __assign({}, headers, _this.headers) });
- }
- try {
- eventSource.onmessage = function (e) {
- if (_this.onreceive) {
- try {
- _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(SSE transport) data received. " + Object(_Utils__WEBPACK_IMPORTED_MODULE_2__["getDataDetail"])(e.data, _this.logMessageContent) + ".");
- _this.onreceive(e.data);
- }
- catch (error) {
- _this.close(error);
- return;
- }
- }
- };
- eventSource.onerror = function (e) {
- var error = new Error(e.data || "Error occurred");
- if (opened) {
- _this.close(error);
- }
- else {
- reject(error);
- }
- };
- eventSource.onopen = function () {
- _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Information, "SSE connected to " + _this.url);
- _this.eventSource = eventSource;
- opened = true;
- resolve();
- };
- }
- catch (e) {
- reject(e);
- return;
- }
- })];
- }
- });
- });
- };
- ServerSentEventsTransport.prototype.send = function (data) {
- return __awaiter(this, void 0, void 0, function () {
- return __generator(this, function (_a) {
- if (!this.eventSource) {
- return [2 /*return*/, Promise.reject(new Error("Cannot send until the transport is connected"))];
- }
- return [2 /*return*/, Object(_Utils__WEBPACK_IMPORTED_MODULE_2__["sendMessage"])(this.logger, "SSE", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent, this.withCredentials, this.headers)];
- });
- });
- };
- ServerSentEventsTransport.prototype.stop = function () {
- this.close();
- return Promise.resolve();
- };
- ServerSentEventsTransport.prototype.close = function (e) {
- if (this.eventSource) {
- this.eventSource.close();
- this.eventSource = undefined;
- if (this.onclose) {
- this.onclose(e);
- }
- }
- };
- return ServerSentEventsTransport;
-}());
-
-
-
-/***/ }),
-/* 24 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WebSocketTransport", function() { return WebSocketTransport; });
-/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8);
-/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
-};
-var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-};
-
-
-
-/** @private */
-var WebSocketTransport = /** @class */ (function () {
- function WebSocketTransport(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {
- this.logger = logger;
- this.accessTokenFactory = accessTokenFactory;
- this.logMessageContent = logMessageContent;
- this.webSocketConstructor = webSocketConstructor;
- this.httpClient = httpClient;
- this.onreceive = null;
- this.onclose = null;
- this.headers = headers;
- }
- WebSocketTransport.prototype.connect = function (url, transferFormat) {
- return __awaiter(this, void 0, void 0, function () {
- var token;
- var _this = this;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isRequired(url, "url");
- _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isRequired(transferFormat, "transferFormat");
- _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isIn(transferFormat, _ITransport__WEBPACK_IMPORTED_MODULE_1__["TransferFormat"], "transferFormat");
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(WebSockets transport) Connecting.");
- if (!this.accessTokenFactory) return [3 /*break*/, 2];
- return [4 /*yield*/, this.accessTokenFactory()];
- case 1:
- token = _a.sent();
- if (token) {
- url += (url.indexOf("?") < 0 ? "?" : "&") + ("access_token=" + encodeURIComponent(token));
- }
- _a.label = 2;
- case 2: return [2 /*return*/, new Promise(function (resolve, reject) {
- url = url.replace(/^http/, "ws");
- var webSocket;
- var cookies = _this.httpClient.getCookieString(url);
- var opened = false;
- if (_Utils__WEBPACK_IMPORTED_MODULE_2__["Platform"].isNode) {
- var headers = {};
- var _a = Object(_Utils__WEBPACK_IMPORTED_MODULE_2__["getUserAgentHeader"])(), name_1 = _a[0], value = _a[1];
- headers[name_1] = value;
- if (cookies) {
- headers["Cookie"] = "" + cookies;
- }
- // Only pass headers when in non-browser environments
- webSocket = new _this.webSocketConstructor(url, undefined, {
- headers: __assign({}, headers, _this.headers),
- });
- }
- if (!webSocket) {
- // Chrome is not happy with passing 'undefined' as protocol
- webSocket = new _this.webSocketConstructor(url);
- }
- if (transferFormat === _ITransport__WEBPACK_IMPORTED_MODULE_1__["TransferFormat"].Binary) {
- webSocket.binaryType = "arraybuffer";
- }
- // tslint:disable-next-line:variable-name
- webSocket.onopen = function (_event) {
- _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Information, "WebSocket connected to " + url + ".");
- _this.webSocket = webSocket;
- opened = true;
- resolve();
- };
- webSocket.onerror = function (event) {
- var error = null;
- // ErrorEvent is a browser only type we need to check if the type exists before using it
- if (typeof ErrorEvent !== "undefined" && event instanceof ErrorEvent) {
- error = event.error;
- }
- else {
- error = new Error("There was an error with the transport.");
- }
- reject(error);
- };
- webSocket.onmessage = function (message) {
- _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(WebSockets transport) data received. " + Object(_Utils__WEBPACK_IMPORTED_MODULE_2__["getDataDetail"])(message.data, _this.logMessageContent) + ".");
- if (_this.onreceive) {
- try {
- _this.onreceive(message.data);
- }
- catch (error) {
- _this.close(error);
- return;
- }
- }
- };
- webSocket.onclose = function (event) {
- // Don't call close handler if connection was never established
- // We'll reject the connect call instead
- if (opened) {
- _this.close(event);
- }
- else {
- var error = null;
- // ErrorEvent is a browser only type we need to check if the type exists before using it
- if (typeof ErrorEvent !== "undefined" && event instanceof ErrorEvent) {
- error = event.error;
- }
- else {
- error = new Error("There was an error with the transport.");
- }
- reject(error);
- }
- };
- })];
- }
- });
- });
- };
- WebSocketTransport.prototype.send = function (data) {
- if (this.webSocket && this.webSocket.readyState === this.webSocketConstructor.OPEN) {
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(WebSockets transport) sending data. " + Object(_Utils__WEBPACK_IMPORTED_MODULE_2__["getDataDetail"])(data, this.logMessageContent) + ".");
- this.webSocket.send(data);
- return Promise.resolve();
- }
- return Promise.reject("WebSocket is not in the OPEN state");
- };
- WebSocketTransport.prototype.stop = function () {
- if (this.webSocket) {
- // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning
- // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects
- this.close(undefined);
- }
- return Promise.resolve();
- };
- WebSocketTransport.prototype.close = function (event) {
- // webSocket will be null if the transport did not start successfully
- if (this.webSocket) {
- // Clear websocket handlers because we are considering the socket closed now
- this.webSocket.onclose = function () { };
- this.webSocket.onmessage = function () { };
- this.webSocket.onerror = function () { };
- this.webSocket.close();
- this.webSocket = undefined;
- }
- this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(WebSockets transport) socket closed.");
- if (this.onclose) {
- if (this.isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {
- this.onclose(new Error("WebSocket closed with status code: " + event.code + " (" + event.reason + ")."));
- }
- else if (event instanceof Error) {
- this.onclose(event);
- }
- else {
- this.onclose();
- }
- }
- };
- WebSocketTransport.prototype.isCloseEvent = function (event) {
- return event && typeof event.wasClean === "boolean" && typeof event.code === "number";
- };
- return WebSocketTransport;
-}());
-
-
-
-/***/ }),
-/* 25 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "JsonHubProtocol", function() { return JsonHubProtocol; });
-/* harmony import */ var _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
-/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
-/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
-/* harmony import */ var _Loggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
-/* harmony import */ var _TextMessageFormat__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-
-
-
-
-var JSON_HUB_PROTOCOL_NAME = "json";
-/** Implements the JSON Hub Protocol. */
-var JsonHubProtocol = /** @class */ (function () {
- function JsonHubProtocol() {
- /** @inheritDoc */
- this.name = JSON_HUB_PROTOCOL_NAME;
- /** @inheritDoc */
- this.version = 1;
- /** @inheritDoc */
- this.transferFormat = _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"].Text;
- }
- /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.
- *
- * @param {string} input A string containing the serialized representation.
- * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.
- */
- JsonHubProtocol.prototype.parseMessages = function (input, logger) {
- // The interface does allow "ArrayBuffer" to be passed in, but this implementation does not. So let's throw a useful error.
- if (typeof input !== "string") {
- throw new Error("Invalid input for JSON hub protocol. Expected a string.");
- }
- if (!input) {
- return [];
- }
- if (logger === null) {
- logger = _Loggers__WEBPACK_IMPORTED_MODULE_3__["NullLogger"].instance;
- }
- // Parse the messages
- var messages = _TextMessageFormat__WEBPACK_IMPORTED_MODULE_4__["TextMessageFormat"].parse(input);
- var hubMessages = [];
- for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {
- var message = messages_1[_i];
- var parsedMessage = JSON.parse(message);
- if (typeof parsedMessage.type !== "number") {
- throw new Error("Invalid payload.");
- }
- switch (parsedMessage.type) {
- case _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessageType"].Invocation:
- this.isInvocationMessage(parsedMessage);
- break;
- case _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessageType"].StreamItem:
- this.isStreamItemMessage(parsedMessage);
- break;
- case _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessageType"].Completion:
- this.isCompletionMessage(parsedMessage);
- break;
- case _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessageType"].Ping:
- // Single value, no need to validate
- break;
- case _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessageType"].Close:
- // All optional values, no need to validate
- break;
- default:
- // Future protocol changes can add message types, old clients can ignore them
- logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Information, "Unknown message type '" + parsedMessage.type + "' ignored.");
- continue;
- }
- hubMessages.push(parsedMessage);
- }
- return hubMessages;
- };
- /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.
- *
- * @param {HubMessage} message The message to write.
- * @returns {string} A string containing the serialized representation of the message.
- */
- JsonHubProtocol.prototype.writeMessage = function (message) {
- return _TextMessageFormat__WEBPACK_IMPORTED_MODULE_4__["TextMessageFormat"].write(JSON.stringify(message));
- };
- JsonHubProtocol.prototype.isInvocationMessage = function (message) {
- this.assertNotEmptyString(message.target, "Invalid payload for Invocation message.");
- if (message.invocationId !== undefined) {
- this.assertNotEmptyString(message.invocationId, "Invalid payload for Invocation message.");
- }
- };
- JsonHubProtocol.prototype.isStreamItemMessage = function (message) {
- this.assertNotEmptyString(message.invocationId, "Invalid payload for StreamItem message.");
- if (message.item === undefined) {
- throw new Error("Invalid payload for StreamItem message.");
- }
- };
- JsonHubProtocol.prototype.isCompletionMessage = function (message) {
- if (message.result && message.error) {
- throw new Error("Invalid payload for Completion message.");
- }
- if (!message.result && message.error) {
- this.assertNotEmptyString(message.error, "Invalid payload for Completion message.");
- }
- this.assertNotEmptyString(message.invocationId, "Invalid payload for Completion message.");
- };
- JsonHubProtocol.prototype.assertNotEmptyString = function (value, errorMessage) {
- if (typeof value !== "string" || value === "") {
- throw new Error(errorMessage);
- }
- };
- return JsonHubProtocol;
-}());
-
-
-
-/***/ })
-/******/ ]);
-});
+var t,e;t=self,e=function(){return(()=>{var t={d:(e,s)=>{for(var n in s)t.o(s,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:s[n]})}};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"t",{value:!0})};var e,s={};t.r(s),t.d(s,{AbortError:()=>r,DefaultHttpClient:()=>H,HttpClient:()=>d,HttpError:()=>n,HttpResponse:()=>u,HttpTransportType:()=>W,HubConnection:()=>L,HubConnectionBuilder:()=>Q,HubConnectionState:()=>R,JsonHubProtocol:()=>G,LogLevel:()=>e,MessageType:()=>A,NullLogger:()=>f,Subject:()=>U,TimeoutError:()=>i,TransferFormat:()=>O,VERSION:()=>p});class n extends Error{constructor(t,e){const s=new.target.prototype;super(`${t}: Status code '${e}'`),this.statusCode=e,this.__proto__=s}}class i extends Error{constructor(t="A timeout occurred."){const e=new.target.prototype;super(t),this.__proto__=e}}class r extends Error{constructor(t="An abort occurred."){const e=new.target.prototype;super(t),this.__proto__=e}}class o extends Error{constructor(t,e){const s=new.target.prototype;super(t),this.transport=e,this.errorType="UnsupportedTransportError",this.__proto__=s}}class h extends Error{constructor(t,e){const s=new.target.prototype;super(t),this.transport=e,this.errorType="DisabledTransportError",this.__proto__=s}}class c extends Error{constructor(t,e){const s=new.target.prototype;super(t),this.transport=e,this.errorType="FailedToStartTransportError",this.__proto__=s}}class a extends Error{constructor(t){const e=new.target.prototype;super(t),this.errorType="FailedToNegotiateWithServerError",this.__proto__=e}}class l extends Error{constructor(t,e){const s=new.target.prototype;super(t),this.innerErrors=e,this.__proto__=s}}class u{constructor(t,e,s){this.statusCode=t,this.statusText=e,this.content=s}}class d{get(t,e){return this.send({...e,method:"GET",url:t})}post(t,e){return this.send({...e,method:"POST",url:t})}delete(t,e){return this.send({...e,method:"DELETE",url:t})}getCookieString(t){return""}}!function(t){t[t.Trace=0]="Trace",t[t.Debug=1]="Debug",t[t.Information=2]="Information",t[t.Warning=3]="Warning",t[t.Error=4]="Error",t[t.Critical=5]="Critical",t[t.None=6]="None"}(e||(e={}));class f{constructor(){}log(t,e){}}f.instance=new f;const p="6.0.0";class w{static isRequired(t,e){if(null==t)throw new Error(`The '${e}' argument is required.`)}static isNotEmpty(t,e){if(!t||t.match(/^\s*$/))throw new Error(`The '${e}' argument should not be empty.`)}static isIn(t,e,s){if(!(t in e))throw new Error(`Unknown ${s} value: ${t}.`)}}class g{static get isBrowser(){return"object"==typeof window}static get isWebWorker(){return"object"==typeof self&&"importScripts"in self}static get isNode(){return!this.isBrowser&&!this.isWebWorker}}function m(t,e){let s="";return y(t)?(s=`Binary data of length ${t.byteLength}`,e&&(s+=`. Content: '${function(t){const e=new Uint8Array(t);let s="";return e.forEach((t=>{s+=`0x${t<16?"0":""}${t.toString(16)} `})),s.substr(0,s.length-1)}(t)}'`)):"string"==typeof t&&(s=`String data of length ${t.length}`,e&&(s+=`. Content: '${t}'`)),s}function y(t){return t&&"undefined"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&"ArrayBuffer"===t.constructor.name)}async function b(t,s,n,i,r,o,h){let c={};if(r){const t=await r();t&&(c={Authorization:`Bearer ${t}`})}const[a,l]=$();c[a]=l,t.log(e.Trace,`(${s} transport) sending data. ${m(o,h.logMessageContent)}.`);const u=y(o)?"arraybuffer":"text",d=await n.post(i,{content:o,headers:{...c,...h.headers},responseType:u,timeout:h.timeout,withCredentials:h.withCredentials});t.log(e.Trace,`(${s} transport) request complete. Response status: ${d.statusCode}.`)}class v{constructor(t,e){this.i=t,this.h=e}dispose(){const t=this.i.observers.indexOf(this.h);t>-1&&this.i.observers.splice(t,1),0===this.i.observers.length&&this.i.cancelCallback&&this.i.cancelCallback().catch((t=>{}))}}class E{constructor(t){this.l=t,this.out=console}log(t,s){if(t>=this.l){const n=`[${(new Date).toISOString()}] ${e[t]}: ${s}`;switch(t){case e.Critical:case e.Error:this.out.error(n);break;case e.Warning:this.out.warn(n);break;case e.Information:this.out.info(n);break;default:this.out.log(n)}}}}function $(){let t="X-SignalR-User-Agent";return g.isNode&&(t="User-Agent"),[t,C(p,S(),g.isNode?"NodeJS":"Browser",k())]}function C(t,e,s,n){let i="Microsoft SignalR/";const r=t.split(".");return i+=`${r[0]}.${r[1]}`,i+=` (${t}; `,i+=e&&""!==e?`${e}; `:"Unknown OS; ",i+=`${s}`,i+=n?`; ${n}`:"; Unknown Runtime Version",i+=")",i}function S(){if(!g.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function k(){if(g.isNode)return process.versions.node}function P(t){return t.stack?t.stack:t.message?t.message:`${t}`}class T extends d{constructor(e){if(super(),this.u=e,"undefined"==typeof fetch){const t=require;this.p=new(t("tough-cookie").CookieJar),this.m=t("node-fetch"),this.m=t("fetch-cookie")(this.m,this.p)}else this.m=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==t.g)return t.g;throw new Error("could not find global")}());if("undefined"==typeof AbortController){const t=require;this.v=t("abort-controller")}else this.v=AbortController}async send(t){if(t.abortSignal&&t.abortSignal.aborted)throw new r;if(!t.method)throw new Error("No method defined.");if(!t.url)throw new Error("No url defined.");const s=new this.v;let o;t.abortSignal&&(t.abortSignal.onabort=()=>{s.abort(),o=new r});let h,c=null;if(t.timeout){const n=t.timeout;c=setTimeout((()=>{s.abort(),this.u.log(e.Warning,"Timeout from HTTP request."),o=new i}),n)}try{h=await this.m(t.url,{body:t.content,cache:"no-cache",credentials:!0===t.withCredentials?"include":"same-origin",headers:{"Content-Type":"text/plain;charset=UTF-8","X-Requested-With":"XMLHttpRequest",...t.headers},method:t.method,mode:"cors",redirect:"follow",signal:s.signal})}catch(t){if(o)throw o;throw this.u.log(e.Warning,`Error from HTTP request. ${t}.`),t}finally{c&&clearTimeout(c),t.abortSignal&&(t.abortSignal.onabort=null)}if(!h.ok){const t=await I(h,"text");throw new n(t||h.statusText,h.status)}const a=I(h,t.responseType),l=await a;return new u(h.status,h.statusText,l)}getCookieString(t){let e="";return g.isNode&&this.p&&this.p.getCookies(t,((t,s)=>e=s.join("; "))),e}}function I(t,e){let s;switch(e){case"arraybuffer":s=t.arrayBuffer();break;case"text":s=t.text();break;case"blob":case"document":case"json":throw new Error(`${e} is not supported.`);default:s=t.text()}return s}class _ extends d{constructor(t){super(),this.u=t}send(t){return t.abortSignal&&t.abortSignal.aborted?Promise.reject(new r):t.method?t.url?new Promise(((s,o)=>{const h=new XMLHttpRequest;h.open(t.method,t.url,!0),h.withCredentials=void 0===t.withCredentials||t.withCredentials,h.setRequestHeader("X-Requested-With","XMLHttpRequest"),h.setRequestHeader("Content-Type","text/plain;charset=UTF-8");const c=t.headers;c&&Object.keys(c).forEach((t=>{h.setRequestHeader(t,c[t])})),t.responseType&&(h.responseType=t.responseType),t.abortSignal&&(t.abortSignal.onabort=()=>{h.abort(),o(new r)}),t.timeout&&(h.timeout=t.timeout),h.onload=()=>{t.abortSignal&&(t.abortSignal.onabort=null),h.status>=200&&h.status<300?s(new u(h.status,h.statusText,h.response||h.responseText)):o(new n(h.response||h.responseText||h.statusText,h.status))},h.onerror=()=>{this.u.log(e.Warning,`Error from HTTP request. ${h.status}: ${h.statusText}.`),o(new n(h.statusText,h.status))},h.ontimeout=()=>{this.u.log(e.Warning,"Timeout from HTTP request."),o(new i)},h.send(t.content||"")})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class H extends d{constructor(t){if(super(),"undefined"!=typeof fetch||g.isNode)this.$=new T(t);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this.$=new _(t)}}send(t){return t.abortSignal&&t.abortSignal.aborted?Promise.reject(new r):t.method?t.url?this.$.send(t):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(t){return this.$.getCookieString(t)}}class D{static write(t){return`${t}${D.RecordSeparator}`}static parse(t){if(t[t.length-1]!==D.RecordSeparator)throw new Error("Message is incomplete.");const e=t.split(D.RecordSeparator);return e.pop(),e}}D.RecordSeparatorCode=30,D.RecordSeparator=String.fromCharCode(D.RecordSeparatorCode);class x{writeHandshakeRequest(t){return D.write(JSON.stringify(t))}parseHandshakeResponse(t){let e,s;if(y(t)){const n=new Uint8Array(t),i=n.indexOf(D.RecordSeparatorCode);if(-1===i)throw new Error("Message is incomplete.");const r=i+1;e=String.fromCharCode.apply(null,Array.prototype.slice.call(n.slice(0,r))),s=n.byteLength>r?n.slice(r).buffer:null}else{const n=t,i=n.indexOf(D.RecordSeparator);if(-1===i)throw new Error("Message is incomplete.");const r=i+1;e=n.substring(0,r),s=n.length>r?n.substring(r):null}const n=D.parse(e),i=JSON.parse(n[0]);if(i.type)throw new Error("Expected a handshake response from the server.");return[s,i]}}var A,R;!function(t){t[t.Invocation=1]="Invocation",t[t.StreamItem=2]="StreamItem",t[t.Completion=3]="Completion",t[t.StreamInvocation=4]="StreamInvocation",t[t.CancelInvocation=5]="CancelInvocation",t[t.Ping=6]="Ping",t[t.Close=7]="Close"}(A||(A={}));class U{constructor(){this.observers=[]}next(t){for(const e of this.observers)e.next(t)}error(t){for(const e of this.observers)e.error&&e.error(t)}complete(){for(const t of this.observers)t.complete&&t.complete()}subscribe(t){return this.observers.push(t),new v(this,t)}}!function(t){t.Disconnected="Disconnected",t.Connecting="Connecting",t.Connected="Connected",t.Disconnecting="Disconnecting",t.Reconnecting="Reconnecting"}(R||(R={}));class L{constructor(t,s,n,i){this.C=0,this.S=()=>{this.u.log(e.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://docs.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},w.isRequired(t,"connection"),w.isRequired(s,"logger"),w.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=3e4,this.keepAliveIntervalInMilliseconds=15e3,this.u=s,this.k=n,this.connection=t,this.P=i,this.T=new x,this.connection.onreceive=t=>this.I(t),this.connection.onclose=t=>this._(t),this.H={},this.D={},this.A=[],this.R=[],this.U=[],this.L=0,this.N=!1,this.q=R.Disconnected,this.M=!1,this.W=this.k.writeMessage({type:A.Ping})}static create(t,e,s,n){return new L(t,e,s,n)}get state(){return this.q}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(t){if(this.q!==R.Disconnected&&this.q!==R.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!t)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=t}start(){return this.O=this.j(),this.O}async j(){if(this.q!==R.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this.q=R.Connecting,this.u.log(e.Debug,"Starting HubConnection.");try{await this.F(),g.isBrowser&&document&&document.addEventListener("freeze",this.S),this.q=R.Connected,this.M=!0,this.u.log(e.Debug,"HubConnection connected successfully.")}catch(t){return this.q=R.Disconnected,this.u.log(e.Debug,`HubConnection failed to start successfully because of error '${t}'.`),Promise.reject(t)}}async F(){this.B=void 0,this.N=!1;const t=new Promise(((t,e)=>{this.X=t,this.J=e}));await this.connection.start(this.k.transferFormat);try{const s={protocol:this.k.name,version:this.k.version};if(this.u.log(e.Debug,"Sending handshake request."),await this.V(this.T.writeHandshakeRequest(s)),this.u.log(e.Information,`Using HubProtocol '${this.k.name}'.`),this.G(),this.K(),this.Y(),await t,this.B)throw this.B}catch(t){throw this.u.log(e.Debug,`Hub handshake failed with error '${t}' during start(). Stopping HubConnection.`),this.G(),this.Z(),await this.connection.stop(t),t}}async stop(){const t=this.O;this.tt=this.et(),await this.tt;try{await t}catch(t){}}et(t){return this.q===R.Disconnected?(this.u.log(e.Debug,`Call to HubConnection.stop(${t}) ignored because it is already in the disconnected state.`),Promise.resolve()):this.q===R.Disconnecting?(this.u.log(e.Debug,`Call to HttpConnection.stop(${t}) ignored because the connection is already in the disconnecting state.`),this.tt):(this.q=R.Disconnecting,this.u.log(e.Debug,"Stopping HubConnection."),this.st?(this.u.log(e.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this.st),this.st=void 0,this.nt(),Promise.resolve()):(this.G(),this.Z(),this.B=t||new Error("The connection was stopped before the hub handshake could complete."),this.connection.stop(t)))}stream(t,...e){const[s,n]=this.it(e),i=this.rt(t,e,n);let r;const o=new U;return o.cancelCallback=()=>{const t=this.ot(i.invocationId);return delete this.H[i.invocationId],r.then((()=>this.ht(t)))},this.H[i.invocationId]=(t,e)=>{e?o.error(e):t&&(t.type===A.Completion?t.error?o.error(new Error(t.error)):o.complete():o.next(t.item))},r=this.ht(i).catch((t=>{o.error(t),delete this.H[i.invocationId]})),this.ct(s,r),o}V(t){return this.Y(),this.connection.send(t)}ht(t){return this.V(this.k.writeMessage(t))}send(t,...e){const[s,n]=this.it(e),i=this.ht(this.at(t,e,!0,n));return this.ct(s,i),i}invoke(t,...e){const[s,n]=this.it(e),i=this.at(t,e,!1,n);return new Promise(((t,e)=>{this.H[i.invocationId]=(s,n)=>{n?e(n):s&&(s.type===A.Completion?s.error?e(new Error(s.error)):t(s.result):e(new Error(`Unexpected message type: ${s.type}`)))};const n=this.ht(i).catch((t=>{e(t),delete this.H[i.invocationId]}));this.ct(s,n)}))}on(t,e){t&&e&&(t=t.toLowerCase(),this.D[t]||(this.D[t]=[]),-1===this.D[t].indexOf(e)&&this.D[t].push(e))}off(t,e){if(!t)return;t=t.toLowerCase();const s=this.D[t];if(s)if(e){const n=s.indexOf(e);-1!==n&&(s.splice(n,1),0===s.length&&delete this.D[t])}else delete this.D[t]}onclose(t){t&&this.A.push(t)}onreconnecting(t){t&&this.R.push(t)}onreconnected(t){t&&this.U.push(t)}I(t){if(this.G(),this.N||(t=this.lt(t),this.N=!0),t){const s=this.k.parseMessages(t,this.u);for(const t of s)switch(t.type){case A.Invocation:this.ut(t);break;case A.StreamItem:case A.Completion:{const s=this.H[t.invocationId];if(s){t.type===A.Completion&&delete this.H[t.invocationId];try{s(t)}catch(t){this.u.log(e.Error,`Stream callback threw error: ${P(t)}`)}}break}case A.Ping:break;case A.Close:{this.u.log(e.Information,"Close message received from server.");const s=t.error?new Error("Server returned an error on close: "+t.error):void 0;!0===t.allowReconnect?this.connection.stop(s):this.tt=this.et(s);break}default:this.u.log(e.Warning,`Invalid message type: ${t.type}.`)}}this.K()}lt(t){let s,n;try{[n,s]=this.T.parseHandshakeResponse(t)}catch(t){const s="Error parsing handshake response: "+t;this.u.log(e.Error,s);const n=new Error(s);throw this.J(n),n}if(s.error){const t="Server returned handshake error: "+s.error;this.u.log(e.Error,t);const n=new Error(t);throw this.J(n),n}return this.u.log(e.Debug,"Server handshake complete."),this.X(),n}Y(){this.connection.features.inherentKeepAlive||(this.C=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this.Z())}K(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this.dt=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this.ft))){let t=this.C-(new Date).getTime();t<0&&(t=0),this.ft=setTimeout((async()=>{if(this.q===R.Connected)try{await this.V(this.W)}catch{this.Z()}}),t)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}ut(t){const s=this.D[t.target.toLowerCase()];if(s){try{s.forEach((e=>e.apply(this,t.arguments)))}catch(s){this.u.log(e.Error,`A callback for the method ${t.target.toLowerCase()} threw error '${s}'.`)}if(t.invocationId){const t="Server requested a response, which is not supported in this version of the client.";this.u.log(e.Error,t),this.tt=this.et(new Error(t))}}else this.u.log(e.Warning,`No client method with the name '${t.target}' found.`)}_(t){this.u.log(e.Debug,`HubConnection.connectionClosed(${t}) called while in state ${this.q}.`),this.B=this.B||t||new Error("The underlying connection was closed before the hub handshake could complete."),this.X&&this.X(),this.wt(t||new Error("Invocation canceled due to the underlying connection being closed.")),this.G(),this.Z(),this.q===R.Disconnecting?this.nt(t):this.q===R.Connected&&this.P?this.gt(t):this.q===R.Connected&&this.nt(t)}nt(t){if(this.M){this.q=R.Disconnected,this.M=!1,g.isBrowser&&document&&document.removeEventListener("freeze",this.S);try{this.A.forEach((e=>e.apply(this,[t])))}catch(s){this.u.log(e.Error,`An onclose callback called with error '${t}' threw error '${s}'.`)}}}async gt(t){const s=Date.now();let n=0,i=void 0!==t?t:new Error("Attempting to reconnect due to a unknown error."),r=this.yt(n++,0,i);if(null===r)return this.u.log(e.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this.nt(t);if(this.q=R.Reconnecting,t?this.u.log(e.Information,`Connection reconnecting because of error '${t}'.`):this.u.log(e.Information,"Connection reconnecting."),0!==this.R.length){try{this.R.forEach((e=>e.apply(this,[t])))}catch(s){this.u.log(e.Error,`An onreconnecting callback called with error '${t}' threw error '${s}'.`)}if(this.q!==R.Reconnecting)return void this.u.log(e.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this.u.log(e.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((t=>{this.st=setTimeout(t,r)})),this.st=void 0,this.q!==R.Reconnecting)return void this.u.log(e.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this.F(),this.q=R.Connected,this.u.log(e.Information,"HubConnection reconnected successfully."),0!==this.U.length)try{this.U.forEach((t=>t.apply(this,[this.connection.connectionId])))}catch(t){this.u.log(e.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${t}'.`)}return}catch(t){if(this.u.log(e.Information,`Reconnect attempt failed because of error '${t}'.`),this.q!==R.Reconnecting)return this.u.log(e.Debug,`Connection moved to the '${this.q}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this.q===R.Disconnecting&&this.nt());i=t instanceof Error?t:new Error(t.toString()),r=this.yt(n++,Date.now()-s,i)}}this.u.log(e.Information,`Reconnect retries have been exhausted after ${Date.now()-s} ms and ${n} failed attempts. Connection disconnecting.`),this.nt()}yt(t,s,n){try{return this.P.nextRetryDelayInMilliseconds({elapsedMilliseconds:s,previousRetryCount:t,retryReason:n})}catch(n){return this.u.log(e.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${t}, ${s}) threw error '${n}'.`),null}}wt(t){const s=this.H;this.H={},Object.keys(s).forEach((n=>{const i=s[n];try{i(null,t)}catch(s){this.u.log(e.Error,`Stream 'error' callback called with '${t}' threw error: ${P(s)}`)}}))}Z(){this.ft&&(clearTimeout(this.ft),this.ft=void 0)}G(){this.dt&&clearTimeout(this.dt)}at(t,e,s,n){if(s)return 0!==n.length?{arguments:e,streamIds:n,target:t,type:A.Invocation}:{arguments:e,target:t,type:A.Invocation};{const s=this.L;return this.L++,0!==n.length?{arguments:e,invocationId:s.toString(),streamIds:n,target:t,type:A.Invocation}:{arguments:e,invocationId:s.toString(),target:t,type:A.Invocation}}}ct(t,e){if(0!==t.length){e||(e=Promise.resolve());for(const s in t)t[s].subscribe({complete:()=>{e=e.then((()=>this.ht(this.bt(s))))},error:t=>{let n;n=t instanceof Error?t.message:t&&t.toString?t.toString():"Unknown error",e=e.then((()=>this.ht(this.bt(s,n))))},next:t=>{e=e.then((()=>this.ht(this.vt(s,t))))}})}}it(t){const e=[],s=[];for(let n=0;n{let r,o=!1;if(s===O.Text){if(g.isBrowser||g.isWebWorker)r=new this.Pt.EventSource(t,{withCredentials:this.Pt.withCredentials});else{const e=this.$.getCookieString(t),s={};s.Cookie=e;const[n,i]=$();s[n]=i,r=new this.Pt.EventSource(t,{withCredentials:this.Pt.withCredentials,headers:{...s,...this.Pt.headers}})}try{r.onmessage=t=>{if(this.onreceive)try{this.u.log(e.Trace,`(SSE transport) data received. ${m(t.data,this.Pt.logMessageContent)}.`),this.onreceive(t.data)}catch(t){return void this.Ut(t)}},r.onerror=t=>{o?this.Ut():i(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this.u.log(e.Information,`SSE connected to ${this.It}`),this.Lt=r,o=!0,n()}}catch(t){return void i(t)}}else i(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(t){return this.Lt?b(this.u,"SSE",this.$,this.It,this.St,t,this.Pt):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this.Ut(),Promise.resolve()}Ut(t){this.Lt&&(this.Lt.close(),this.Lt=void 0,this.onclose&&this.onclose(t))}}class X{constructor(t,e,s,n,i,r){this.u=s,this.St=e,this.Nt=n,this.qt=i,this.$=t,this.onreceive=null,this.onclose=null,this.Mt=r}async connect(t,s){if(w.isRequired(t,"url"),w.isRequired(s,"transferFormat"),w.isIn(s,O,"transferFormat"),this.u.log(e.Trace,"(WebSockets transport) Connecting."),this.St){const e=await this.St();e&&(t+=(t.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(e)}`)}return new Promise(((n,i)=>{let r;t=t.replace(/^http/,"ws");const o=this.$.getCookieString(t);let h=!1;if(g.isNode){const e={},[s,n]=$();e[s]=n,o&&(e[M.Cookie]=`${o}`),r=new this.qt(t,void 0,{headers:{...e,...this.Mt}})}r||(r=new this.qt(t)),s===O.Binary&&(r.binaryType="arraybuffer"),r.onopen=s=>{this.u.log(e.Information,`WebSocket connected to ${t}.`),this.Wt=r,h=!0,n()},r.onerror=t=>{let s=null;s="undefined"!=typeof ErrorEvent&&t instanceof ErrorEvent?t.error:"There was an error with the transport",this.u.log(e.Information,`(WebSockets transport) ${s}.`)},r.onmessage=t=>{if(this.u.log(e.Trace,`(WebSockets transport) data received. ${m(t.data,this.Nt)}.`),this.onreceive)try{this.onreceive(t.data)}catch(t){return void this.Ut(t)}},r.onclose=t=>{if(h)this.Ut(t);else{let e=null;e="undefined"!=typeof ErrorEvent&&t instanceof ErrorEvent?t.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",i(new Error(e))}}}))}send(t){return this.Wt&&this.Wt.readyState===this.qt.OPEN?(this.u.log(e.Trace,`(WebSockets transport) sending data. ${m(t,this.Nt)}.`),this.Wt.send(t),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this.Wt&&this.Ut(void 0),Promise.resolve()}Ut(t){this.Wt&&(this.Wt.onclose=()=>{},this.Wt.onmessage=()=>{},this.Wt.onerror=()=>{},this.Wt.close(),this.Wt=void 0),this.u.log(e.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this.Ot(t)||!1!==t.wasClean&&1e3===t.code?t instanceof Error?this.onclose(t):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${t.code} (${t.reason||"no reason given"}).`)))}Ot(t){return t&&"boolean"==typeof t.wasClean&&"number"==typeof t.code}}class J{constructor(t,s={}){var n;if(this.jt=()=>{},this.features={},this.Ft=1,w.isRequired(t,"url"),this.u=void 0===(n=s.logger)?new E(e.Information):null===n?f.instance:void 0!==n.log?n:new E(n),this.baseUrl=this.Bt(t),(s=s||{}).logMessageContent=void 0!==s.logMessageContent&&s.logMessageContent,"boolean"!=typeof s.withCredentials&&void 0!==s.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");s.withCredentials=void 0===s.withCredentials||s.withCredentials,s.timeout=void 0===s.timeout?1e5:s.timeout;let i=null,r=null;if(g.isNode){const t=require;i=t("ws"),r=t("eventsource")}g.isNode||"undefined"==typeof WebSocket||s.WebSocket?g.isNode&&!s.WebSocket&&i&&(s.WebSocket=i):s.WebSocket=WebSocket,g.isNode||"undefined"==typeof EventSource||s.EventSource?g.isNode&&!s.EventSource&&void 0!==r&&(s.EventSource=r):s.EventSource=EventSource,this.$=s.httpClient||new H(this.u),this.q="Disconnected",this.M=!1,this.Pt=s,this.onreceive=null,this.onclose=null}async start(t){if(t=t||O.Binary,w.isIn(t,O,"transferFormat"),this.u.log(e.Debug,`Starting connection with transfer format '${O[t]}'.`),"Disconnected"!==this.q)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this.q="Connecting",this.Xt=this.F(t),await this.Xt,"Disconnecting"===this.q){const t="Failed to start the HttpConnection before stop() was called.";return this.u.log(e.Error,t),await this.tt,Promise.reject(new Error(t))}if("Connected"!==this.q){const t="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this.u.log(e.Error,t),Promise.reject(new Error(t))}this.M=!0}send(t){return"Connected"!==this.q?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this.Jt||(this.Jt=new z(this.transport)),this.Jt.send(t))}async stop(t){return"Disconnected"===this.q?(this.u.log(e.Debug,`Call to HttpConnection.stop(${t}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this.q?(this.u.log(e.Debug,`Call to HttpConnection.stop(${t}) ignored because the connection is already in the disconnecting state.`),this.tt):(this.q="Disconnecting",this.tt=new Promise((t=>{this.jt=t})),await this.et(t),void await this.tt)}async et(t){this.zt=t;try{await this.Xt}catch(t){}if(this.transport){try{await this.transport.stop()}catch(t){this.u.log(e.Error,`HttpConnection.transport.stop() threw error '${t}'.`),this.Vt()}this.transport=void 0}else this.u.log(e.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async F(t){let s=this.baseUrl;this.St=this.Pt.accessTokenFactory;try{if(this.Pt.skipNegotiation){if(this.Pt.transport!==W.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this.Gt(W.WebSockets),await this.Kt(s,t)}else{let e=null,n=0;do{if(e=await this.Qt(s),"Disconnecting"===this.q||"Disconnected"===this.q)throw new Error("The connection was stopped during negotiation.");if(e.error)throw new Error(e.error);if(e.ProtocolVersion)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.");if(e.url&&(s=e.url),e.accessToken){const t=e.accessToken;this.St=()=>t}n++}while(e.url&&n<100);if(100===n&&e.url)throw new Error("Negotiate redirection limit exceeded.");await this.Yt(s,this.Pt.transport,e,t)}this.transport instanceof F&&(this.features.inherentKeepAlive=!0),"Connecting"===this.q&&(this.u.log(e.Debug,"The HttpConnection connected successfully."),this.q="Connected")}catch(t){return this.u.log(e.Error,"Failed to start the connection: "+t),this.q="Disconnected",this.transport=void 0,this.jt(),Promise.reject(t)}}async Qt(t){const s={};if(this.St){const t=await this.St();t&&(s[M.Authorization]=`Bearer ${t}`)}const[i,r]=$();s[i]=r;const o=this.Zt(t);this.u.log(e.Debug,`Sending negotiation request: ${o}.`);try{const t=await this.$.post(o,{content:"",headers:{...s,...this.Pt.headers},timeout:this.Pt.timeout,withCredentials:this.Pt.withCredentials});if(200!==t.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${t.statusCode}'`));const e=JSON.parse(t.content);return(!e.negotiateVersion||e.negotiateVersion<1)&&(e.connectionToken=e.connectionId),e}catch(t){let s="Failed to complete negotiation with the server: "+t;return t instanceof n&&404===t.statusCode&&(s+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this.u.log(e.Error,s),Promise.reject(new a(s))}}te(t,e){return e?t+(-1===t.indexOf("?")?"?":"&")+`id=${e}`:t}async Yt(t,s,n,i){let r=this.te(t,n.connectionToken);if(this.ee(s))return this.u.log(e.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=s,await this.Kt(r,i),void(this.connectionId=n.connectionId);const o=[],h=n.availableTransports||[];let a=n;for(const n of h){const h=this.se(n,s,i);if(h instanceof Error)o.push(`${n.transport} failed:`),o.push(h);else if(this.ee(h)){if(this.transport=h,!a){try{a=await this.Qt(t)}catch(t){return Promise.reject(t)}r=this.te(t,a.connectionToken)}try{return await this.Kt(r,i),void(this.connectionId=a.connectionId)}catch(t){if(this.u.log(e.Error,`Failed to start the transport '${n.transport}': ${t}`),a=void 0,o.push(new c(`${n.transport} failed: ${t}`,W[n.transport])),"Connecting"!==this.q){const t="Failed to select transport before stop() was called.";return this.u.log(e.Debug,t),Promise.reject(new Error(t))}}}}return o.length>0?Promise.reject(new l(`Unable to connect to the server with any of the available transports. ${o.join(" ")}`,o)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}Gt(t){switch(t){case W.WebSockets:if(!this.Pt.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new X(this.$,this.St,this.u,this.Pt.logMessageContent,this.Pt.WebSocket,this.Pt.headers||{});case W.ServerSentEvents:if(!this.Pt.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new B(this.$,this.St,this.u,this.Pt);case W.LongPolling:return new F(this.$,this.St,this.u,this.Pt);default:throw new Error(`Unknown transport: ${t}.`)}}Kt(t,e){return this.transport.onreceive=this.onreceive,this.transport.onclose=t=>this.Vt(t),this.transport.connect(t,e)}se(t,s,n){const i=W[t.transport];if(null==i)return this.u.log(e.Debug,`Skipping transport '${t.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${t.transport}' because it is not supported by this client.`);if(!function(t,e){return!t||0!=(e&t)}(s,i))return this.u.log(e.Debug,`Skipping transport '${W[i]}' because it was disabled by the client.`),new h(`'${W[i]}' is disabled by the client.`,i);if(!(t.transferFormats.map((t=>O[t])).indexOf(n)>=0))return this.u.log(e.Debug,`Skipping transport '${W[i]}' because it does not support the requested transfer format '${O[n]}'.`),new Error(`'${W[i]}' does not support ${O[n]}.`);if(i===W.WebSockets&&!this.Pt.WebSocket||i===W.ServerSentEvents&&!this.Pt.EventSource)return this.u.log(e.Debug,`Skipping transport '${W[i]}' because it is not supported in your environment.'`),new o(`'${W[i]}' is not supported in your environment.`,i);this.u.log(e.Debug,`Selecting transport '${W[i]}'.`);try{return this.Gt(i)}catch(t){return t}}ee(t){return t&&"object"==typeof t&&"connect"in t}Vt(t){if(this.u.log(e.Debug,`HttpConnection.stopConnection(${t}) called while in state ${this.q}.`),this.transport=void 0,t=this.zt||t,this.zt=void 0,"Disconnected"!==this.q){if("Connecting"===this.q)throw this.u.log(e.Warning,`Call to HttpConnection.stopConnection(${t}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${t}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this.q&&this.jt(),t?this.u.log(e.Error,`Connection disconnected with error '${t}'.`):this.u.log(e.Information,"Connection disconnected."),this.Jt&&(this.Jt.stop().catch((t=>{this.u.log(e.Error,`TransportSendQueue.stop() threw error '${t}'.`)})),this.Jt=void 0),this.connectionId=void 0,this.q="Disconnected",this.M){this.M=!1;try{this.onclose&&this.onclose(t)}catch(s){this.u.log(e.Error,`HttpConnection.onclose(${t}) threw error '${s}'.`)}}}else this.u.log(e.Debug,`Call to HttpConnection.stopConnection(${t}) was ignored because the connection is already in the disconnected state.`)}Bt(t){if(0===t.lastIndexOf("https://",0)||0===t.lastIndexOf("http://",0))return t;if(!g.isBrowser||!window.document)throw new Error(`Cannot resolve '${t}'.`);const s=window.document.createElement("a");return s.href=t,this.u.log(e.Information,`Normalizing '${t}' to '${s.href}'.`),s.href}Zt(t){const e=t.indexOf("?");let s=t.substring(0,-1===e?t.length:e);return"/"!==s[s.length-1]&&(s+="/"),s+="negotiate",s+=-1===e?"":t.substring(e),-1===s.indexOf("negotiateVersion")&&(s+=-1===e?"?":"&",s+="negotiateVersion="+this.Ft),s}}class z{constructor(t){this.ne=t,this.ie=[],this.re=!0,this.oe=new V,this.he=new V,this.ce=this.ae()}send(t){return this.le(t),this.he||(this.he=new V),this.he.promise}stop(){return this.re=!1,this.oe.resolve(),this.ce}le(t){if(this.ie.length&&typeof this.ie[0]!=typeof t)throw new Error(`Expected data to be of type ${typeof this.ie} but was of type ${typeof t}`);this.ie.push(t),this.oe.resolve()}async ae(){for(;;){if(await this.oe.promise,!this.re){this.he&&this.he.reject("Connection stopped.");break}this.oe=new V;const t=this.he;this.he=void 0;const e="string"==typeof this.ie[0]?this.ie.join(""):z.ue(this.ie);this.ie.length=0;try{await this.ne.send(e),t.resolve()}catch(e){t.reject(e)}}}static ue(t){const e=t.map((t=>t.byteLength)).reduce(((t,e)=>t+e)),s=new Uint8Array(e);let n=0;for(const e of t)s.set(new Uint8Array(e),n),n+=e.byteLength;return s.buffer}}class V{constructor(){this.promise=new Promise(((t,e)=>[this.de,this.fe]=[t,e]))}resolve(){this.de()}reject(t){this.fe(t)}}class G{constructor(){this.name="json",this.version=1,this.transferFormat=O.Text}parseMessages(t,s){if("string"!=typeof t)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!t)return[];null===s&&(s=f.instance);const n=D.parse(t),i=[];for(const t of n){const n=JSON.parse(t);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case A.Invocation:this.pe(n);break;case A.StreamItem:this.we(n);break;case A.Completion:this.ge(n);break;case A.Ping:case A.Close:break;default:s.log(e.Information,"Unknown message type '"+n.type+"' ignored.");continue}i.push(n)}return i}writeMessage(t){return D.write(JSON.stringify(t))}pe(t){this.me(t.target,"Invalid payload for Invocation message."),void 0!==t.invocationId&&this.me(t.invocationId,"Invalid payload for Invocation message.")}we(t){if(this.me(t.invocationId,"Invalid payload for StreamItem message."),void 0===t.item)throw new Error("Invalid payload for StreamItem message.")}ge(t){if(t.result&&t.error)throw new Error("Invalid payload for Completion message.");!t.result&&t.error&&this.me(t.error,"Invalid payload for Completion message."),this.me(t.invocationId,"Invalid payload for Completion message.")}me(t,e){if("string"!=typeof t||""===t)throw new Error(e)}}const K={trace:e.Trace,debug:e.Debug,info:e.Information,information:e.Information,warn:e.Warning,warning:e.Warning,error:e.Error,critical:e.Critical,none:e.None};class Q{configureLogging(t){if(w.isRequired(t,"logging"),void 0!==t.log)this.logger=t;else if("string"==typeof t){const e=function(t){const e=K[t.toLowerCase()];if(void 0!==e)return e;throw new Error(`Unknown log level: ${t}`)}(t);this.logger=new E(e)}else this.logger=new E(t);return this}withUrl(t,e){return w.isRequired(t,"url"),w.isNotEmpty(t,"url"),this.url=t,this.httpConnectionOptions="object"==typeof e?{...this.httpConnectionOptions,...e}:{...this.httpConnectionOptions,transport:e},this}withHubProtocol(t){return w.isRequired(t,"protocol"),this.protocol=t,this}withAutomaticReconnect(t){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return t?Array.isArray(t)?this.reconnectPolicy=new q(t):this.reconnectPolicy=t:this.reconnectPolicy=new q,this}build(){const t=this.httpConnectionOptions||{};if(void 0===t.logger&&(t.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const e=new J(this.url,t);return L.create(e,this.logger||f.instance,this.protocol||new G,this.reconnectPolicy)}}return Uint8Array.prototype.indexOf||Object.defineProperty(Uint8Array.prototype,"indexOf",{value:Array.prototype.indexOf,writable:!0}),Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,"slice",{value:function(t,e){return new Uint8Array(Array.prototype.slice.call(this,t,e))},writable:!0}),Uint8Array.prototype.forEach||Object.defineProperty(Uint8Array.prototype,"forEach",{value:Array.prototype.forEach,writable:!0}),s})()},"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.signalR=e():t.signalR=e();
//# sourceMappingURL=signalr.js.map
\ No newline at end of file
diff --git a/Server/wwwroot/lib/microsoft-signalr/signalr.min.js b/Server/wwwroot/lib/microsoft-signalr/signalr.min.js
index a010f8b1..504d89c4 100644
--- a/Server/wwwroot/lib/microsoft-signalr/signalr.min.js
+++ b/Server/wwwroot/lib/microsoft-signalr/signalr.min.js
@@ -1,17 +1,2 @@
-(function webpackUniversalModuleDefinition(root,factory){if(typeof exports==="object"&&typeof module==="object")module.exports=factory();else if(typeof define==="function"&&define.amd)define([],factory);else if(typeof exports==="object")exports["signalR"]=factory();else root["signalR"]=factory()})(window,function(){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{enumerable:true,get:getter})}};__webpack_require__.r=function(exports){if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(exports,"__esModule",{value:true})};__webpack_require__.t=function(value,mode){if(mode&1)value=__webpack_require__(value);if(mode&8)return value;if(mode&4&&typeof value==="object"&&value&&value.__esModule)return value;var ns=Object.create(null);__webpack_require__.r(ns);Object.defineProperty(ns,"default",{enumerable:true,value:value});if(mode&2&&typeof value!="string")for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key]}.bind(null,key));return ns};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module["default"]}:function getModuleExports(){return module};__webpack_require__.d(getter,"a",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=0)}([function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);var es6_promise_dist_es6_promise_auto_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(1);var es6_promise_dist_es6_promise_auto_js__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(es6_promise_dist_es6_promise_auto_js__WEBPACK_IMPORTED_MODULE_0__);var _index__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(3);__webpack_require__.d(__webpack_exports__,"AbortError",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["AbortError"]});__webpack_require__.d(__webpack_exports__,"HttpError",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["HttpError"]});__webpack_require__.d(__webpack_exports__,"TimeoutError",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["TimeoutError"]});__webpack_require__.d(__webpack_exports__,"HttpClient",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["HttpClient"]});__webpack_require__.d(__webpack_exports__,"HttpResponse",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["HttpResponse"]});__webpack_require__.d(__webpack_exports__,"DefaultHttpClient",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["DefaultHttpClient"]});__webpack_require__.d(__webpack_exports__,"HubConnection",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["HubConnection"]});__webpack_require__.d(__webpack_exports__,"HubConnectionState",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["HubConnectionState"]});__webpack_require__.d(__webpack_exports__,"HubConnectionBuilder",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["HubConnectionBuilder"]});__webpack_require__.d(__webpack_exports__,"MessageType",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["MessageType"]});__webpack_require__.d(__webpack_exports__,"LogLevel",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["LogLevel"]});__webpack_require__.d(__webpack_exports__,"HttpTransportType",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["HttpTransportType"]});__webpack_require__.d(__webpack_exports__,"TransferFormat",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["TransferFormat"]});__webpack_require__.d(__webpack_exports__,"NullLogger",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["NullLogger"]});__webpack_require__.d(__webpack_exports__,"JsonHubProtocol",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["JsonHubProtocol"]});__webpack_require__.d(__webpack_exports__,"Subject",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["Subject"]});__webpack_require__.d(__webpack_exports__,"VERSION",function(){return _index__WEBPACK_IMPORTED_MODULE_1__["VERSION"]});if(!Uint8Array.prototype.indexOf){Object.defineProperty(Uint8Array.prototype,"indexOf",{value:Array.prototype.indexOf,writable:true})}if(!Uint8Array.prototype.slice){Object.defineProperty(Uint8Array.prototype,"slice",{value:function(start,end){return new Uint8Array(Array.prototype.slice.call(this,start,end))},writable:true})}if(!Uint8Array.prototype.forEach){Object.defineProperty(Uint8Array.prototype,"forEach",{value:Array.prototype.forEach,writable:true})}},function(module,exports,__webpack_require__){(function(global){var require;
-/*!
- * @overview es6-promise - a tiny implementation of Promises/A+.
- * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
- * @license Licensed under MIT license
- * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
- * @version v4.2.2+97478eb6
- */
-/*!
- * @overview es6-promise - a tiny implementation of Promises/A+.
- * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
- * @license Licensed under MIT license
- * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
- * @version v4.2.2+97478eb6
- */
-(function(global,factory){true?module.exports=factory():undefined})(this,function(){"use strict";function objectOrFunction(x){var type=typeof x;return x!==null&&(type==="object"||type==="function")}function isFunction(x){return typeof x==="function"}var _isArray=void 0;if(Array.isArray){_isArray=Array.isArray}else{_isArray=function(x){return Object.prototype.toString.call(x)==="[object Array]"}}var isArray=_isArray;var len=0;var vertxNext=void 0;var customSchedulerFn=void 0;var asap=function asap(callback,arg){queue[len]=callback;queue[len+1]=arg;len+=2;if(len===2){if(customSchedulerFn){customSchedulerFn(flush)}else{scheduleFlush()}}};function setScheduler(scheduleFn){customSchedulerFn=scheduleFn}function setAsap(asapFn){asap=asapFn}var browserWindow=typeof window!=="undefined"?window:undefined;var browserGlobal=browserWindow||{};var BrowserMutationObserver=browserGlobal.MutationObserver||browserGlobal.WebKitMutationObserver;var isNode=typeof self==="undefined"&&typeof process!=="undefined"&&{}.toString.call(process)==="[object process]";var isWorker=typeof Uint8ClampedArray!=="undefined"&&typeof importScripts!=="undefined"&&typeof MessageChannel!=="undefined";function useNextTick(){return function(){return process.nextTick(flush)}}function useVertxTimer(){if(typeof vertxNext!=="undefined"){return function(){vertxNext(flush)}}return useSetTimeout()}function useMutationObserver(){var iterations=0;var observer=new BrowserMutationObserver(flush);var node=document.createTextNode("");observer.observe(node,{characterData:true});return function(){node.data=iterations=++iterations%2}}function useMessageChannel(){var channel=new MessageChannel;channel.port1.onmessage=flush;return function(){return channel.port2.postMessage(0)}}function useSetTimeout(){var globalSetTimeout=setTimeout;return function(){return globalSetTimeout(flush,1)}}var queue=new Array(1e3);function flush(){for(var i=0;i0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]-1){this.subject.observers.splice(index,1)}if(this.subject.observers.length===0&&this.subject.cancelCallback){this.subject.cancelCallback().catch(function(_){})}};return SubjectSubscription}();var ConsoleLogger=function(){function ConsoleLogger(minimumLogLevel){this.minimumLogLevel=minimumLogLevel;this.outputConsole=console}ConsoleLogger.prototype.log=function(logLevel,message){if(logLevel>=this.minimumLogLevel){switch(logLevel){case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Critical:case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Error:this.outputConsole.error("["+(new Date).toISOString()+"] "+_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel]+": "+message);break;case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Warning:this.outputConsole.warn("["+(new Date).toISOString()+"] "+_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel]+": "+message);break;case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Information:this.outputConsole.info("["+(new Date).toISOString()+"] "+_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel]+": "+message);break;default:this.outputConsole.log("["+(new Date).toISOString()+"] "+_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel]+": "+message);break}}};return ConsoleLogger}();function getUserAgentHeader(){var userAgentHeaderName="X-SignalR-User-Agent";if(Platform.isNode){userAgentHeaderName="User-Agent"}return[userAgentHeaderName,constructUserAgent(VERSION,getOsName(),getRuntime(),getRuntimeVersion())]}function constructUserAgent(version,os,runtime,runtimeVersion){var userAgent="Microsoft SignalR/";var majorAndMinor=version.split(".");userAgent+=majorAndMinor[0]+"."+majorAndMinor[1];userAgent+=" ("+version+"; ";if(os&&os!==""){userAgent+=os+"; "}else{userAgent+="Unknown OS; "}userAgent+=""+runtime;if(runtimeVersion){userAgent+="; "+runtimeVersion}else{userAgent+="; Unknown Runtime Version"}userAgent+=")";return userAgent}function getOsName(){if(Platform.isNode){switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}else{return""}}function getRuntimeVersion(){if(Platform.isNode){return process.versions.node}return undefined}function getRuntime(){if(Platform.isNode){return"NodeJS"}else{return"Browser"}}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"NullLogger",function(){return NullLogger});var NullLogger=function(){function NullLogger(){}NullLogger.prototype.log=function(_logLevel,_message){};NullLogger.instance=new NullLogger;return NullLogger}()},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"XhrHttpClient",function(){return XhrHttpClient});var _Errors__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(4);var _HttpClient__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(5);var _ILogger__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(8);var __extends=undefined&&undefined.__extends||function(){var extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(b.hasOwnProperty(p))d[p]=b[p]};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();var XhrHttpClient=function(_super){__extends(XhrHttpClient,_super);function XhrHttpClient(logger){var _this=_super.call(this)||this;_this.logger=logger;return _this}XhrHttpClient.prototype.send=function(request){var _this=this;if(request.abortSignal&&request.abortSignal.aborted){return Promise.reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"])}if(!request.method){return Promise.reject(new Error("No method defined."))}if(!request.url){return Promise.reject(new Error("No url defined."))}return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open(request.method,request.url,true);xhr.withCredentials=request.withCredentials===undefined?true:request.withCredentials;xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Content-Type","text/plain;charset=UTF-8");var headers=request.headers;if(headers){Object.keys(headers).forEach(function(header){xhr.setRequestHeader(header,headers[header])})}if(request.responseType){xhr.responseType=request.responseType}if(request.abortSignal){request.abortSignal.onabort=function(){xhr.abort();reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"])}}if(request.timeout){xhr.timeout=request.timeout}xhr.onload=function(){if(request.abortSignal){request.abortSignal.onabort=null}if(xhr.status>=200&&xhr.status<300){resolve(new _HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpResponse"](xhr.status,xhr.statusText,xhr.response||xhr.responseText))}else{reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["HttpError"](xhr.statusText,xhr.status))}};xhr.onerror=function(){_this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning,"Error from HTTP request. "+xhr.status+": "+xhr.statusText+".");reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["HttpError"](xhr.statusText,xhr.status))};xhr.ontimeout=function(){_this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning,"Timeout from HTTP request.");reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["TimeoutError"])};xhr.send(request.content||"")})};return XhrHttpClient}(_HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpClient"])},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"HubConnectionState",function(){return HubConnectionState});__webpack_require__.d(__webpack_exports__,"HubConnection",function(){return HubConnection});var _HandshakeProtocol__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(13);var _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(15);var _ILogger__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(8);var _Subject__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(16);var _Utils__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(9);var __awaiter=undefined&&undefined.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):new P(function(resolve){resolve(result.value)}).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};var __generator=undefined&&undefined.__generator||function(thisArg,body){var _={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},f,y,t,g;return g={next:verb(0),throw:verb(1),return:verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]responseLength?binaryData.slice(responseLength).buffer:null}else{var textData=data;var separatorIndex=textData.indexOf(_TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__["TextMessageFormat"].RecordSeparator);if(separatorIndex===-1){throw new Error("Message is incomplete.")}var responseLength=separatorIndex+1;messageData=textData.substring(0,responseLength);remainingData=textData.length>responseLength?textData.substring(responseLength):null}var messages=_TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__["TextMessageFormat"].parse(messageData);var response=JSON.parse(messages[0]);if(response.type){throw new Error("Expected a handshake response from the server.")}responseMessage=response;return[remainingData,responseMessage]};return HandshakeProtocol}()},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"TextMessageFormat",function(){return TextMessageFormat});var TextMessageFormat=function(){function TextMessageFormat(){}TextMessageFormat.write=function(output){return""+output+TextMessageFormat.RecordSeparator};TextMessageFormat.parse=function(input){if(input[input.length-1]!==TextMessageFormat.RecordSeparator){throw new Error("Message is incomplete.")}var messages=input.split(TextMessageFormat.RecordSeparator);messages.pop();return messages};TextMessageFormat.RecordSeparatorCode=30;TextMessageFormat.RecordSeparator=String.fromCharCode(TextMessageFormat.RecordSeparatorCode);return TextMessageFormat}()},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"MessageType",function(){return MessageType});var MessageType;(function(MessageType){MessageType[MessageType["Invocation"]=1]="Invocation";MessageType[MessageType["StreamItem"]=2]="StreamItem";MessageType[MessageType["Completion"]=3]="Completion";MessageType[MessageType["StreamInvocation"]=4]="StreamInvocation";MessageType[MessageType["CancelInvocation"]=5]="CancelInvocation";MessageType[MessageType["Ping"]=6]="Ping";MessageType[MessageType["Close"]=7]="Close"})(MessageType||(MessageType={}))},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"Subject",function(){return Subject});var _Utils__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(9);var Subject=function(){function Subject(){this.observers=[]}Subject.prototype.next=function(item){for(var _i=0,_a=this.observers;_i<_a.length;_i++){var observer=_a[_i];observer.next(item)}};Subject.prototype.error=function(err){for(var _i=0,_a=this.observers;_i<_a.length;_i++){var observer=_a[_i];if(observer.error){observer.error(err)}}};Subject.prototype.complete=function(){for(var _i=0,_a=this.observers;_i<_a.length;_i++){var observer=_a[_i];if(observer.complete){observer.complete()}}};Subject.prototype.subscribe=function(observer){this.observers.push(observer);return new _Utils__WEBPACK_IMPORTED_MODULE_0__["SubjectSubscription"](this,observer)};return Subject}()},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"HubConnectionBuilder",function(){return HubConnectionBuilder});var _DefaultReconnectPolicy__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(18);var _HttpConnection__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(19);var _HubConnection__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(12);var _ILogger__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(8);var _JsonHubProtocol__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(25);var _Loggers__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(10);var _Utils__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(9);var __assign=undefined&&undefined.__assign||Object.assign||function(t){for(var s,i=1,n=arguments.length;i0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]0){return[2,Promise.reject(new Error("Unable to connect to the server with any of the available transports. "+transportExceptions.join(" ")))]}return[2,Promise.reject(new Error("None of the transports supported by the client are supported by the server."))]}})})};HttpConnection.prototype.constructTransport=function(transport){switch(transport){case _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].WebSockets:if(!this.options.WebSocket){throw new Error("'WebSocket' is not supported in your environment.")}return new _WebSocketTransport__WEBPACK_IMPORTED_MODULE_6__["WebSocketTransport"](this.httpClient,this.accessTokenFactory,this.logger,this.options.logMessageContent||false,this.options.WebSocket,this.options.headers||{});case _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].ServerSentEvents:if(!this.options.EventSource){throw new Error("'EventSource' is not supported in your environment.")}return new _ServerSentEventsTransport__WEBPACK_IMPORTED_MODULE_4__["ServerSentEventsTransport"](this.httpClient,this.accessTokenFactory,this.logger,this.options.logMessageContent||false,this.options.EventSource,this.options.withCredentials,this.options.headers||{});case _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].LongPolling:return new _LongPollingTransport__WEBPACK_IMPORTED_MODULE_3__["LongPollingTransport"](this.httpClient,this.accessTokenFactory,this.logger,this.options.logMessageContent||false,this.options.withCredentials,this.options.headers||{});default:throw new Error("Unknown transport: "+transport+".")}};HttpConnection.prototype.startTransport=function(url,transferFormat){var _this=this;this.transport.onreceive=this.onreceive;this.transport.onclose=function(e){return _this.stopConnection(e)};return this.transport.connect(url,transferFormat)};HttpConnection.prototype.resolveTransportOrError=function(endpoint,requestedTransport,requestedTransferFormat){var transport=_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][endpoint.transport];if(transport===null||transport===undefined){this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug,"Skipping transport '"+endpoint.transport+"' because it is not supported by this client.");return new Error("Skipping transport '"+endpoint.transport+"' because it is not supported by this client.")}else{if(transportMatches(requestedTransport,transport)){var transferFormats=endpoint.transferFormats.map(function(s){return _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"][s]});if(transferFormats.indexOf(requestedTransferFormat)>=0){if(transport===_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].WebSockets&&!this.options.WebSocket||transport===_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].ServerSentEvents&&!this.options.EventSource){this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug,"Skipping transport '"+_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport]+"' because it is not supported in your environment.'");return new Error("'"+_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport]+"' is not supported in your environment.")}else{this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug,"Selecting transport '"+_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport]+"'.");try{return this.constructTransport(transport)}catch(ex){return ex}}}else{this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug,"Skipping transport '"+_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport]+"' because it does not support the requested transfer format '"+_ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"][requestedTransferFormat]+"'.");return new Error("'"+_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport]+"' does not support "+_ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"][requestedTransferFormat]+".")}}else{this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug,"Skipping transport '"+_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport]+"' because it was disabled by the client.");return new Error("'"+_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport]+"' is disabled by the client.")}}};HttpConnection.prototype.isITransport=function(transport){return transport&&typeof transport==="object"&&"connect"in transport};HttpConnection.prototype.stopConnection=function(error){var _this=this;this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug,"HttpConnection.stopConnection("+error+") called while in state "+this.connectionState+".");this.transport=undefined;error=this.stopError||error;this.stopError=undefined;if(this.connectionState==="Disconnected"){this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug,"Call to HttpConnection.stopConnection("+error+") was ignored because the connection is already in the disconnected state.");return}if(this.connectionState==="Connecting"){this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Warning,"Call to HttpConnection.stopConnection("+error+") was ignored because the connection is still in the connecting state.");throw new Error("HttpConnection.stopConnection("+error+") was called while the connection is still in the connecting state.")}if(this.connectionState==="Disconnecting"){this.stopPromiseResolver()}if(error){this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error,"Connection disconnected with error '"+error+"'.")}else{this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Information,"Connection disconnected.")}if(this.sendQueue){this.sendQueue.stop().catch(function(e){_this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error,"TransportSendQueue.stop() threw error '"+e+"'.")});this.sendQueue=undefined}this.connectionId=undefined;this.connectionState="Disconnected";if(this.connectionStarted){this.connectionStarted=false;try{if(this.onclose){this.onclose(error)}}catch(e){this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error,"HttpConnection.onclose("+error+") threw error '"+e+"'.")}}};HttpConnection.prototype.resolveUrl=function(url){if(url.lastIndexOf("https://",0)===0||url.lastIndexOf("http://",0)===0){return url}if(!_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isBrowser||!window.document){throw new Error("Cannot resolve '"+url+"'.")}var aTag=window.document.createElement("a");aTag.href=url;this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Information,"Normalizing '"+url+"' to '"+aTag.href+"'.");return aTag.href};HttpConnection.prototype.resolveNegotiateUrl=function(url){var index=url.indexOf("?");var negotiateUrl=url.substring(0,index===-1?url.length:index);if(negotiateUrl[negotiateUrl.length-1]!=="/"){negotiateUrl+="/"}negotiateUrl+="negotiate";negotiateUrl+=index===-1?"":url.substring(index);if(negotiateUrl.indexOf("negotiateVersion")===-1){negotiateUrl+=index===-1?"?":"&";negotiateUrl+="negotiateVersion="+this.negotiateVersion}return negotiateUrl};return HttpConnection}();function transportMatches(requestedTransport,actualTransport){return!requestedTransport||(actualTransport&requestedTransport)!==0}var TransportSendQueue=function(){function TransportSendQueue(transport){this.transport=transport;this.buffer=[];this.executing=true;this.sendBufferedData=new PromiseSource;this.transportResult=new PromiseSource;this.sendLoopPromise=this.sendLoop()}TransportSendQueue.prototype.send=function(data){this.bufferData(data);if(!this.transportResult){this.transportResult=new PromiseSource}return this.transportResult.promise};TransportSendQueue.prototype.stop=function(){this.executing=false;this.sendBufferedData.resolve();return this.sendLoopPromise};TransportSendQueue.prototype.bufferData=function(data){if(this.buffer.length&&typeof this.buffer[0]!==typeof data){throw new Error("Expected data to be of type "+typeof this.buffer+" but was of type "+typeof data)}this.buffer.push(data);this.sendBufferedData.resolve()};TransportSendQueue.prototype.sendLoop=function(){return __awaiter(this,void 0,void 0,function(){var transportResult,data,error_1;return __generator(this,function(_a){switch(_a.label){case 0:if(false){}return[4,this.sendBufferedData.promise];case 1:_a.sent();if(!this.executing){if(this.transportResult){this.transportResult.reject("Connection stopped.")}return[3,6]}this.sendBufferedData=new PromiseSource;transportResult=this.transportResult;this.transportResult=undefined;data=typeof this.buffer[0]==="string"?this.buffer.join(""):TransportSendQueue.concatBuffers(this.buffer);this.buffer.length=0;_a.label=2;case 2:_a.trys.push([2,4,,5]);return[4,this.transport.send(data)];case 3:_a.sent();transportResult.resolve();return[3,5];case 4:error_1=_a.sent();transportResult.reject(error_1);return[3,5];case 5:return[3,0];case 6:return[2]}})})};TransportSendQueue.concatBuffers=function(arrayBuffers){var totalLength=arrayBuffers.map(function(b){return b.byteLength}).reduce(function(a,b){return a+b});var result=new Uint8Array(totalLength);var offset=0;for(var _i=0,arrayBuffers_1=arrayBuffers;_i0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]{var t={d:(e,n)=>{for(var o in n)t.o(n,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})}};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"t",{value:!0})};var e,n={};t.r(n),t.d(n,{AbortError:()=>s,DefaultHttpClient:()=>q,HttpClient:()=>d,HttpError:()=>o,HttpResponse:()=>u,HttpTransportType:()=>O,HubConnection:()=>j,HubConnectionBuilder:()=>Z,HubConnectionState:()=>W,JsonHubProtocol:()=>G,LogLevel:()=>e,MessageType:()=>H,NullLogger:()=>p,Subject:()=>L,TimeoutError:()=>r,TransferFormat:()=>_,VERSION:()=>g});class o extends Error{constructor(t,e){const n=new.target.prototype;super(`${t}: Status code '${e}'`),this.statusCode=e,this.__proto__=n}}class r extends Error{constructor(t="A timeout occurred."){const e=new.target.prototype;super(t),this.__proto__=e}}class s extends Error{constructor(t="An abort occurred."){const e=new.target.prototype;super(t),this.__proto__=e}}class i extends Error{constructor(t,e){const n=new.target.prototype;super(t),this.transport=e,this.errorType="UnsupportedTransportError",this.__proto__=n}}class c extends Error{constructor(t,e){const n=new.target.prototype;super(t),this.transport=e,this.errorType="DisabledTransportError",this.__proto__=n}}class a extends Error{constructor(t,e){const n=new.target.prototype;super(t),this.transport=e,this.errorType="FailedToStartTransportError",this.__proto__=n}}class h extends Error{constructor(t){const e=new.target.prototype;super(t),this.errorType="FailedToNegotiateWithServerError",this.__proto__=e}}class l extends Error{constructor(t,e){const n=new.target.prototype;super(t),this.innerErrors=e,this.__proto__=n}}class u{constructor(t,e,n){this.statusCode=t,this.statusText=e,this.content=n}}class d{get(t,e){return this.send({...e,method:"GET",url:t})}post(t,e){return this.send({...e,method:"POST",url:t})}delete(t,e){return this.send({...e,method:"DELETE",url:t})}getCookieString(t){return""}}!function(t){t[t.Trace=0]="Trace",t[t.Debug=1]="Debug",t[t.Information=2]="Information",t[t.Warning=3]="Warning",t[t.Error=4]="Error",t[t.Critical=5]="Critical",t[t.None=6]="None"}(e||(e={}));class p{constructor(){}log(t,e){}}p.instance=new p;const g="6.0.0";class f{static isRequired(t,e){if(null==t)throw new Error(`The '${e}' argument is required.`)}static isNotEmpty(t,e){if(!t||t.match(/^\s*$/))throw new Error(`The '${e}' argument should not be empty.`)}static isIn(t,e,n){if(!(t in e))throw new Error(`Unknown ${n} value: ${t}.`)}}class w{static get isBrowser(){return"object"==typeof window}static get isWebWorker(){return"object"==typeof self&&"importScripts"in self}static get isNode(){return!this.isBrowser&&!this.isWebWorker}}function m(t,e){let n="";return b(t)?(n=`Binary data of length ${t.byteLength}`,e&&(n+=`. Content: '${function(t){const e=new Uint8Array(t);let n="";return e.forEach((t=>{n+=`0x${t<16?"0":""}${t.toString(16)} `})),n.substr(0,n.length-1)}(t)}'`)):"string"==typeof t&&(n=`String data of length ${t.length}`,e&&(n+=`. Content: '${t}'`)),n}function b(t){return t&&"undefined"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&"ArrayBuffer"===t.constructor.name)}async function y(t,n,o,r,s,i,c){let a={};if(s){const t=await s();t&&(a={Authorization:`Bearer ${t}`})}const[h,l]=S();a[h]=l,t.log(e.Trace,`(${n} transport) sending data. ${m(i,c.logMessageContent)}.`);const u=b(i)?"arraybuffer":"text",d=await o.post(r,{content:i,headers:{...a,...c.headers},responseType:u,timeout:c.timeout,withCredentials:c.withCredentials});t.log(e.Trace,`(${n} transport) request complete. Response status: ${d.statusCode}.`)}class v{constructor(t,e){this.i=t,this.h=e}dispose(){const t=this.i.observers.indexOf(this.h);t>-1&&this.i.observers.splice(t,1),0===this.i.observers.length&&this.i.cancelCallback&&this.i.cancelCallback().catch((t=>{}))}}class C{constructor(t){this.l=t,this.out=console}log(t,n){if(t>=this.l){const o=`[${(new Date).toISOString()}] ${e[t]}: ${n}`;switch(t){case e.Critical:case e.Error:this.out.error(o);break;case e.Warning:this.out.warn(o);break;case e.Information:this.out.info(o);break;default:this.out.log(o)}}}}function S(){let t="X-SignalR-User-Agent";return w.isNode&&(t="User-Agent"),[t,E(g,$(),w.isNode?"NodeJS":"Browser",T())]}function E(t,e,n,o){let r="Microsoft SignalR/";const s=t.split(".");return r+=`${s[0]}.${s[1]}`,r+=` (${t}; `,r+=e&&""!==e?`${e}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function $(){if(!w.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function T(){if(w.isNode)return process.versions.node}function k(t){return t.stack?t.stack:t.message?t.message:`${t}`}class P extends d{constructor(e){if(super(),this.u=e,"undefined"==typeof fetch){const t=require;this.p=new(t("tough-cookie").CookieJar),this.m=t("node-fetch"),this.m=t("fetch-cookie")(this.m,this.p)}else this.m=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==t.g)return t.g;throw new Error("could not find global")}());if("undefined"==typeof AbortController){const t=require;this.v=t("abort-controller")}else this.v=AbortController}async send(t){if(t.abortSignal&&t.abortSignal.aborted)throw new s;if(!t.method)throw new Error("No method defined.");if(!t.url)throw new Error("No url defined.");const n=new this.v;let i;t.abortSignal&&(t.abortSignal.onabort=()=>{n.abort(),i=new s});let c,a=null;if(t.timeout){const o=t.timeout;a=setTimeout((()=>{n.abort(),this.u.log(e.Warning,"Timeout from HTTP request."),i=new r}),o)}try{c=await this.m(t.url,{body:t.content,cache:"no-cache",credentials:!0===t.withCredentials?"include":"same-origin",headers:{"Content-Type":"text/plain;charset=UTF-8","X-Requested-With":"XMLHttpRequest",...t.headers},method:t.method,mode:"cors",redirect:"follow",signal:n.signal})}catch(t){if(i)throw i;throw this.u.log(e.Warning,`Error from HTTP request. ${t}.`),t}finally{a&&clearTimeout(a),t.abortSignal&&(t.abortSignal.onabort=null)}if(!c.ok){const t=await I(c,"text");throw new o(t||c.statusText,c.status)}const h=I(c,t.responseType),l=await h;return new u(c.status,c.statusText,l)}getCookieString(t){let e="";return w.isNode&&this.p&&this.p.getCookies(t,((t,n)=>e=n.join("; "))),e}}function I(t,e){let n;switch(e){case"arraybuffer":n=t.arrayBuffer();break;case"text":n=t.text();break;case"blob":case"document":case"json":throw new Error(`${e} is not supported.`);default:n=t.text()}return n}class D extends d{constructor(t){super(),this.u=t}send(t){return t.abortSignal&&t.abortSignal.aborted?Promise.reject(new s):t.method?t.url?new Promise(((n,i)=>{const c=new XMLHttpRequest;c.open(t.method,t.url,!0),c.withCredentials=void 0===t.withCredentials||t.withCredentials,c.setRequestHeader("X-Requested-With","XMLHttpRequest"),c.setRequestHeader("Content-Type","text/plain;charset=UTF-8");const a=t.headers;a&&Object.keys(a).forEach((t=>{c.setRequestHeader(t,a[t])})),t.responseType&&(c.responseType=t.responseType),t.abortSignal&&(t.abortSignal.onabort=()=>{c.abort(),i(new s)}),t.timeout&&(c.timeout=t.timeout),c.onload=()=>{t.abortSignal&&(t.abortSignal.onabort=null),c.status>=200&&c.status<300?n(new u(c.status,c.statusText,c.response||c.responseText)):i(new o(c.response||c.responseText||c.statusText,c.status))},c.onerror=()=>{this.u.log(e.Warning,`Error from HTTP request. ${c.status}: ${c.statusText}.`),i(new o(c.statusText,c.status))},c.ontimeout=()=>{this.u.log(e.Warning,"Timeout from HTTP request."),i(new r)},c.send(t.content||"")})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class q extends d{constructor(t){if(super(),"undefined"!=typeof fetch||w.isNode)this.$=new P(t);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this.$=new D(t)}}send(t){return t.abortSignal&&t.abortSignal.aborted?Promise.reject(new s):t.method?t.url?this.$.send(t):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(t){return this.$.getCookieString(t)}}class R{static write(t){return`${t}${R.RecordSeparator}`}static parse(t){if(t[t.length-1]!==R.RecordSeparator)throw new Error("Message is incomplete.");const e=t.split(R.RecordSeparator);return e.pop(),e}}R.RecordSeparatorCode=30,R.RecordSeparator=String.fromCharCode(R.RecordSeparatorCode);class x{writeHandshakeRequest(t){return R.write(JSON.stringify(t))}parseHandshakeResponse(t){let e,n;if(b(t)){const o=new Uint8Array(t),r=o.indexOf(R.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const s=r+1;e=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,s))),n=o.byteLength>s?o.slice(s).buffer:null}else{const o=t,r=o.indexOf(R.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const s=r+1;e=o.substring(0,s),n=o.length>s?o.substring(s):null}const o=R.parse(e),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}var H,W;!function(t){t[t.Invocation=1]="Invocation",t[t.StreamItem=2]="StreamItem",t[t.Completion=3]="Completion",t[t.StreamInvocation=4]="StreamInvocation",t[t.CancelInvocation=5]="CancelInvocation",t[t.Ping=6]="Ping",t[t.Close=7]="Close"}(H||(H={}));class L{constructor(){this.observers=[]}next(t){for(const e of this.observers)e.next(t)}error(t){for(const e of this.observers)e.error&&e.error(t)}complete(){for(const t of this.observers)t.complete&&t.complete()}subscribe(t){return this.observers.push(t),new v(this,t)}}!function(t){t.Disconnected="Disconnected",t.Connecting="Connecting",t.Connected="Connected",t.Disconnecting="Disconnecting",t.Reconnecting="Reconnecting"}(W||(W={}));class j{constructor(t,n,o,r){this.C=0,this.S=()=>{this.u.log(e.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://docs.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},f.isRequired(t,"connection"),f.isRequired(n,"logger"),f.isRequired(o,"protocol"),this.serverTimeoutInMilliseconds=3e4,this.keepAliveIntervalInMilliseconds=15e3,this.u=n,this.k=o,this.connection=t,this.P=r,this.T=new x,this.connection.onreceive=t=>this.I(t),this.connection.onclose=t=>this._(t),this.H={},this.D={},this.A=[],this.R=[],this.U=[],this.L=0,this.N=!1,this.q=W.Disconnected,this.M=!1,this.W=this.k.writeMessage({type:H.Ping})}static create(t,e,n,o){return new j(t,e,n,o)}get state(){return this.q}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(t){if(this.q!==W.Disconnected&&this.q!==W.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!t)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=t}start(){return this.O=this.j(),this.O}async j(){if(this.q!==W.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this.q=W.Connecting,this.u.log(e.Debug,"Starting HubConnection.");try{await this.F(),w.isBrowser&&document&&document.addEventListener("freeze",this.S),this.q=W.Connected,this.M=!0,this.u.log(e.Debug,"HubConnection connected successfully.")}catch(t){return this.q=W.Disconnected,this.u.log(e.Debug,`HubConnection failed to start successfully because of error '${t}'.`),Promise.reject(t)}}async F(){this.B=void 0,this.N=!1;const t=new Promise(((t,e)=>{this.X=t,this.J=e}));await this.connection.start(this.k.transferFormat);try{const n={protocol:this.k.name,version:this.k.version};if(this.u.log(e.Debug,"Sending handshake request."),await this.V(this.T.writeHandshakeRequest(n)),this.u.log(e.Information,`Using HubProtocol '${this.k.name}'.`),this.G(),this.K(),this.Y(),await t,this.B)throw this.B}catch(t){throw this.u.log(e.Debug,`Hub handshake failed with error '${t}' during start(). Stopping HubConnection.`),this.G(),this.Z(),await this.connection.stop(t),t}}async stop(){const t=this.O;this.tt=this.et(),await this.tt;try{await t}catch(t){}}et(t){return this.q===W.Disconnected?(this.u.log(e.Debug,`Call to HubConnection.stop(${t}) ignored because it is already in the disconnected state.`),Promise.resolve()):this.q===W.Disconnecting?(this.u.log(e.Debug,`Call to HttpConnection.stop(${t}) ignored because the connection is already in the disconnecting state.`),this.tt):(this.q=W.Disconnecting,this.u.log(e.Debug,"Stopping HubConnection."),this.st?(this.u.log(e.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this.st),this.st=void 0,this.nt(),Promise.resolve()):(this.G(),this.Z(),this.B=t||new Error("The connection was stopped before the hub handshake could complete."),this.connection.stop(t)))}stream(t,...e){const[n,o]=this.it(e),r=this.rt(t,e,o);let s;const i=new L;return i.cancelCallback=()=>{const t=this.ot(r.invocationId);return delete this.H[r.invocationId],s.then((()=>this.ht(t)))},this.H[r.invocationId]=(t,e)=>{e?i.error(e):t&&(t.type===H.Completion?t.error?i.error(new Error(t.error)):i.complete():i.next(t.item))},s=this.ht(r).catch((t=>{i.error(t),delete this.H[r.invocationId]})),this.ct(n,s),i}V(t){return this.Y(),this.connection.send(t)}ht(t){return this.V(this.k.writeMessage(t))}send(t,...e){const[n,o]=this.it(e),r=this.ht(this.at(t,e,!0,o));return this.ct(n,r),r}invoke(t,...e){const[n,o]=this.it(e),r=this.at(t,e,!1,o);return new Promise(((t,e)=>{this.H[r.invocationId]=(n,o)=>{o?e(o):n&&(n.type===H.Completion?n.error?e(new Error(n.error)):t(n.result):e(new Error(`Unexpected message type: ${n.type}`)))};const o=this.ht(r).catch((t=>{e(t),delete this.H[r.invocationId]}));this.ct(n,o)}))}on(t,e){t&&e&&(t=t.toLowerCase(),this.D[t]||(this.D[t]=[]),-1===this.D[t].indexOf(e)&&this.D[t].push(e))}off(t,e){if(!t)return;t=t.toLowerCase();const n=this.D[t];if(n)if(e){const o=n.indexOf(e);-1!==o&&(n.splice(o,1),0===n.length&&delete this.D[t])}else delete this.D[t]}onclose(t){t&&this.A.push(t)}onreconnecting(t){t&&this.R.push(t)}onreconnected(t){t&&this.U.push(t)}I(t){if(this.G(),this.N||(t=this.lt(t),this.N=!0),t){const n=this.k.parseMessages(t,this.u);for(const o of n)switch(o.type){case H.Invocation:this.ut(o);break;case H.StreamItem:case H.Completion:{const n=this.H[o.invocationId];if(n){o.type===H.Completion&&delete this.H[o.invocationId];try{n(o)}catch(t){this.u.log(e.Error,`Stream callback threw error: ${k(t)}`)}}break}case H.Ping:break;case H.Close:{this.u.log(e.Information,"Close message received from server.");const t=o.error?new Error("Server returned an error on close: "+o.error):void 0;!0===o.allowReconnect?this.connection.stop(t):this.tt=this.et(t);break}default:this.u.log(e.Warning,`Invalid message type: ${o.type}.`)}}this.K()}lt(t){let n,o;try{[o,n]=this.T.parseHandshakeResponse(t)}catch(t){const n="Error parsing handshake response: "+t;this.u.log(e.Error,n);const o=new Error(n);throw this.J(o),o}if(n.error){const t="Server returned handshake error: "+n.error;this.u.log(e.Error,t);const o=new Error(t);throw this.J(o),o}return this.u.log(e.Debug,"Server handshake complete."),this.X(),o}Y(){this.connection.features.inherentKeepAlive||(this.C=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this.Z())}K(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this.dt=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this.ft))){let t=this.C-(new Date).getTime();t<0&&(t=0),this.ft=setTimeout((async()=>{if(this.q===W.Connected)try{await this.V(this.W)}catch{this.Z()}}),t)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}ut(t){const n=this.D[t.target.toLowerCase()];if(n){try{n.forEach((e=>e.apply(this,t.arguments)))}catch(n){this.u.log(e.Error,`A callback for the method ${t.target.toLowerCase()} threw error '${n}'.`)}if(t.invocationId){const t="Server requested a response, which is not supported in this version of the client.";this.u.log(e.Error,t),this.tt=this.et(new Error(t))}}else this.u.log(e.Warning,`No client method with the name '${t.target}' found.`)}_(t){this.u.log(e.Debug,`HubConnection.connectionClosed(${t}) called while in state ${this.q}.`),this.B=this.B||t||new Error("The underlying connection was closed before the hub handshake could complete."),this.X&&this.X(),this.wt(t||new Error("Invocation canceled due to the underlying connection being closed.")),this.G(),this.Z(),this.q===W.Disconnecting?this.nt(t):this.q===W.Connected&&this.P?this.gt(t):this.q===W.Connected&&this.nt(t)}nt(t){if(this.M){this.q=W.Disconnected,this.M=!1,w.isBrowser&&document&&document.removeEventListener("freeze",this.S);try{this.A.forEach((e=>e.apply(this,[t])))}catch(n){this.u.log(e.Error,`An onclose callback called with error '${t}' threw error '${n}'.`)}}}async gt(t){const n=Date.now();let o=0,r=void 0!==t?t:new Error("Attempting to reconnect due to a unknown error."),s=this.yt(o++,0,r);if(null===s)return this.u.log(e.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this.nt(t);if(this.q=W.Reconnecting,t?this.u.log(e.Information,`Connection reconnecting because of error '${t}'.`):this.u.log(e.Information,"Connection reconnecting."),0!==this.R.length){try{this.R.forEach((e=>e.apply(this,[t])))}catch(n){this.u.log(e.Error,`An onreconnecting callback called with error '${t}' threw error '${n}'.`)}if(this.q!==W.Reconnecting)return void this.u.log(e.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==s;){if(this.u.log(e.Information,`Reconnect attempt number ${o} will start in ${s} ms.`),await new Promise((t=>{this.st=setTimeout(t,s)})),this.st=void 0,this.q!==W.Reconnecting)return void this.u.log(e.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this.F(),this.q=W.Connected,this.u.log(e.Information,"HubConnection reconnected successfully."),0!==this.U.length)try{this.U.forEach((t=>t.apply(this,[this.connection.connectionId])))}catch(t){this.u.log(e.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${t}'.`)}return}catch(t){if(this.u.log(e.Information,`Reconnect attempt failed because of error '${t}'.`),this.q!==W.Reconnecting)return this.u.log(e.Debug,`Connection moved to the '${this.q}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this.q===W.Disconnecting&&this.nt());r=t instanceof Error?t:new Error(t.toString()),s=this.yt(o++,Date.now()-n,r)}}this.u.log(e.Information,`Reconnect retries have been exhausted after ${Date.now()-n} ms and ${o} failed attempts. Connection disconnecting.`),this.nt()}yt(t,n,o){try{return this.P.nextRetryDelayInMilliseconds({elapsedMilliseconds:n,previousRetryCount:t,retryReason:o})}catch(o){return this.u.log(e.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${t}, ${n}) threw error '${o}'.`),null}}wt(t){const n=this.H;this.H={},Object.keys(n).forEach((o=>{const r=n[o];try{r(null,t)}catch(n){this.u.log(e.Error,`Stream 'error' callback called with '${t}' threw error: ${k(n)}`)}}))}Z(){this.ft&&(clearTimeout(this.ft),this.ft=void 0)}G(){this.dt&&clearTimeout(this.dt)}at(t,e,n,o){if(n)return 0!==o.length?{arguments:e,streamIds:o,target:t,type:H.Invocation}:{arguments:e,target:t,type:H.Invocation};{const n=this.L;return this.L++,0!==o.length?{arguments:e,invocationId:n.toString(),streamIds:o,target:t,type:H.Invocation}:{arguments:e,invocationId:n.toString(),target:t,type:H.Invocation}}}ct(t,e){if(0!==t.length){e||(e=Promise.resolve());for(const n in t)t[n].subscribe({complete:()=>{e=e.then((()=>this.ht(this.bt(n))))},error:t=>{let o;o=t instanceof Error?t.message:t&&t.toString?t.toString():"Unknown error",e=e.then((()=>this.ht(this.bt(n,o))))},next:t=>{e=e.then((()=>this.ht(this.vt(n,t))))}})}}it(t){const e=[],n=[];for(let o=0;o{let s,i=!1;if(n===_.Text){if(w.isBrowser||w.isWebWorker)s=new this.Pt.EventSource(t,{withCredentials:this.Pt.withCredentials});else{const e=this.$.getCookieString(t),n={};n.Cookie=e;const[o,r]=S();n[o]=r,s=new this.Pt.EventSource(t,{withCredentials:this.Pt.withCredentials,headers:{...n,...this.Pt.headers}})}try{s.onmessage=t=>{if(this.onreceive)try{this.u.log(e.Trace,`(SSE transport) data received. ${m(t.data,this.Pt.logMessageContent)}.`),this.onreceive(t.data)}catch(t){return void this.Ut(t)}},s.onerror=t=>{i?this.Ut():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},s.onopen=()=>{this.u.log(e.Information,`SSE connected to ${this.It}`),this.Lt=s,i=!0,o()}}catch(t){return void r(t)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(t){return this.Lt?y(this.u,"SSE",this.$,this.It,this.St,t,this.Pt):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this.Ut(),Promise.resolve()}Ut(t){this.Lt&&(this.Lt.close(),this.Lt=void 0,this.onclose&&this.onclose(t))}}class J{constructor(t,e,n,o,r,s){this.u=n,this.St=e,this.Nt=o,this.qt=r,this.$=t,this.onreceive=null,this.onclose=null,this.Mt=s}async connect(t,n){if(f.isRequired(t,"url"),f.isRequired(n,"transferFormat"),f.isIn(n,_,"transferFormat"),this.u.log(e.Trace,"(WebSockets transport) Connecting."),this.St){const e=await this.St();e&&(t+=(t.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(e)}`)}return new Promise(((o,r)=>{let s;t=t.replace(/^http/,"ws");const i=this.$.getCookieString(t);let c=!1;if(w.isNode){const e={},[n,o]=S();e[n]=o,i&&(e[U.Cookie]=`${i}`),s=new this.qt(t,void 0,{headers:{...e,...this.Mt}})}s||(s=new this.qt(t)),n===_.Binary&&(s.binaryType="arraybuffer"),s.onopen=n=>{this.u.log(e.Information,`WebSocket connected to ${t}.`),this.Wt=s,c=!0,o()},s.onerror=t=>{let n=null;n="undefined"!=typeof ErrorEvent&&t instanceof ErrorEvent?t.error:"There was an error with the transport",this.u.log(e.Information,`(WebSockets transport) ${n}.`)},s.onmessage=t=>{if(this.u.log(e.Trace,`(WebSockets transport) data received. ${m(t.data,this.Nt)}.`),this.onreceive)try{this.onreceive(t.data)}catch(t){return void this.Ut(t)}},s.onclose=t=>{if(c)this.Ut(t);else{let e=null;e="undefined"!=typeof ErrorEvent&&t instanceof ErrorEvent?t.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(e))}}}))}send(t){return this.Wt&&this.Wt.readyState===this.qt.OPEN?(this.u.log(e.Trace,`(WebSockets transport) sending data. ${m(t,this.Nt)}.`),this.Wt.send(t),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this.Wt&&this.Ut(void 0),Promise.resolve()}Ut(t){this.Wt&&(this.Wt.onclose=()=>{},this.Wt.onmessage=()=>{},this.Wt.onerror=()=>{},this.Wt.close(),this.Wt=void 0),this.u.log(e.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this.Ot(t)||!1!==t.wasClean&&1e3===t.code?t instanceof Error?this.onclose(t):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${t.code} (${t.reason||"no reason given"}).`)))}Ot(t){return t&&"boolean"==typeof t.wasClean&&"number"==typeof t.code}}class X{constructor(t,n={}){var o;if(this.jt=()=>{},this.features={},this.Ft=1,f.isRequired(t,"url"),this.u=void 0===(o=n.logger)?new C(e.Information):null===o?p.instance:void 0!==o.log?o:new C(o),this.baseUrl=this.Bt(t),(n=n||{}).logMessageContent=void 0!==n.logMessageContent&&n.logMessageContent,"boolean"!=typeof n.withCredentials&&void 0!==n.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");n.withCredentials=void 0===n.withCredentials||n.withCredentials,n.timeout=void 0===n.timeout?1e5:n.timeout;let r=null,s=null;if(w.isNode){const t=require;r=t("ws"),s=t("eventsource")}w.isNode||"undefined"==typeof WebSocket||n.WebSocket?w.isNode&&!n.WebSocket&&r&&(n.WebSocket=r):n.WebSocket=WebSocket,w.isNode||"undefined"==typeof EventSource||n.EventSource?w.isNode&&!n.EventSource&&void 0!==s&&(n.EventSource=s):n.EventSource=EventSource,this.$=n.httpClient||new q(this.u),this.q="Disconnected",this.M=!1,this.Pt=n,this.onreceive=null,this.onclose=null}async start(t){if(t=t||_.Binary,f.isIn(t,_,"transferFormat"),this.u.log(e.Debug,`Starting connection with transfer format '${_[t]}'.`),"Disconnected"!==this.q)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this.q="Connecting",this.Xt=this.F(t),await this.Xt,"Disconnecting"===this.q){const t="Failed to start the HttpConnection before stop() was called.";return this.u.log(e.Error,t),await this.tt,Promise.reject(new Error(t))}if("Connected"!==this.q){const t="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this.u.log(e.Error,t),Promise.reject(new Error(t))}this.M=!0}send(t){return"Connected"!==this.q?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this.Jt||(this.Jt=new V(this.transport)),this.Jt.send(t))}async stop(t){return"Disconnected"===this.q?(this.u.log(e.Debug,`Call to HttpConnection.stop(${t}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this.q?(this.u.log(e.Debug,`Call to HttpConnection.stop(${t}) ignored because the connection is already in the disconnecting state.`),this.tt):(this.q="Disconnecting",this.tt=new Promise((t=>{this.jt=t})),await this.et(t),void await this.tt)}async et(t){this.zt=t;try{await this.Xt}catch(t){}if(this.transport){try{await this.transport.stop()}catch(t){this.u.log(e.Error,`HttpConnection.transport.stop() threw error '${t}'.`),this.Vt()}this.transport=void 0}else this.u.log(e.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async F(t){let n=this.baseUrl;this.St=this.Pt.accessTokenFactory;try{if(this.Pt.skipNegotiation){if(this.Pt.transport!==O.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this.Gt(O.WebSockets),await this.Kt(n,t)}else{let e=null,o=0;do{if(e=await this.Qt(n),"Disconnecting"===this.q||"Disconnected"===this.q)throw new Error("The connection was stopped during negotiation.");if(e.error)throw new Error(e.error);if(e.ProtocolVersion)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.");if(e.url&&(n=e.url),e.accessToken){const t=e.accessToken;this.St=()=>t}o++}while(e.url&&o<100);if(100===o&&e.url)throw new Error("Negotiate redirection limit exceeded.");await this.Yt(n,this.Pt.transport,e,t)}this.transport instanceof B&&(this.features.inherentKeepAlive=!0),"Connecting"===this.q&&(this.u.log(e.Debug,"The HttpConnection connected successfully."),this.q="Connected")}catch(t){return this.u.log(e.Error,"Failed to start the connection: "+t),this.q="Disconnected",this.transport=void 0,this.jt(),Promise.reject(t)}}async Qt(t){const n={};if(this.St){const t=await this.St();t&&(n[U.Authorization]=`Bearer ${t}`)}const[r,s]=S();n[r]=s;const i=this.Zt(t);this.u.log(e.Debug,`Sending negotiation request: ${i}.`);try{const t=await this.$.post(i,{content:"",headers:{...n,...this.Pt.headers},timeout:this.Pt.timeout,withCredentials:this.Pt.withCredentials});if(200!==t.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${t.statusCode}'`));const e=JSON.parse(t.content);return(!e.negotiateVersion||e.negotiateVersion<1)&&(e.connectionToken=e.connectionId),e}catch(t){let n="Failed to complete negotiation with the server: "+t;return t instanceof o&&404===t.statusCode&&(n+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this.u.log(e.Error,n),Promise.reject(new h(n))}}te(t,e){return e?t+(-1===t.indexOf("?")?"?":"&")+`id=${e}`:t}async Yt(t,n,o,r){let s=this.te(t,o.connectionToken);if(this.ee(n))return this.u.log(e.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=n,await this.Kt(s,r),void(this.connectionId=o.connectionId);const i=[],c=o.availableTransports||[];let h=o;for(const o of c){const c=this.se(o,n,r);if(c instanceof Error)i.push(`${o.transport} failed:`),i.push(c);else if(this.ee(c)){if(this.transport=c,!h){try{h=await this.Qt(t)}catch(t){return Promise.reject(t)}s=this.te(t,h.connectionToken)}try{return await this.Kt(s,r),void(this.connectionId=h.connectionId)}catch(t){if(this.u.log(e.Error,`Failed to start the transport '${o.transport}': ${t}`),h=void 0,i.push(new a(`${o.transport} failed: ${t}`,O[o.transport])),"Connecting"!==this.q){const t="Failed to select transport before stop() was called.";return this.u.log(e.Debug,t),Promise.reject(new Error(t))}}}}return i.length>0?Promise.reject(new l(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}Gt(t){switch(t){case O.WebSockets:if(!this.Pt.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new J(this.$,this.St,this.u,this.Pt.logMessageContent,this.Pt.WebSocket,this.Pt.headers||{});case O.ServerSentEvents:if(!this.Pt.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new F(this.$,this.St,this.u,this.Pt);case O.LongPolling:return new B(this.$,this.St,this.u,this.Pt);default:throw new Error(`Unknown transport: ${t}.`)}}Kt(t,e){return this.transport.onreceive=this.onreceive,this.transport.onclose=t=>this.Vt(t),this.transport.connect(t,e)}se(t,n,o){const r=O[t.transport];if(null==r)return this.u.log(e.Debug,`Skipping transport '${t.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${t.transport}' because it is not supported by this client.`);if(!function(t,e){return!t||0!=(e&t)}(n,r))return this.u.log(e.Debug,`Skipping transport '${O[r]}' because it was disabled by the client.`),new c(`'${O[r]}' is disabled by the client.`,r);if(!(t.transferFormats.map((t=>_[t])).indexOf(o)>=0))return this.u.log(e.Debug,`Skipping transport '${O[r]}' because it does not support the requested transfer format '${_[o]}'.`),new Error(`'${O[r]}' does not support ${_[o]}.`);if(r===O.WebSockets&&!this.Pt.WebSocket||r===O.ServerSentEvents&&!this.Pt.EventSource)return this.u.log(e.Debug,`Skipping transport '${O[r]}' because it is not supported in your environment.'`),new i(`'${O[r]}' is not supported in your environment.`,r);this.u.log(e.Debug,`Selecting transport '${O[r]}'.`);try{return this.Gt(r)}catch(t){return t}}ee(t){return t&&"object"==typeof t&&"connect"in t}Vt(t){if(this.u.log(e.Debug,`HttpConnection.stopConnection(${t}) called while in state ${this.q}.`),this.transport=void 0,t=this.zt||t,this.zt=void 0,"Disconnected"!==this.q){if("Connecting"===this.q)throw this.u.log(e.Warning,`Call to HttpConnection.stopConnection(${t}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${t}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this.q&&this.jt(),t?this.u.log(e.Error,`Connection disconnected with error '${t}'.`):this.u.log(e.Information,"Connection disconnected."),this.Jt&&(this.Jt.stop().catch((t=>{this.u.log(e.Error,`TransportSendQueue.stop() threw error '${t}'.`)})),this.Jt=void 0),this.connectionId=void 0,this.q="Disconnected",this.M){this.M=!1;try{this.onclose&&this.onclose(t)}catch(n){this.u.log(e.Error,`HttpConnection.onclose(${t}) threw error '${n}'.`)}}}else this.u.log(e.Debug,`Call to HttpConnection.stopConnection(${t}) was ignored because the connection is already in the disconnected state.`)}Bt(t){if(0===t.lastIndexOf("https://",0)||0===t.lastIndexOf("http://",0))return t;if(!w.isBrowser||!window.document)throw new Error(`Cannot resolve '${t}'.`);const n=window.document.createElement("a");return n.href=t,this.u.log(e.Information,`Normalizing '${t}' to '${n.href}'.`),n.href}Zt(t){const e=t.indexOf("?");let n=t.substring(0,-1===e?t.length:e);return"/"!==n[n.length-1]&&(n+="/"),n+="negotiate",n+=-1===e?"":t.substring(e),-1===n.indexOf("negotiateVersion")&&(n+=-1===e?"?":"&",n+="negotiateVersion="+this.Ft),n}}class V{constructor(t){this.ne=t,this.ie=[],this.re=!0,this.oe=new z,this.he=new z,this.ce=this.ae()}send(t){return this.le(t),this.he||(this.he=new z),this.he.promise}stop(){return this.re=!1,this.oe.resolve(),this.ce}le(t){if(this.ie.length&&typeof this.ie[0]!=typeof t)throw new Error(`Expected data to be of type ${typeof this.ie} but was of type ${typeof t}`);this.ie.push(t),this.oe.resolve()}async ae(){for(;;){if(await this.oe.promise,!this.re){this.he&&this.he.reject("Connection stopped.");break}this.oe=new z;const t=this.he;this.he=void 0;const e="string"==typeof this.ie[0]?this.ie.join(""):V.ue(this.ie);this.ie.length=0;try{await this.ne.send(e),t.resolve()}catch(e){t.reject(e)}}}static ue(t){const e=t.map((t=>t.byteLength)).reduce(((t,e)=>t+e)),n=new Uint8Array(e);let o=0;for(const e of t)n.set(new Uint8Array(e),o),o+=e.byteLength;return n.buffer}}class z{constructor(){this.promise=new Promise(((t,e)=>[this.de,this.fe]=[t,e]))}resolve(){this.de()}reject(t){this.fe(t)}}class G{constructor(){this.name="json",this.version=1,this.transferFormat=_.Text}parseMessages(t,n){if("string"!=typeof t)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!t)return[];null===n&&(n=p.instance);const o=R.parse(t),r=[];for(const t of o){const o=JSON.parse(t);if("number"!=typeof o.type)throw new Error("Invalid payload.");switch(o.type){case H.Invocation:this.pe(o);break;case H.StreamItem:this.we(o);break;case H.Completion:this.ge(o);break;case H.Ping:case H.Close:break;default:n.log(e.Information,"Unknown message type '"+o.type+"' ignored.");continue}r.push(o)}return r}writeMessage(t){return R.write(JSON.stringify(t))}pe(t){this.me(t.target,"Invalid payload for Invocation message."),void 0!==t.invocationId&&this.me(t.invocationId,"Invalid payload for Invocation message.")}we(t){if(this.me(t.invocationId,"Invalid payload for StreamItem message."),void 0===t.item)throw new Error("Invalid payload for StreamItem message.")}ge(t){if(t.result&&t.error)throw new Error("Invalid payload for Completion message.");!t.result&&t.error&&this.me(t.error,"Invalid payload for Completion message."),this.me(t.invocationId,"Invalid payload for Completion message.")}me(t,e){if("string"!=typeof t||""===t)throw new Error(e)}}const K={trace:e.Trace,debug:e.Debug,info:e.Information,information:e.Information,warn:e.Warning,warning:e.Warning,error:e.Error,critical:e.Critical,none:e.None};class Z{configureLogging(t){if(f.isRequired(t,"logging"),void 0!==t.log)this.logger=t;else if("string"==typeof t){const e=function(t){const e=K[t.toLowerCase()];if(void 0!==e)return e;throw new Error(`Unknown log level: ${t}`)}(t);this.logger=new C(e)}else this.logger=new C(t);return this}withUrl(t,e){return f.isRequired(t,"url"),f.isNotEmpty(t,"url"),this.url=t,this.httpConnectionOptions="object"==typeof e?{...this.httpConnectionOptions,...e}:{...this.httpConnectionOptions,transport:e},this}withHubProtocol(t){return f.isRequired(t,"protocol"),this.protocol=t,this}withAutomaticReconnect(t){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return t?Array.isArray(t)?this.reconnectPolicy=new N(t):this.reconnectPolicy=t:this.reconnectPolicy=new N,this}build(){const t=this.httpConnectionOptions||{};if(void 0===t.logger&&(t.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const e=new X(this.url,t);return j.create(e,this.logger||p.instance,this.protocol||new G,this.reconnectPolicy)}}return Uint8Array.prototype.indexOf||Object.defineProperty(Uint8Array.prototype,"indexOf",{value:Array.prototype.indexOf,writable:!0}),Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,"slice",{value:function(t,e){return new Uint8Array(Array.prototype.slice.call(this,t,e))},writable:!0}),Uint8Array.prototype.forEach||Object.defineProperty(Uint8Array.prototype,"forEach",{value:Array.prototype.forEach,writable:!0}),n})()},"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.signalR=e():t.signalR=e();
//# sourceMappingURL=signalr.min.js.map
\ No newline at end of file
diff --git a/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.js b/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.js
index 1b39ba34..63373a47 100644
--- a/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.js
+++ b/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.js
@@ -1,2457 +1,2 @@
-(function webpackUniversalModuleDefinition(root, factory) {
- if(typeof exports === 'object' && typeof module === 'object')
- module.exports = factory(require("msgpack5"), require("signalR"));
- else if(typeof define === 'function' && define.amd)
- define(["msgpack5", "signalR"], factory);
- else if(typeof exports === 'object')
- exports["msgpack"] = factory(require("msgpack5"), require("signalR"));
- else
- root["signalR"] = root["signalR"] || {}, root["signalR"]["protocols"] = root["signalR"]["protocols"] || {}, root["signalR"]["protocols"]["msgpack"] = factory(root["msgpack5"], root["signalR"]);
-})(window, function(__WEBPACK_EXTERNAL_MODULE__6__, __WEBPACK_EXTERNAL_MODULE__7__) {
-return /******/ (function(modules) { // webpackBootstrap
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId]) {
-/******/ return installedModules[moduleId].exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ i: moduleId,
-/******/ l: false,
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.l = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = modules;
-/******/
-/******/ // expose the module cache
-/******/ __webpack_require__.c = installedModules;
-/******/
-/******/ // define getter function for harmony exports
-/******/ __webpack_require__.d = function(exports, name, getter) {
-/******/ if(!__webpack_require__.o(exports, name)) {
-/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/ }
-/******/ };
-/******/
-/******/ // define __esModule on exports
-/******/ __webpack_require__.r = function(exports) {
-/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ }
-/******/ Object.defineProperty(exports, '__esModule', { value: true });
-/******/ };
-/******/
-/******/ // create a fake namespace object
-/******/ // mode & 1: value is a module id, require it
-/******/ // mode & 2: merge all properties of value into the ns
-/******/ // mode & 4: return value when already ns object
-/******/ // mode & 8|1: behave like require
-/******/ __webpack_require__.t = function(value, mode) {
-/******/ if(mode & 1) value = __webpack_require__(value);
-/******/ if(mode & 8) return value;
-/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/ var ns = Object.create(null);
-/******/ __webpack_require__.r(ns);
-/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/ return ns;
-/******/ };
-/******/
-/******/ // getDefaultExport function for compatibility with non-harmony modules
-/******/ __webpack_require__.n = function(module) {
-/******/ var getter = module && module.__esModule ?
-/******/ function getDefault() { return module['default']; } :
-/******/ function getModuleExports() { return module; };
-/******/ __webpack_require__.d(getter, 'a', getter);
-/******/ return getter;
-/******/ };
-/******/
-/******/ // Object.prototype.hasOwnProperty.call
-/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "";
-/******/
-/******/
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return _index__WEBPACK_IMPORTED_MODULE_0__["VERSION"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MessagePackHubProtocol", function() { return _index__WEBPACK_IMPORTED_MODULE_0__["MessagePackHubProtocol"]; });
-
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-// This is where we add any polyfills we'll need for the browser. It is the entry module for browser-specific builds.
-
-
-
-/***/ }),
-/* 1 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return VERSION; });
-/* harmony import */ var _MessagePackHubProtocol__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MessagePackHubProtocol", function() { return _MessagePackHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessagePackHubProtocol"]; });
-
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-// Version token that will be replaced by the prepack command
-/** The version of the SignalR Message Pack protocol library. */
-var VERSION = "5.0.7";
-
-
-
-/***/ }),
-/* 2 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MessagePackHubProtocol", function() { return MessagePackHubProtocol; });
-/* harmony import */ var buffer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
-/* harmony import */ var buffer__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(buffer__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var msgpack5__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6);
-/* harmony import */ var msgpack5__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(msgpack5__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
-/* harmony import */ var _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8);
-/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9);
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
-};
-
-
-
-
-
-// TypeDoc's @inheritDoc and @link don't work across modules :(
-// constant encoding of the ping message
-// see: https://github.com/aspnet/SignalR/blob/dev/specs/HubProtocol.md#ping-message-encoding-1
-// Don't use Uint8Array.from as IE does not support it
-var SERIALIZED_PING_MESSAGE = new Uint8Array([0x91, _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Ping]);
-/** Implements the MessagePack Hub Protocol */
-var MessagePackHubProtocol = /** @class */ (function () {
- /**
- *
- * @param messagePackOptions MessagePack options passed to msgpack5
- */
- function MessagePackHubProtocol(messagePackOptions) {
- /** The name of the protocol. This is used by SignalR to resolve the protocol between the client and server. */
- this.name = "messagepack";
- /** The version of the protocol. */
- this.version = 1;
- /** The TransferFormat of the protocol. */
- this.transferFormat = _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"].Binary;
- this.errorResult = 1;
- this.voidResult = 2;
- this.nonVoidResult = 3;
- if (messagePackOptions) {
- this.messagePackOptions = __assign({}, messagePackOptions, { compatibilityMode: false });
- }
- }
- /** Creates an array of HubMessage objects from the specified serialized representation.
- *
- * @param {ArrayBuffer | Buffer} input An ArrayBuffer or Buffer containing the serialized representation.
- * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.
- */
- MessagePackHubProtocol.prototype.parseMessages = function (input, logger) {
- // The interface does allow "string" to be passed in, but this implementation does not. So let's throw a useful error.
- if (!(input instanceof buffer__WEBPACK_IMPORTED_MODULE_0__["Buffer"]) && !(Object(_Utils__WEBPACK_IMPORTED_MODULE_4__["isArrayBuffer"])(input))) {
- throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer or Buffer.");
- }
- if (logger === null) {
- logger = _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["NullLogger"].instance;
- }
- var messages = _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].parse(input);
- var hubMessages = [];
- for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {
- var message = messages_1[_i];
- var parsedMessage = this.parseMessage(message, logger);
- // Can be null for an unknown message. Unknown message is logged in parseMessage
- if (parsedMessage) {
- hubMessages.push(parsedMessage);
- }
- }
- return hubMessages;
- };
- /** Writes the specified HubMessage to an ArrayBuffer and returns it.
- *
- * @param {HubMessage} message The message to write.
- * @returns {ArrayBuffer} An ArrayBuffer containing the serialized representation of the message.
- */
- MessagePackHubProtocol.prototype.writeMessage = function (message) {
- switch (message.type) {
- case _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Invocation:
- return this.writeInvocation(message);
- case _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].StreamInvocation:
- return this.writeStreamInvocation(message);
- case _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].StreamItem:
- return this.writeStreamItem(message);
- case _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Completion:
- return this.writeCompletion(message);
- case _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Ping:
- return _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].write(SERIALIZED_PING_MESSAGE);
- case _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].CancelInvocation:
- return this.writeCancelInvocation(message);
- default:
- throw new Error("Invalid message type.");
- }
- };
- MessagePackHubProtocol.prototype.parseMessage = function (input, logger) {
- if (input.length === 0) {
- throw new Error("Invalid payload.");
- }
- var msgpack = msgpack5__WEBPACK_IMPORTED_MODULE_1__(this.messagePackOptions);
- var properties = msgpack.decode(buffer__WEBPACK_IMPORTED_MODULE_0__["Buffer"].from(input));
- if (properties.length === 0 || !(properties instanceof Array)) {
- throw new Error("Invalid payload.");
- }
- var messageType = properties[0];
- switch (messageType) {
- case _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Invocation:
- return this.createInvocationMessage(this.readHeaders(properties), properties);
- case _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].StreamItem:
- return this.createStreamItemMessage(this.readHeaders(properties), properties);
- case _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Completion:
- return this.createCompletionMessage(this.readHeaders(properties), properties);
- case _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Ping:
- return this.createPingMessage(properties);
- case _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Close:
- return this.createCloseMessage(properties);
- default:
- // Future protocol changes can add message types, old clients can ignore them
- logger.log(_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Unknown message type '" + messageType + "' ignored.");
- return null;
- }
- };
- MessagePackHubProtocol.prototype.createCloseMessage = function (properties) {
- // check minimum length to allow protocol to add items to the end of objects in future releases
- if (properties.length < 2) {
- throw new Error("Invalid payload for Close message.");
- }
- return {
- // Close messages have no headers.
- allowReconnect: properties.length >= 3 ? properties[2] : undefined,
- error: properties[1],
- type: _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Close,
- };
- };
- MessagePackHubProtocol.prototype.createPingMessage = function (properties) {
- // check minimum length to allow protocol to add items to the end of objects in future releases
- if (properties.length < 1) {
- throw new Error("Invalid payload for Ping message.");
- }
- return {
- // Ping messages have no headers.
- type: _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Ping,
- };
- };
- MessagePackHubProtocol.prototype.createInvocationMessage = function (headers, properties) {
- // check minimum length to allow protocol to add items to the end of objects in future releases
- if (properties.length < 5) {
- throw new Error("Invalid payload for Invocation message.");
- }
- var invocationId = properties[2];
- if (invocationId) {
- return {
- arguments: properties[4],
- headers: headers,
- invocationId: invocationId,
- streamIds: [],
- target: properties[3],
- type: _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Invocation,
- };
- }
- else {
- return {
- arguments: properties[4],
- headers: headers,
- streamIds: [],
- target: properties[3],
- type: _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Invocation,
- };
- }
- };
- MessagePackHubProtocol.prototype.createStreamItemMessage = function (headers, properties) {
- // check minimum length to allow protocol to add items to the end of objects in future releases
- if (properties.length < 4) {
- throw new Error("Invalid payload for StreamItem message.");
- }
- return {
- headers: headers,
- invocationId: properties[2],
- item: properties[3],
- type: _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].StreamItem,
- };
- };
- MessagePackHubProtocol.prototype.createCompletionMessage = function (headers, properties) {
- // check minimum length to allow protocol to add items to the end of objects in future releases
- if (properties.length < 4) {
- throw new Error("Invalid payload for Completion message.");
- }
- var resultKind = properties[3];
- if (resultKind !== this.voidResult && properties.length < 5) {
- throw new Error("Invalid payload for Completion message.");
- }
- var error;
- var result;
- switch (resultKind) {
- case this.errorResult:
- error = properties[4];
- break;
- case this.nonVoidResult:
- result = properties[4];
- break;
- }
- var completionMessage = {
- error: error,
- headers: headers,
- invocationId: properties[2],
- result: result,
- type: _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Completion,
- };
- return completionMessage;
- };
- MessagePackHubProtocol.prototype.writeInvocation = function (invocationMessage) {
- var msgpack = msgpack5__WEBPACK_IMPORTED_MODULE_1__(this.messagePackOptions);
- var payload;
- if (invocationMessage.streamIds) {
- payload = msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Invocation, invocationMessage.headers || {}, invocationMessage.invocationId || null,
- invocationMessage.target, invocationMessage.arguments, invocationMessage.streamIds]);
- }
- else {
- payload = msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Invocation, invocationMessage.headers || {}, invocationMessage.invocationId || null,
- invocationMessage.target, invocationMessage.arguments]);
- }
- return _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].write(payload.slice());
- };
- MessagePackHubProtocol.prototype.writeStreamInvocation = function (streamInvocationMessage) {
- var msgpack = msgpack5__WEBPACK_IMPORTED_MODULE_1__(this.messagePackOptions);
- var payload;
- if (streamInvocationMessage.streamIds) {
- payload = msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].StreamInvocation, streamInvocationMessage.headers || {}, streamInvocationMessage.invocationId,
- streamInvocationMessage.target, streamInvocationMessage.arguments, streamInvocationMessage.streamIds]);
- }
- else {
- payload = msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].StreamInvocation, streamInvocationMessage.headers || {}, streamInvocationMessage.invocationId,
- streamInvocationMessage.target, streamInvocationMessage.arguments]);
- }
- return _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].write(payload.slice());
- };
- MessagePackHubProtocol.prototype.writeStreamItem = function (streamItemMessage) {
- var msgpack = msgpack5__WEBPACK_IMPORTED_MODULE_1__(this.messagePackOptions);
- var payload = msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].StreamItem, streamItemMessage.headers || {}, streamItemMessage.invocationId,
- streamItemMessage.item]);
- return _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].write(payload.slice());
- };
- MessagePackHubProtocol.prototype.writeCompletion = function (completionMessage) {
- var msgpack = msgpack5__WEBPACK_IMPORTED_MODULE_1__(this.messagePackOptions);
- var resultKind = completionMessage.error ? this.errorResult : completionMessage.result ? this.nonVoidResult : this.voidResult;
- var payload;
- switch (resultKind) {
- case this.errorResult:
- payload = msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind, completionMessage.error]);
- break;
- case this.voidResult:
- payload = msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind]);
- break;
- case this.nonVoidResult:
- payload = msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind, completionMessage.result]);
- break;
- }
- return _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].write(payload.slice());
- };
- MessagePackHubProtocol.prototype.writeCancelInvocation = function (cancelInvocationMessage) {
- var msgpack = msgpack5__WEBPACK_IMPORTED_MODULE_1__(this.messagePackOptions);
- var payload = msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].CancelInvocation, cancelInvocationMessage.headers || {}, cancelInvocationMessage.invocationId]);
- return _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].write(payload.slice());
- };
- MessagePackHubProtocol.prototype.readHeaders = function (properties) {
- var headers = properties[1];
- if (typeof headers !== "object") {
- throw new Error("Invalid headers.");
- }
- return headers;
- };
- return MessagePackHubProtocol;
-}());
-
-
-
-/***/ }),
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/*!
- * The buffer module from node.js, for the browser.
- *
- * @author Feross Aboukhadijeh
- * @license MIT
- */
-/* eslint-disable no-proto */
-
-
-
-var base64 = __webpack_require__(4)
-var ieee754 = __webpack_require__(5)
-
-exports.Buffer = Buffer
-exports.SlowBuffer = SlowBuffer
-exports.INSPECT_MAX_BYTES = 50
-
-var K_MAX_LENGTH = 0x7fffffff
-exports.kMaxLength = K_MAX_LENGTH
-
-/**
- * If `Buffer.TYPED_ARRAY_SUPPORT`:
- * === true Use Uint8Array implementation (fastest)
- * === false Print warning and recommend using `buffer` v4.x which has an Object
- * implementation (most compatible, even IE6)
- *
- * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
- * Opera 11.6+, iOS 4.2+.
- *
- * We report that the browser does not support typed arrays if the are not subclassable
- * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
- * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
- * for __proto__ and has a buggy typed array implementation.
- */
-Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
-
-if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
- typeof console.error === 'function') {
- console.error(
- 'This browser lacks typed array (Uint8Array) support which is required by ' +
- '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
- )
-}
-
-function typedArraySupport () {
- // Can typed array instances can be augmented?
- try {
- var arr = new Uint8Array(1)
- arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
- return arr.foo() === 42
- } catch (e) {
- return false
- }
-}
-
-function createBuffer (length) {
- if (length > K_MAX_LENGTH) {
- throw new RangeError('Invalid typed array length')
- }
- // Return an augmented `Uint8Array` instance
- var buf = new Uint8Array(length)
- buf.__proto__ = Buffer.prototype
- return buf
-}
-
-/**
- * The Buffer constructor returns instances of `Uint8Array` that have their
- * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
- * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
- * and the `Uint8Array` methods. Square bracket notation works as expected -- it
- * returns a single octet.
- *
- * The `Uint8Array` prototype remains unmodified.
- */
-
-function Buffer (arg, encodingOrOffset, length) {
- // Common case.
- if (typeof arg === 'number') {
- if (typeof encodingOrOffset === 'string') {
- throw new Error(
- 'If encoding is specified then the first argument must be a string'
- )
- }
- return allocUnsafe(arg)
- }
- return from(arg, encodingOrOffset, length)
-}
-
-// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
-if (typeof Symbol !== 'undefined' && Symbol.species &&
- Buffer[Symbol.species] === Buffer) {
- Object.defineProperty(Buffer, Symbol.species, {
- value: null,
- configurable: true,
- enumerable: false,
- writable: false
- })
-}
-
-Buffer.poolSize = 8192 // not used by this implementation
-
-function from (value, encodingOrOffset, length) {
- if (typeof value === 'number') {
- throw new TypeError('"value" argument must not be a number')
- }
-
- if (isArrayBuffer(value)) {
- return fromArrayBuffer(value, encodingOrOffset, length)
- }
-
- if (typeof value === 'string') {
- return fromString(value, encodingOrOffset)
- }
-
- return fromObject(value)
-}
-
-/**
- * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
- * if value is a number.
- * Buffer.from(str[, encoding])
- * Buffer.from(array)
- * Buffer.from(buffer)
- * Buffer.from(arrayBuffer[, byteOffset[, length]])
- **/
-Buffer.from = function (value, encodingOrOffset, length) {
- return from(value, encodingOrOffset, length)
-}
-
-// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
-// https://github.com/feross/buffer/pull/148
-Buffer.prototype.__proto__ = Uint8Array.prototype
-Buffer.__proto__ = Uint8Array
-
-function assertSize (size) {
- if (typeof size !== 'number') {
- throw new TypeError('"size" argument must be a number')
- } else if (size < 0) {
- throw new RangeError('"size" argument must not be negative')
- }
-}
-
-function alloc (size, fill, encoding) {
- assertSize(size)
- if (size <= 0) {
- return createBuffer(size)
- }
- if (fill !== undefined) {
- // Only pay attention to encoding if it's a string. This
- // prevents accidentally sending in a number that would
- // be interpretted as a start offset.
- return typeof encoding === 'string'
- ? createBuffer(size).fill(fill, encoding)
- : createBuffer(size).fill(fill)
- }
- return createBuffer(size)
-}
-
-/**
- * Creates a new filled Buffer instance.
- * alloc(size[, fill[, encoding]])
- **/
-Buffer.alloc = function (size, fill, encoding) {
- return alloc(size, fill, encoding)
-}
-
-function allocUnsafe (size) {
- assertSize(size)
- return createBuffer(size < 0 ? 0 : checked(size) | 0)
-}
-
-/**
- * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
- * */
-Buffer.allocUnsafe = function (size) {
- return allocUnsafe(size)
-}
-/**
- * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
- */
-Buffer.allocUnsafeSlow = function (size) {
- return allocUnsafe(size)
-}
-
-function fromString (string, encoding) {
- if (typeof encoding !== 'string' || encoding === '') {
- encoding = 'utf8'
- }
-
- if (!Buffer.isEncoding(encoding)) {
- throw new TypeError('"encoding" must be a valid string encoding')
- }
-
- var length = byteLength(string, encoding) | 0
- var buf = createBuffer(length)
-
- var actual = buf.write(string, encoding)
-
- if (actual !== length) {
- // Writing a hex string, for example, that contains invalid characters will
- // cause everything after the first invalid character to be ignored. (e.g.
- // 'abxxcd' will be treated as 'ab')
- buf = buf.slice(0, actual)
- }
-
- return buf
-}
-
-function fromArrayLike (array) {
- var length = array.length < 0 ? 0 : checked(array.length) | 0
- var buf = createBuffer(length)
- for (var i = 0; i < length; i += 1) {
- buf[i] = array[i] & 255
- }
- return buf
-}
-
-function fromArrayBuffer (array, byteOffset, length) {
- if (byteOffset < 0 || array.byteLength < byteOffset) {
- throw new RangeError('\'offset\' is out of bounds')
- }
-
- if (array.byteLength < byteOffset + (length || 0)) {
- throw new RangeError('\'length\' is out of bounds')
- }
-
- var buf
- if (byteOffset === undefined && length === undefined) {
- buf = new Uint8Array(array)
- } else if (length === undefined) {
- buf = new Uint8Array(array, byteOffset)
- } else {
- buf = new Uint8Array(array, byteOffset, length)
- }
-
- // Return an augmented `Uint8Array` instance
- buf.__proto__ = Buffer.prototype
- return buf
-}
-
-function fromObject (obj) {
- if (Buffer.isBuffer(obj)) {
- var len = checked(obj.length) | 0
- var buf = createBuffer(len)
-
- if (buf.length === 0) {
- return buf
- }
-
- obj.copy(buf, 0, 0, len)
- return buf
- }
-
- if (obj) {
- if (isArrayBufferView(obj) || 'length' in obj) {
- if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
- return createBuffer(0)
- }
- return fromArrayLike(obj)
- }
-
- if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
- return fromArrayLike(obj.data)
- }
- }
-
- throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
-}
-
-function checked (length) {
- // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
- // length is NaN (which is otherwise coerced to zero.)
- if (length >= K_MAX_LENGTH) {
- throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
- 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
- }
- return length | 0
-}
-
-function SlowBuffer (length) {
- if (+length != length) { // eslint-disable-line eqeqeq
- length = 0
- }
- return Buffer.alloc(+length)
-}
-
-Buffer.isBuffer = function isBuffer (b) {
- return b != null && b._isBuffer === true
-}
-
-Buffer.compare = function compare (a, b) {
- if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
- throw new TypeError('Arguments must be Buffers')
- }
-
- if (a === b) return 0
-
- var x = a.length
- var y = b.length
-
- for (var i = 0, len = Math.min(x, y); i < len; ++i) {
- if (a[i] !== b[i]) {
- x = a[i]
- y = b[i]
- break
- }
- }
-
- if (x < y) return -1
- if (y < x) return 1
- return 0
-}
-
-Buffer.isEncoding = function isEncoding (encoding) {
- switch (String(encoding).toLowerCase()) {
- case 'hex':
- case 'utf8':
- case 'utf-8':
- case 'ascii':
- case 'latin1':
- case 'binary':
- case 'base64':
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return true
- default:
- return false
- }
-}
-
-Buffer.concat = function concat (list, length) {
- if (!Array.isArray(list)) {
- throw new TypeError('"list" argument must be an Array of Buffers')
- }
-
- if (list.length === 0) {
- return Buffer.alloc(0)
- }
-
- var i
- if (length === undefined) {
- length = 0
- for (i = 0; i < list.length; ++i) {
- length += list[i].length
- }
- }
-
- var buffer = Buffer.allocUnsafe(length)
- var pos = 0
- for (i = 0; i < list.length; ++i) {
- var buf = list[i]
- if (!Buffer.isBuffer(buf)) {
- throw new TypeError('"list" argument must be an Array of Buffers')
- }
- buf.copy(buffer, pos)
- pos += buf.length
- }
- return buffer
-}
-
-function byteLength (string, encoding) {
- if (Buffer.isBuffer(string)) {
- return string.length
- }
- if (isArrayBufferView(string) || isArrayBuffer(string)) {
- return string.byteLength
- }
- if (typeof string !== 'string') {
- string = '' + string
- }
-
- var len = string.length
- if (len === 0) return 0
-
- // Use a for loop to avoid recursion
- var loweredCase = false
- for (;;) {
- switch (encoding) {
- case 'ascii':
- case 'latin1':
- case 'binary':
- return len
- case 'utf8':
- case 'utf-8':
- case undefined:
- return utf8ToBytes(string).length
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return len * 2
- case 'hex':
- return len >>> 1
- case 'base64':
- return base64ToBytes(string).length
- default:
- if (loweredCase) return utf8ToBytes(string).length // assume utf8
- encoding = ('' + encoding).toLowerCase()
- loweredCase = true
- }
- }
-}
-Buffer.byteLength = byteLength
-
-function slowToString (encoding, start, end) {
- var loweredCase = false
-
- // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
- // property of a typed array.
-
- // This behaves neither like String nor Uint8Array in that we set start/end
- // to their upper/lower bounds if the value passed is out of range.
- // undefined is handled specially as per ECMA-262 6th Edition,
- // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
- if (start === undefined || start < 0) {
- start = 0
- }
- // Return early if start > this.length. Done here to prevent potential uint32
- // coercion fail below.
- if (start > this.length) {
- return ''
- }
-
- if (end === undefined || end > this.length) {
- end = this.length
- }
-
- if (end <= 0) {
- return ''
- }
-
- // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
- end >>>= 0
- start >>>= 0
-
- if (end <= start) {
- return ''
- }
-
- if (!encoding) encoding = 'utf8'
-
- while (true) {
- switch (encoding) {
- case 'hex':
- return hexSlice(this, start, end)
-
- case 'utf8':
- case 'utf-8':
- return utf8Slice(this, start, end)
-
- case 'ascii':
- return asciiSlice(this, start, end)
-
- case 'latin1':
- case 'binary':
- return latin1Slice(this, start, end)
-
- case 'base64':
- return base64Slice(this, start, end)
-
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return utf16leSlice(this, start, end)
-
- default:
- if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
- encoding = (encoding + '').toLowerCase()
- loweredCase = true
- }
- }
-}
-
-// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
-// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
-// reliably in a browserify context because there could be multiple different
-// copies of the 'buffer' package in use. This method works even for Buffer
-// instances that were created from another copy of the `buffer` package.
-// See: https://github.com/feross/buffer/issues/154
-Buffer.prototype._isBuffer = true
-
-function swap (b, n, m) {
- var i = b[n]
- b[n] = b[m]
- b[m] = i
-}
-
-Buffer.prototype.swap16 = function swap16 () {
- var len = this.length
- if (len % 2 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 16-bits')
- }
- for (var i = 0; i < len; i += 2) {
- swap(this, i, i + 1)
- }
- return this
-}
-
-Buffer.prototype.swap32 = function swap32 () {
- var len = this.length
- if (len % 4 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 32-bits')
- }
- for (var i = 0; i < len; i += 4) {
- swap(this, i, i + 3)
- swap(this, i + 1, i + 2)
- }
- return this
-}
-
-Buffer.prototype.swap64 = function swap64 () {
- var len = this.length
- if (len % 8 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 64-bits')
- }
- for (var i = 0; i < len; i += 8) {
- swap(this, i, i + 7)
- swap(this, i + 1, i + 6)
- swap(this, i + 2, i + 5)
- swap(this, i + 3, i + 4)
- }
- return this
-}
-
-Buffer.prototype.toString = function toString () {
- var length = this.length
- if (length === 0) return ''
- if (arguments.length === 0) return utf8Slice(this, 0, length)
- return slowToString.apply(this, arguments)
-}
-
-Buffer.prototype.equals = function equals (b) {
- if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
- if (this === b) return true
- return Buffer.compare(this, b) === 0
-}
-
-Buffer.prototype.inspect = function inspect () {
- var str = ''
- var max = exports.INSPECT_MAX_BYTES
- if (this.length > 0) {
- str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
- if (this.length > max) str += ' ... '
- }
- return ''
-}
-
-Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
- if (!Buffer.isBuffer(target)) {
- throw new TypeError('Argument must be a Buffer')
- }
-
- if (start === undefined) {
- start = 0
- }
- if (end === undefined) {
- end = target ? target.length : 0
- }
- if (thisStart === undefined) {
- thisStart = 0
- }
- if (thisEnd === undefined) {
- thisEnd = this.length
- }
-
- if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
- throw new RangeError('out of range index')
- }
-
- if (thisStart >= thisEnd && start >= end) {
- return 0
- }
- if (thisStart >= thisEnd) {
- return -1
- }
- if (start >= end) {
- return 1
- }
-
- start >>>= 0
- end >>>= 0
- thisStart >>>= 0
- thisEnd >>>= 0
-
- if (this === target) return 0
-
- var x = thisEnd - thisStart
- var y = end - start
- var len = Math.min(x, y)
-
- var thisCopy = this.slice(thisStart, thisEnd)
- var targetCopy = target.slice(start, end)
-
- for (var i = 0; i < len; ++i) {
- if (thisCopy[i] !== targetCopy[i]) {
- x = thisCopy[i]
- y = targetCopy[i]
- break
- }
- }
-
- if (x < y) return -1
- if (y < x) return 1
- return 0
-}
-
-// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
-// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
-//
-// Arguments:
-// - buffer - a Buffer to search
-// - val - a string, Buffer, or number
-// - byteOffset - an index into `buffer`; will be clamped to an int32
-// - encoding - an optional encoding, relevant is val is a string
-// - dir - true for indexOf, false for lastIndexOf
-function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
- // Empty buffer means no match
- if (buffer.length === 0) return -1
-
- // Normalize byteOffset
- if (typeof byteOffset === 'string') {
- encoding = byteOffset
- byteOffset = 0
- } else if (byteOffset > 0x7fffffff) {
- byteOffset = 0x7fffffff
- } else if (byteOffset < -0x80000000) {
- byteOffset = -0x80000000
- }
- byteOffset = +byteOffset // Coerce to Number.
- if (numberIsNaN(byteOffset)) {
- // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
- byteOffset = dir ? 0 : (buffer.length - 1)
- }
-
- // Normalize byteOffset: negative offsets start from the end of the buffer
- if (byteOffset < 0) byteOffset = buffer.length + byteOffset
- if (byteOffset >= buffer.length) {
- if (dir) return -1
- else byteOffset = buffer.length - 1
- } else if (byteOffset < 0) {
- if (dir) byteOffset = 0
- else return -1
- }
-
- // Normalize val
- if (typeof val === 'string') {
- val = Buffer.from(val, encoding)
- }
-
- // Finally, search either indexOf (if dir is true) or lastIndexOf
- if (Buffer.isBuffer(val)) {
- // Special case: looking for empty string/buffer always fails
- if (val.length === 0) {
- return -1
- }
- return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
- } else if (typeof val === 'number') {
- val = val & 0xFF // Search for a byte value [0-255]
- if (typeof Uint8Array.prototype.indexOf === 'function') {
- if (dir) {
- return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
- } else {
- return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
- }
- }
- return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
- }
-
- throw new TypeError('val must be string, number or Buffer')
-}
-
-function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
- var indexSize = 1
- var arrLength = arr.length
- var valLength = val.length
-
- if (encoding !== undefined) {
- encoding = String(encoding).toLowerCase()
- if (encoding === 'ucs2' || encoding === 'ucs-2' ||
- encoding === 'utf16le' || encoding === 'utf-16le') {
- if (arr.length < 2 || val.length < 2) {
- return -1
- }
- indexSize = 2
- arrLength /= 2
- valLength /= 2
- byteOffset /= 2
- }
- }
-
- function read (buf, i) {
- if (indexSize === 1) {
- return buf[i]
- } else {
- return buf.readUInt16BE(i * indexSize)
- }
- }
-
- var i
- if (dir) {
- var foundIndex = -1
- for (i = byteOffset; i < arrLength; i++) {
- if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
- if (foundIndex === -1) foundIndex = i
- if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
- } else {
- if (foundIndex !== -1) i -= i - foundIndex
- foundIndex = -1
- }
- }
- } else {
- if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
- for (i = byteOffset; i >= 0; i--) {
- var found = true
- for (var j = 0; j < valLength; j++) {
- if (read(arr, i + j) !== read(val, j)) {
- found = false
- break
- }
- }
- if (found) return i
- }
- }
-
- return -1
-}
-
-Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
- return this.indexOf(val, byteOffset, encoding) !== -1
-}
-
-Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
- return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
-}
-
-Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
- return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
-}
-
-function hexWrite (buf, string, offset, length) {
- offset = Number(offset) || 0
- var remaining = buf.length - offset
- if (!length) {
- length = remaining
- } else {
- length = Number(length)
- if (length > remaining) {
- length = remaining
- }
- }
-
- // must be an even number of digits
- var strLen = string.length
- if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
-
- if (length > strLen / 2) {
- length = strLen / 2
- }
- for (var i = 0; i < length; ++i) {
- var parsed = parseInt(string.substr(i * 2, 2), 16)
- if (numberIsNaN(parsed)) return i
- buf[offset + i] = parsed
- }
- return i
-}
-
-function utf8Write (buf, string, offset, length) {
- return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
-}
-
-function asciiWrite (buf, string, offset, length) {
- return blitBuffer(asciiToBytes(string), buf, offset, length)
-}
-
-function latin1Write (buf, string, offset, length) {
- return asciiWrite(buf, string, offset, length)
-}
-
-function base64Write (buf, string, offset, length) {
- return blitBuffer(base64ToBytes(string), buf, offset, length)
-}
-
-function ucs2Write (buf, string, offset, length) {
- return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
-}
-
-Buffer.prototype.write = function write (string, offset, length, encoding) {
- // Buffer#write(string)
- if (offset === undefined) {
- encoding = 'utf8'
- length = this.length
- offset = 0
- // Buffer#write(string, encoding)
- } else if (length === undefined && typeof offset === 'string') {
- encoding = offset
- length = this.length
- offset = 0
- // Buffer#write(string, offset[, length][, encoding])
- } else if (isFinite(offset)) {
- offset = offset >>> 0
- if (isFinite(length)) {
- length = length >>> 0
- if (encoding === undefined) encoding = 'utf8'
- } else {
- encoding = length
- length = undefined
- }
- } else {
- throw new Error(
- 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
- )
- }
-
- var remaining = this.length - offset
- if (length === undefined || length > remaining) length = remaining
-
- if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
- throw new RangeError('Attempt to write outside buffer bounds')
- }
-
- if (!encoding) encoding = 'utf8'
-
- var loweredCase = false
- for (;;) {
- switch (encoding) {
- case 'hex':
- return hexWrite(this, string, offset, length)
-
- case 'utf8':
- case 'utf-8':
- return utf8Write(this, string, offset, length)
-
- case 'ascii':
- return asciiWrite(this, string, offset, length)
-
- case 'latin1':
- case 'binary':
- return latin1Write(this, string, offset, length)
-
- case 'base64':
- // Warning: maxLength not taken into account in base64Write
- return base64Write(this, string, offset, length)
-
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return ucs2Write(this, string, offset, length)
-
- default:
- if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
- encoding = ('' + encoding).toLowerCase()
- loweredCase = true
- }
- }
-}
-
-Buffer.prototype.toJSON = function toJSON () {
- return {
- type: 'Buffer',
- data: Array.prototype.slice.call(this._arr || this, 0)
- }
-}
-
-function base64Slice (buf, start, end) {
- if (start === 0 && end === buf.length) {
- return base64.fromByteArray(buf)
- } else {
- return base64.fromByteArray(buf.slice(start, end))
- }
-}
-
-function utf8Slice (buf, start, end) {
- end = Math.min(buf.length, end)
- var res = []
-
- var i = start
- while (i < end) {
- var firstByte = buf[i]
- var codePoint = null
- var bytesPerSequence = (firstByte > 0xEF) ? 4
- : (firstByte > 0xDF) ? 3
- : (firstByte > 0xBF) ? 2
- : 1
-
- if (i + bytesPerSequence <= end) {
- var secondByte, thirdByte, fourthByte, tempCodePoint
-
- switch (bytesPerSequence) {
- case 1:
- if (firstByte < 0x80) {
- codePoint = firstByte
- }
- break
- case 2:
- secondByte = buf[i + 1]
- if ((secondByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
- if (tempCodePoint > 0x7F) {
- codePoint = tempCodePoint
- }
- }
- break
- case 3:
- secondByte = buf[i + 1]
- thirdByte = buf[i + 2]
- if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
- if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
- codePoint = tempCodePoint
- }
- }
- break
- case 4:
- secondByte = buf[i + 1]
- thirdByte = buf[i + 2]
- fourthByte = buf[i + 3]
- if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
- if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
- codePoint = tempCodePoint
- }
- }
- }
- }
-
- if (codePoint === null) {
- // we did not generate a valid codePoint so insert a
- // replacement char (U+FFFD) and advance only 1 byte
- codePoint = 0xFFFD
- bytesPerSequence = 1
- } else if (codePoint > 0xFFFF) {
- // encode to utf16 (surrogate pair dance)
- codePoint -= 0x10000
- res.push(codePoint >>> 10 & 0x3FF | 0xD800)
- codePoint = 0xDC00 | codePoint & 0x3FF
- }
-
- res.push(codePoint)
- i += bytesPerSequence
- }
-
- return decodeCodePointsArray(res)
-}
-
-// Based on http://stackoverflow.com/a/22747272/680742, the browser with
-// the lowest limit is Chrome, with 0x10000 args.
-// We go 1 magnitude less, for safety
-var MAX_ARGUMENTS_LENGTH = 0x1000
-
-function decodeCodePointsArray (codePoints) {
- var len = codePoints.length
- if (len <= MAX_ARGUMENTS_LENGTH) {
- return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
- }
-
- // Decode in chunks to avoid "call stack size exceeded".
- var res = ''
- var i = 0
- while (i < len) {
- res += String.fromCharCode.apply(
- String,
- codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
- )
- }
- return res
-}
-
-function asciiSlice (buf, start, end) {
- var ret = ''
- end = Math.min(buf.length, end)
-
- for (var i = start; i < end; ++i) {
- ret += String.fromCharCode(buf[i] & 0x7F)
- }
- return ret
-}
-
-function latin1Slice (buf, start, end) {
- var ret = ''
- end = Math.min(buf.length, end)
-
- for (var i = start; i < end; ++i) {
- ret += String.fromCharCode(buf[i])
- }
- return ret
-}
-
-function hexSlice (buf, start, end) {
- var len = buf.length
-
- if (!start || start < 0) start = 0
- if (!end || end < 0 || end > len) end = len
-
- var out = ''
- for (var i = start; i < end; ++i) {
- out += toHex(buf[i])
- }
- return out
-}
-
-function utf16leSlice (buf, start, end) {
- var bytes = buf.slice(start, end)
- var res = ''
- for (var i = 0; i < bytes.length; i += 2) {
- res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
- }
- return res
-}
-
-Buffer.prototype.slice = function slice (start, end) {
- var len = this.length
- start = ~~start
- end = end === undefined ? len : ~~end
-
- if (start < 0) {
- start += len
- if (start < 0) start = 0
- } else if (start > len) {
- start = len
- }
-
- if (end < 0) {
- end += len
- if (end < 0) end = 0
- } else if (end > len) {
- end = len
- }
-
- if (end < start) end = start
-
- var newBuf = this.subarray(start, end)
- // Return an augmented `Uint8Array` instance
- newBuf.__proto__ = Buffer.prototype
- return newBuf
-}
-
-/*
- * Need to make sure that buffer isn't trying to write out of bounds.
- */
-function checkOffset (offset, ext, length) {
- if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
- if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
-}
-
-Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
-
- var val = this[offset]
- var mul = 1
- var i = 0
- while (++i < byteLength && (mul *= 0x100)) {
- val += this[offset + i] * mul
- }
-
- return val
-}
-
-Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) {
- checkOffset(offset, byteLength, this.length)
- }
-
- var val = this[offset + --byteLength]
- var mul = 1
- while (byteLength > 0 && (mul *= 0x100)) {
- val += this[offset + --byteLength] * mul
- }
-
- return val
-}
-
-Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 1, this.length)
- return this[offset]
-}
-
-Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 2, this.length)
- return this[offset] | (this[offset + 1] << 8)
-}
-
-Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 2, this.length)
- return (this[offset] << 8) | this[offset + 1]
-}
-
-Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
-
- return ((this[offset]) |
- (this[offset + 1] << 8) |
- (this[offset + 2] << 16)) +
- (this[offset + 3] * 0x1000000)
-}
-
-Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
-
- return (this[offset] * 0x1000000) +
- ((this[offset + 1] << 16) |
- (this[offset + 2] << 8) |
- this[offset + 3])
-}
-
-Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
-
- var val = this[offset]
- var mul = 1
- var i = 0
- while (++i < byteLength && (mul *= 0x100)) {
- val += this[offset + i] * mul
- }
- mul *= 0x80
-
- if (val >= mul) val -= Math.pow(2, 8 * byteLength)
-
- return val
-}
-
-Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
-
- var i = byteLength
- var mul = 1
- var val = this[offset + --i]
- while (i > 0 && (mul *= 0x100)) {
- val += this[offset + --i] * mul
- }
- mul *= 0x80
-
- if (val >= mul) val -= Math.pow(2, 8 * byteLength)
-
- return val
-}
-
-Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 1, this.length)
- if (!(this[offset] & 0x80)) return (this[offset])
- return ((0xff - this[offset] + 1) * -1)
-}
-
-Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 2, this.length)
- var val = this[offset] | (this[offset + 1] << 8)
- return (val & 0x8000) ? val | 0xFFFF0000 : val
-}
-
-Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 2, this.length)
- var val = this[offset + 1] | (this[offset] << 8)
- return (val & 0x8000) ? val | 0xFFFF0000 : val
-}
-
-Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
-
- return (this[offset]) |
- (this[offset + 1] << 8) |
- (this[offset + 2] << 16) |
- (this[offset + 3] << 24)
-}
-
-Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
-
- return (this[offset] << 24) |
- (this[offset + 1] << 16) |
- (this[offset + 2] << 8) |
- (this[offset + 3])
-}
-
-Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
- return ieee754.read(this, offset, true, 23, 4)
-}
-
-Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 4, this.length)
- return ieee754.read(this, offset, false, 23, 4)
-}
-
-Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 8, this.length)
- return ieee754.read(this, offset, true, 52, 8)
-}
-
-Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
- offset = offset >>> 0
- if (!noAssert) checkOffset(offset, 8, this.length)
- return ieee754.read(this, offset, false, 52, 8)
-}
-
-function checkInt (buf, value, offset, ext, max, min) {
- if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
- if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
- if (offset + ext > buf.length) throw new RangeError('Index out of range')
-}
-
-Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) {
- var maxBytes = Math.pow(2, 8 * byteLength) - 1
- checkInt(this, value, offset, byteLength, maxBytes, 0)
- }
-
- var mul = 1
- var i = 0
- this[offset] = value & 0xFF
- while (++i < byteLength && (mul *= 0x100)) {
- this[offset + i] = (value / mul) & 0xFF
- }
-
- return offset + byteLength
-}
-
-Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- if (!noAssert) {
- var maxBytes = Math.pow(2, 8 * byteLength) - 1
- checkInt(this, value, offset, byteLength, maxBytes, 0)
- }
-
- var i = byteLength - 1
- var mul = 1
- this[offset + i] = value & 0xFF
- while (--i >= 0 && (mul *= 0x100)) {
- this[offset + i] = (value / mul) & 0xFF
- }
-
- return offset + byteLength
-}
-
-Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
- this[offset] = (value & 0xff)
- return offset + 1
-}
-
-Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- return offset + 2
-}
-
-Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
- this[offset] = (value >>> 8)
- this[offset + 1] = (value & 0xff)
- return offset + 2
-}
-
-Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
- this[offset + 3] = (value >>> 24)
- this[offset + 2] = (value >>> 16)
- this[offset + 1] = (value >>> 8)
- this[offset] = (value & 0xff)
- return offset + 4
-}
-
-Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
- this[offset] = (value >>> 24)
- this[offset + 1] = (value >>> 16)
- this[offset + 2] = (value >>> 8)
- this[offset + 3] = (value & 0xff)
- return offset + 4
-}
-
-Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) {
- var limit = Math.pow(2, (8 * byteLength) - 1)
-
- checkInt(this, value, offset, byteLength, limit - 1, -limit)
- }
-
- var i = 0
- var mul = 1
- var sub = 0
- this[offset] = value & 0xFF
- while (++i < byteLength && (mul *= 0x100)) {
- if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
- sub = 1
- }
- this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
- }
-
- return offset + byteLength
-}
-
-Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) {
- var limit = Math.pow(2, (8 * byteLength) - 1)
-
- checkInt(this, value, offset, byteLength, limit - 1, -limit)
- }
-
- var i = byteLength - 1
- var mul = 1
- var sub = 0
- this[offset + i] = value & 0xFF
- while (--i >= 0 && (mul *= 0x100)) {
- if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
- sub = 1
- }
- this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
- }
-
- return offset + byteLength
-}
-
-Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
- if (value < 0) value = 0xff + value + 1
- this[offset] = (value & 0xff)
- return offset + 1
-}
-
-Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- return offset + 2
-}
-
-Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
- this[offset] = (value >>> 8)
- this[offset + 1] = (value & 0xff)
- return offset + 2
-}
-
-Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- this[offset + 2] = (value >>> 16)
- this[offset + 3] = (value >>> 24)
- return offset + 4
-}
-
-Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
- if (value < 0) value = 0xffffffff + value + 1
- this[offset] = (value >>> 24)
- this[offset + 1] = (value >>> 16)
- this[offset + 2] = (value >>> 8)
- this[offset + 3] = (value & 0xff)
- return offset + 4
-}
-
-function checkIEEE754 (buf, value, offset, ext, max, min) {
- if (offset + ext > buf.length) throw new RangeError('Index out of range')
- if (offset < 0) throw new RangeError('Index out of range')
-}
-
-function writeFloat (buf, value, offset, littleEndian, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) {
- checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
- }
- ieee754.write(buf, value, offset, littleEndian, 23, 4)
- return offset + 4
-}
-
-Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
- return writeFloat(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
- return writeFloat(this, value, offset, false, noAssert)
-}
-
-function writeDouble (buf, value, offset, littleEndian, noAssert) {
- value = +value
- offset = offset >>> 0
- if (!noAssert) {
- checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
- }
- ieee754.write(buf, value, offset, littleEndian, 52, 8)
- return offset + 8
-}
-
-Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
- return writeDouble(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
- return writeDouble(this, value, offset, false, noAssert)
-}
-
-// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
-Buffer.prototype.copy = function copy (target, targetStart, start, end) {
- if (!start) start = 0
- if (!end && end !== 0) end = this.length
- if (targetStart >= target.length) targetStart = target.length
- if (!targetStart) targetStart = 0
- if (end > 0 && end < start) end = start
-
- // Copy 0 bytes; we're done
- if (end === start) return 0
- if (target.length === 0 || this.length === 0) return 0
-
- // Fatal error conditions
- if (targetStart < 0) {
- throw new RangeError('targetStart out of bounds')
- }
- if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
- if (end < 0) throw new RangeError('sourceEnd out of bounds')
-
- // Are we oob?
- if (end > this.length) end = this.length
- if (target.length - targetStart < end - start) {
- end = target.length - targetStart + start
- }
-
- var len = end - start
- var i
-
- if (this === target && start < targetStart && targetStart < end) {
- // descending copy from end
- for (i = len - 1; i >= 0; --i) {
- target[i + targetStart] = this[i + start]
- }
- } else if (len < 1000) {
- // ascending copy from start
- for (i = 0; i < len; ++i) {
- target[i + targetStart] = this[i + start]
- }
- } else {
- Uint8Array.prototype.set.call(
- target,
- this.subarray(start, start + len),
- targetStart
- )
- }
-
- return len
-}
-
-// Usage:
-// buffer.fill(number[, offset[, end]])
-// buffer.fill(buffer[, offset[, end]])
-// buffer.fill(string[, offset[, end]][, encoding])
-Buffer.prototype.fill = function fill (val, start, end, encoding) {
- // Handle string cases:
- if (typeof val === 'string') {
- if (typeof start === 'string') {
- encoding = start
- start = 0
- end = this.length
- } else if (typeof end === 'string') {
- encoding = end
- end = this.length
- }
- if (val.length === 1) {
- var code = val.charCodeAt(0)
- if (code < 256) {
- val = code
- }
- }
- if (encoding !== undefined && typeof encoding !== 'string') {
- throw new TypeError('encoding must be a string')
- }
- if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
- throw new TypeError('Unknown encoding: ' + encoding)
- }
- } else if (typeof val === 'number') {
- val = val & 255
- }
-
- // Invalid ranges are not set to a default, so can range check early.
- if (start < 0 || this.length < start || this.length < end) {
- throw new RangeError('Out of range index')
- }
-
- if (end <= start) {
- return this
- }
-
- start = start >>> 0
- end = end === undefined ? this.length : end >>> 0
-
- if (!val) val = 0
-
- var i
- if (typeof val === 'number') {
- for (i = start; i < end; ++i) {
- this[i] = val
- }
- } else {
- var bytes = Buffer.isBuffer(val)
- ? val
- : new Buffer(val, encoding)
- var len = bytes.length
- for (i = 0; i < end - start; ++i) {
- this[i + start] = bytes[i % len]
- }
- }
-
- return this
-}
-
-// HELPER FUNCTIONS
-// ================
-
-var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
-
-function base64clean (str) {
- // Node strips out invalid characters like \n and \t from the string, base64-js does not
- str = str.trim().replace(INVALID_BASE64_RE, '')
- // Node converts strings with length < 2 to ''
- if (str.length < 2) return ''
- // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
- while (str.length % 4 !== 0) {
- str = str + '='
- }
- return str
-}
-
-function toHex (n) {
- if (n < 16) return '0' + n.toString(16)
- return n.toString(16)
-}
-
-function utf8ToBytes (string, units) {
- units = units || Infinity
- var codePoint
- var length = string.length
- var leadSurrogate = null
- var bytes = []
-
- for (var i = 0; i < length; ++i) {
- codePoint = string.charCodeAt(i)
-
- // is surrogate component
- if (codePoint > 0xD7FF && codePoint < 0xE000) {
- // last char was a lead
- if (!leadSurrogate) {
- // no lead yet
- if (codePoint > 0xDBFF) {
- // unexpected trail
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- continue
- } else if (i + 1 === length) {
- // unpaired lead
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- continue
- }
-
- // valid lead
- leadSurrogate = codePoint
-
- continue
- }
-
- // 2 leads in a row
- if (codePoint < 0xDC00) {
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- leadSurrogate = codePoint
- continue
- }
-
- // valid surrogate pair
- codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
- } else if (leadSurrogate) {
- // valid bmp char, but last char was a lead
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- }
-
- leadSurrogate = null
-
- // encode utf8
- if (codePoint < 0x80) {
- if ((units -= 1) < 0) break
- bytes.push(codePoint)
- } else if (codePoint < 0x800) {
- if ((units -= 2) < 0) break
- bytes.push(
- codePoint >> 0x6 | 0xC0,
- codePoint & 0x3F | 0x80
- )
- } else if (codePoint < 0x10000) {
- if ((units -= 3) < 0) break
- bytes.push(
- codePoint >> 0xC | 0xE0,
- codePoint >> 0x6 & 0x3F | 0x80,
- codePoint & 0x3F | 0x80
- )
- } else if (codePoint < 0x110000) {
- if ((units -= 4) < 0) break
- bytes.push(
- codePoint >> 0x12 | 0xF0,
- codePoint >> 0xC & 0x3F | 0x80,
- codePoint >> 0x6 & 0x3F | 0x80,
- codePoint & 0x3F | 0x80
- )
- } else {
- throw new Error('Invalid code point')
- }
- }
-
- return bytes
-}
-
-function asciiToBytes (str) {
- var byteArray = []
- for (var i = 0; i < str.length; ++i) {
- // Node's code seems to be doing this and not & 0x7F..
- byteArray.push(str.charCodeAt(i) & 0xFF)
- }
- return byteArray
-}
-
-function utf16leToBytes (str, units) {
- var c, hi, lo
- var byteArray = []
- for (var i = 0; i < str.length; ++i) {
- if ((units -= 2) < 0) break
-
- c = str.charCodeAt(i)
- hi = c >> 8
- lo = c % 256
- byteArray.push(lo)
- byteArray.push(hi)
- }
-
- return byteArray
-}
-
-function base64ToBytes (str) {
- return base64.toByteArray(base64clean(str))
-}
-
-function blitBuffer (src, dst, offset, length) {
- for (var i = 0; i < length; ++i) {
- if ((i + offset >= dst.length) || (i >= src.length)) break
- dst[i + offset] = src[i]
- }
- return i
-}
-
-// ArrayBuffers from another context (i.e. an iframe) do not pass the `instanceof` check
-// but they should be treated as valid. See: https://github.com/feross/buffer/issues/166
-function isArrayBuffer (obj) {
- return obj instanceof ArrayBuffer ||
- (obj != null && obj.constructor != null && obj.constructor.name === 'ArrayBuffer' &&
- typeof obj.byteLength === 'number')
-}
-
-// Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`
-function isArrayBufferView (obj) {
- return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)
-}
-
-function numberIsNaN (obj) {
- return obj !== obj // eslint-disable-line no-self-compare
-}
-
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-exports.byteLength = byteLength
-exports.toByteArray = toByteArray
-exports.fromByteArray = fromByteArray
-
-var lookup = []
-var revLookup = []
-var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
-
-var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
-for (var i = 0, len = code.length; i < len; ++i) {
- lookup[i] = code[i]
- revLookup[code.charCodeAt(i)] = i
-}
-
-revLookup['-'.charCodeAt(0)] = 62
-revLookup['_'.charCodeAt(0)] = 63
-
-function placeHoldersCount (b64) {
- var len = b64.length
- if (len % 4 > 0) {
- throw new Error('Invalid string. Length must be a multiple of 4')
- }
-
- // the number of equal signs (place holders)
- // if there are two placeholders, than the two characters before it
- // represent one byte
- // if there is only one, then the three characters before it represent 2 bytes
- // this is just a cheap hack to not do indexOf twice
- return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
-}
-
-function byteLength (b64) {
- // base64 is 4/3 + up to two characters of the original data
- return (b64.length * 3 / 4) - placeHoldersCount(b64)
-}
-
-function toByteArray (b64) {
- var i, l, tmp, placeHolders, arr
- var len = b64.length
- placeHolders = placeHoldersCount(b64)
-
- arr = new Arr((len * 3 / 4) - placeHolders)
-
- // if there are placeholders, only get up to the last complete 4 chars
- l = placeHolders > 0 ? len - 4 : len
-
- var L = 0
-
- for (i = 0; i < l; i += 4) {
- tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
- arr[L++] = (tmp >> 16) & 0xFF
- arr[L++] = (tmp >> 8) & 0xFF
- arr[L++] = tmp & 0xFF
- }
-
- if (placeHolders === 2) {
- tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
- arr[L++] = tmp & 0xFF
- } else if (placeHolders === 1) {
- tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
- arr[L++] = (tmp >> 8) & 0xFF
- arr[L++] = tmp & 0xFF
- }
-
- return arr
-}
-
-function tripletToBase64 (num) {
- return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
-}
-
-function encodeChunk (uint8, start, end) {
- var tmp
- var output = []
- for (var i = start; i < end; i += 3) {
- tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
- output.push(tripletToBase64(tmp))
- }
- return output.join('')
-}
-
-function fromByteArray (uint8) {
- var tmp
- var len = uint8.length
- var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
- var output = ''
- var parts = []
- var maxChunkLength = 16383 // must be multiple of 3
-
- // go through the array every three bytes, we'll deal with trailing stuff later
- for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
- parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
- }
-
- // pad the end with zeros, but make sure to not forget the extra bytes
- if (extraBytes === 1) {
- tmp = uint8[len - 1]
- output += lookup[tmp >> 2]
- output += lookup[(tmp << 4) & 0x3F]
- output += '=='
- } else if (extraBytes === 2) {
- tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
- output += lookup[tmp >> 10]
- output += lookup[(tmp >> 4) & 0x3F]
- output += lookup[(tmp << 2) & 0x3F]
- output += '='
- }
-
- parts.push(output)
-
- return parts.join('')
-}
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports) {
-
-exports.read = function (buffer, offset, isLE, mLen, nBytes) {
- var e, m
- var eLen = nBytes * 8 - mLen - 1
- var eMax = (1 << eLen) - 1
- var eBias = eMax >> 1
- var nBits = -7
- var i = isLE ? (nBytes - 1) : 0
- var d = isLE ? -1 : 1
- var s = buffer[offset + i]
-
- i += d
-
- e = s & ((1 << (-nBits)) - 1)
- s >>= (-nBits)
- nBits += eLen
- for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
-
- m = e & ((1 << (-nBits)) - 1)
- e >>= (-nBits)
- nBits += mLen
- for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
-
- if (e === 0) {
- e = 1 - eBias
- } else if (e === eMax) {
- return m ? NaN : ((s ? -1 : 1) * Infinity)
- } else {
- m = m + Math.pow(2, mLen)
- e = e - eBias
- }
- return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
-}
-
-exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
- var e, m, c
- var eLen = nBytes * 8 - mLen - 1
- var eMax = (1 << eLen) - 1
- var eBias = eMax >> 1
- var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
- var i = isLE ? 0 : (nBytes - 1)
- var d = isLE ? 1 : -1
- var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
-
- value = Math.abs(value)
-
- if (isNaN(value) || value === Infinity) {
- m = isNaN(value) ? 1 : 0
- e = eMax
- } else {
- e = Math.floor(Math.log(value) / Math.LN2)
- if (value * (c = Math.pow(2, -e)) < 1) {
- e--
- c *= 2
- }
- if (e + eBias >= 1) {
- value += rt / c
- } else {
- value += rt * Math.pow(2, 1 - eBias)
- }
- if (value * c >= 2) {
- e++
- c /= 2
- }
-
- if (e + eBias >= eMax) {
- m = 0
- e = eMax
- } else if (e + eBias >= 1) {
- m = (value * c - 1) * Math.pow(2, mLen)
- e = e + eBias
- } else {
- m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
- e = 0
- }
- }
-
- for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
-
- e = (e << mLen) | m
- eLen += mLen
- for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
-
- buffer[offset + i - d] |= s * 128
-}
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports) {
-
-module.exports = __WEBPACK_EXTERNAL_MODULE__6__;
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports) {
-
-module.exports = __WEBPACK_EXTERNAL_MODULE__7__;
-
-/***/ }),
-/* 8 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BinaryMessageFormat", function() { return BinaryMessageFormat; });
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-// Not exported from index.
-/** @private */
-var BinaryMessageFormat = /** @class */ (function () {
- function BinaryMessageFormat() {
- }
- // The length prefix of binary messages is encoded as VarInt. Read the comment in
- // the BinaryMessageParser.TryParseMessage for details.
- BinaryMessageFormat.write = function (output) {
- // msgpack5 uses returns Buffer instead of Uint8Array on IE10 and some other browser
- // in which case .byteLength does will be undefined
- var size = output.byteLength || output.length;
- var lenBuffer = [];
- do {
- var sizePart = size & 0x7f;
- size = size >> 7;
- if (size > 0) {
- sizePart |= 0x80;
- }
- lenBuffer.push(sizePart);
- } while (size > 0);
- // msgpack5 uses returns Buffer instead of Uint8Array on IE10 and some other browser
- // in which case .byteLength does will be undefined
- size = output.byteLength || output.length;
- var buffer = new Uint8Array(lenBuffer.length + size);
- buffer.set(lenBuffer, 0);
- buffer.set(output, lenBuffer.length);
- return buffer.buffer;
- };
- BinaryMessageFormat.parse = function (input) {
- var result = [];
- var uint8Array = new Uint8Array(input);
- var maxLengthPrefixSize = 5;
- var numBitsToShift = [0, 7, 14, 21, 28];
- for (var offset = 0; offset < input.byteLength;) {
- var numBytes = 0;
- var size = 0;
- var byteRead = void 0;
- do {
- byteRead = uint8Array[offset + numBytes];
- size = size | ((byteRead & 0x7f) << (numBitsToShift[numBytes]));
- numBytes++;
- } while (numBytes < Math.min(maxLengthPrefixSize, input.byteLength - offset) && (byteRead & 0x80) !== 0);
- if ((byteRead & 0x80) !== 0 && numBytes < maxLengthPrefixSize) {
- throw new Error("Cannot read message size.");
- }
- if (numBytes === maxLengthPrefixSize && byteRead > 7) {
- throw new Error("Messages bigger than 2GB are not supported.");
- }
- if (uint8Array.byteLength >= (offset + numBytes + size)) {
- // IE does not support .slice() so use subarray
- result.push(uint8Array.slice
- ? uint8Array.slice(offset + numBytes, offset + numBytes + size)
- : uint8Array.subarray(offset + numBytes, offset + numBytes + size));
- }
- else {
- throw new Error("Incomplete message.");
- }
- offset = offset + numBytes + size;
- }
- return result;
- };
- return BinaryMessageFormat;
-}());
-
-
-
-/***/ }),
-/* 9 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArrayBuffer", function() { return isArrayBuffer; });
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-// Copied from signalr/Utils.ts
-/** @private */
-function isArrayBuffer(val) {
- return val && typeof ArrayBuffer !== "undefined" &&
- (val instanceof ArrayBuffer ||
- // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof
- (val.constructor && val.constructor.name === "ArrayBuffer"));
-}
-
-
-/***/ })
-/******/ ]);
-});
+var t,i;t=self,i=function(t){return(()=>{var i=[,i=>{i.exports=t}],e={};function n(t){var r=e[t];if(void 0!==r)return r.exports;var s=e[t]={exports:{}};return i[t](s,s.exports,n),s.exports}n.d=(t,i)=>{for(var e in i)n.o(i,e)&&!n.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:i[e]})},n.o=(t,i)=>Object.prototype.hasOwnProperty.call(t,i),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"t",{value:!0})};var r={};return(()=>{n.r(r),n.d(r,{MessagePackHubProtocol:()=>P,VERSION:()=>z});var t=4294967295;function i(t,i,e){var n=Math.floor(e/4294967296),r=e;t.setUint32(i,n),t.setUint32(i+4,r)}function e(t,i){return 4294967296*t.getInt32(i)+t.getUint32(i+4)}var s=("undefined"==typeof process||"never"!==process.env.TEXT_ENCODING)&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function h(t){for(var i=t.length,e=0,n=0;n=55296&&r<=56319&&n65535&&(u-=65536,s.push(u>>>10&1023|55296),u=56320|1023&u),s.push(u)}else s.push(o);s.length>=4096&&(h+=String.fromCharCode.apply(String,s),s.length=0)}return s.length>0&&(h+=String.fromCharCode.apply(String,s)),h}var c,l=s?new TextDecoder:null,w=s?"undefined"!=typeof process&&"force"!==process.env.TEXT_DECODER?200:0:t,v=function(t,i){this.type=t,this.data=i},d=(c=function(t,i){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var e in i)Object.prototype.hasOwnProperty.call(i,e)&&(t[e]=i[e])})(t,i)},function(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function e(){this.constructor=t}c(t,i),t.prototype=null===i?Object.create(i):(e.prototype=i.prototype,new e)}),y=function(t){function i(e){var n=t.call(this,e)||this,r=Object.create(i.prototype);return Object.setPrototypeOf(n,r),Object.defineProperty(n,"name",{configurable:!0,enumerable:!1,value:i.name}),n}return d(i,t),i}(Error),p={type:-1,encode:function(t){var e,n,r,s;return t instanceof Date?function(t){var e,n=t.sec,r=t.nsec;if(n>=0&&r>=0&&n<=17179869183){if(0===r&&n<=4294967295){var s=new Uint8Array(4);return(e=new DataView(s.buffer)).setUint32(0,n),s}var h=n/4294967296,o=4294967295&n;return s=new Uint8Array(8),(e=new DataView(s.buffer)).setUint32(0,r<<2|3&h),e.setUint32(4,o),s}return s=new Uint8Array(12),(e=new DataView(s.buffer)).setUint32(0,r),i(e,4,n),s}((e=t.getTime(),n=Math.floor(e/1e3),r=1e6*(e-1e3*n),s=Math.floor(r/1e9),{sec:n+s,nsec:r-1e9*s})):null},decode:function(t){var i=function(t){var i=new DataView(t.buffer,t.byteOffset,t.byteLength);switch(t.byteLength){case 4:return{sec:i.getUint32(0),nsec:0};case 8:var n=i.getUint32(0);return{sec:4294967296*(3&n)+i.getUint32(4),nsec:n>>>2};case 12:return{sec:e(i,4),nsec:i.getUint32(0)};default:throw new y("Unrecognized data size for timestamp (expected 4, 8, or 12): "+t.length)}}(t);return new Date(1e3*i.sec+i.nsec/1e6)}},g=function(){function t(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(p)}return t.prototype.register=function(t){var i=t.type,e=t.encode,n=t.decode;if(i>=0)this.encoders[i]=e,this.decoders[i]=n;else{var r=1+i;this.builtInEncoders[r]=e,this.builtInDecoders[r]=n}},t.prototype.tryToEncode=function(t,i){for(var e=0;ethis.maxDepth)throw new Error("Too deep objects in depth "+i);null==t?this.encodeNil():"boolean"==typeof t?this.encodeBoolean(t):"number"==typeof t?this.encodeNumber(t):"string"==typeof t?this.encodeString(t):this.encodeObject(t,i)},t.prototype.ensureBufferSizeToWrite=function(t){var i=this.pos+t;this.view.byteLength=0?t<128?this.writeU8(t):t<256?(this.writeU8(204),this.writeU8(t)):t<65536?(this.writeU8(205),this.writeU16(t)):t<4294967296?(this.writeU8(206),this.writeU32(t)):(this.writeU8(207),this.writeU64(t)):t>=-32?this.writeU8(224|t+32):t>=-128?(this.writeU8(208),this.writeI8(t)):t>=-32768?(this.writeU8(209),this.writeI16(t)):t>=-2147483648?(this.writeU8(210),this.writeI32(t)):(this.writeU8(211),this.writeI64(t)):this.forceFloat32?(this.writeU8(202),this.writeF32(t)):(this.writeU8(203),this.writeF64(t))},t.prototype.writeStringHeader=function(t){if(t<32)this.writeU8(160+t);else if(t<256)this.writeU8(217),this.writeU8(t);else if(t<65536)this.writeU8(218),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too long string: "+t+" bytes in UTF-8");this.writeU8(219),this.writeU32(t)}},t.prototype.encodeString=function(t){if(t.length>a){var i=h(t);this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),f(t,this.bytes,this.pos),this.pos+=i}else i=h(t),this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),function(t,i,e){for(var n=t.length,r=e,s=0;s>6&31|192;else{if(h>=55296&&h<=56319&&s>12&15|224,i[r++]=h>>6&63|128):(i[r++]=h>>18&7|240,i[r++]=h>>12&63|128,i[r++]=h>>6&63|128)}i[r++]=63&h|128}else i[r++]=h}}(t,this.bytes,this.pos),this.pos+=i},t.prototype.encodeObject=function(t,i){var e=this.extensionCodec.tryToEncode(t,this.context);if(null!=e)this.encodeExtension(e);else if(Array.isArray(t))this.encodeArray(t,i);else if(ArrayBuffer.isView(t))this.encodeBinary(t);else{if("object"!=typeof t)throw new Error("Unrecognized object: "+Object.prototype.toString.apply(t));this.encodeMap(t,i)}},t.prototype.encodeBinary=function(t){var i=t.byteLength;if(i<256)this.writeU8(196),this.writeU8(i);else if(i<65536)this.writeU8(197),this.writeU16(i);else{if(!(i<4294967296))throw new Error("Too large binary: "+i);this.writeU8(198),this.writeU32(i)}var e=m(t);this.writeU8a(e)},t.prototype.encodeArray=function(t,i){var e=t.length;if(e<16)this.writeU8(144+e);else if(e<65536)this.writeU8(220),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too large array: "+e);this.writeU8(221),this.writeU32(e)}for(var n=0,r=t;n0&&t<=this.maxKeyLength},t.prototype.find=function(t,i,e){t:for(var n=0,r=this.caches[e-1];n=this.maxLengthPerKey?e[Math.random()*e.length|0]=n:e.push(n)},t.prototype.decode=function(t,i,e){var n=this.find(t,i,e);if(null!=n)return this.hit++,n;this.miss++;var r=u(t,i,e),s=Uint8Array.prototype.slice.call(t,i,i+e);return this.store(s,r),r},t}(),A=function(t,i,e,n){return new(e||(e=Promise))((function(r,s){function h(t){try{a(n.next(t))}catch(t){s(t)}}function o(t){try{a(n.throw(t))}catch(t){s(t)}}function a(t){var i;t.done?r(t.value):(i=t.value,i instanceof e?i:new e((function(t){t(i)}))).then(h,o)}a((n=n.apply(t,i||[])).next())}))},I=function(t,i){var e,n,r,s,h={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return s={next:o(0),throw:o(1),return:o(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function o(s){return function(o){return function(s){if(e)throw new TypeError("Generator is already executing.");for(;h;)try{if(e=1,n&&(r=2&s[0]?n.return:s[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,s[1])).done)return r;switch(n=0,r&&(s=[2&s[0],r.value]),s[0]){case 0:case 1:r=s;break;case 4:return h.label++,{value:s[1],done:!1};case 5:h.label++,n=s[1],s=[0];continue;case 7:s=h.ops.pop(),h.trys.pop();continue;default:if(!((r=(r=h.trys).length>0&&r[r.length-1])||6!==s[0]&&2!==s[0])){h=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]1||o(t,i)}))})}function o(t,i){try{(e=r[t](i)).value instanceof M?Promise.resolve(e.value.v).then(a,f):u(s[0][2],e)}catch(t){u(s[0][3],t)}var e}function a(t){o("next",t)}function f(t){o("throw",t)}function u(t,i){t(i),s.shift(),s.length&&o(s[0][0],s[0][1])}},U=new DataView(new ArrayBuffer(0)),j=new Uint8Array(U.buffer),T=function(){try{U.getInt8(0)}catch(t){return t.constructor}throw new Error("never reached")}(),D=new T("Insufficient data"),k=new E,B=function(){function i(i,e,n,r,s,h,o,a){void 0===i&&(i=g.defaultCodec),void 0===e&&(e=void 0),void 0===n&&(n=t),void 0===r&&(r=t),void 0===s&&(s=t),void 0===h&&(h=t),void 0===o&&(o=t),void 0===a&&(a=k),this.extensionCodec=i,this.context=e,this.maxStrLength=n,this.maxBinLength=r,this.maxArrayLength=s,this.maxMapLength=h,this.maxExtLength=o,this.keyDecoder=a,this.totalPos=0,this.pos=0,this.view=U,this.bytes=j,this.headByte=-1,this.stack=[]}return i.prototype.reinitializeState=function(){this.totalPos=0,this.headByte=-1,this.stack.length=0},i.prototype.setBuffer=function(t){this.bytes=m(t),this.view=function(t){if(t instanceof ArrayBuffer)return new DataView(t);var i=m(t);return new DataView(i.buffer,i.byteOffset,i.byteLength)}(this.bytes),this.pos=0},i.prototype.appendBuffer=function(t){if(-1!==this.headByte||this.hasRemaining(1)){var i=this.bytes.subarray(this.pos),e=m(t),n=new Uint8Array(i.length+e.length);n.set(i),n.set(e,i.length),this.setBuffer(n)}else this.setBuffer(t)},i.prototype.hasRemaining=function(t){return this.view.byteLength-this.pos>=t},i.prototype.createExtraByteError=function(t){var i=this.view,e=this.pos;return new RangeError("Extra "+(i.byteLength-e)+" of "+i.byteLength+" byte(s) found at buffer["+t+"]")},i.prototype.decode=function(t){this.reinitializeState(),this.setBuffer(t);var i=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return i},i.prototype.decodeMulti=function(t){return I(this,(function(i){switch(i.label){case 0:this.reinitializeState(),this.setBuffer(t),i.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return i.sent(),[3,1];case 3:return[2]}}))},i.prototype.decodeAsync=function(t){var i,e,n,r;return A(this,void 0,void 0,(function(){var s,h,o,a,f,u,c,l;return I(this,(function(w){switch(w.label){case 0:s=!1,w.label=1;case 1:w.trys.push([1,6,7,12]),i=_(t),w.label=2;case 2:return[4,i.next()];case 3:if((e=w.sent()).done)return[3,5];if(o=e.value,s)throw this.createExtraByteError(this.totalPos);this.appendBuffer(o);try{h=this.doDecodeSync(),s=!0}catch(t){if(!(t instanceof T))throw t}this.totalPos+=this.pos,w.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return a=w.sent(),n={error:a},[3,12];case 7:return w.trys.push([7,,10,11]),e&&!e.done&&(r=i.return)?[4,r.call(i)]:[3,9];case 8:w.sent(),w.label=9;case 9:return[3,11];case 10:if(n)throw n.error;return[7];case 11:return[7];case 12:if(s){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,h]}throw u=(f=this).headByte,c=f.pos,l=f.totalPos,new RangeError("Insufficient data in parsing "+x(u)+" at "+l+" ("+c+" in the current buffer)")}}))}))},i.prototype.decodeArrayStream=function(t){return this.decodeMultiAsync(t,!0)},i.prototype.decodeStream=function(t){return this.decodeMultiAsync(t,!1)},i.prototype.decodeMultiAsync=function(t,i){return S(this,arguments,(function(){var e,n,r,s,h,o,a,f,u;return I(this,(function(c){switch(c.label){case 0:e=i,n=-1,c.label=1;case 1:c.trys.push([1,13,14,19]),r=_(t),c.label=2;case 2:return[4,M(r.next())];case 3:if((s=c.sent()).done)return[3,12];if(h=s.value,i&&0===n)throw this.createExtraByteError(this.totalPos);this.appendBuffer(h),e&&(n=this.readArraySize(),e=!1,this.complete()),c.label=4;case 4:c.trys.push([4,9,,10]),c.label=5;case 5:return[4,M(this.doDecodeSync())];case 6:return[4,c.sent()];case 7:return c.sent(),0==--n?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((o=c.sent())instanceof T))throw o;return[3,10];case 10:this.totalPos+=this.pos,c.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return a=c.sent(),f={error:a},[3,19];case 14:return c.trys.push([14,,17,18]),s&&!s.done&&(u=r.return)?[4,M(u.call(r))]:[3,16];case 15:c.sent(),c.label=16;case 16:return[3,18];case 17:if(f)throw f.error;return[7];case 18:return[7];case 19:return[2]}}))}))},i.prototype.doDecodeSync=function(){t:for(;;){var t=this.readHeadByte(),i=void 0;if(t>=224)i=t-256;else if(t<192)if(t<128)i=t;else if(t<144){if(0!=(n=t-128)){this.pushMapState(n),this.complete();continue t}i={}}else if(t<160){if(0!=(n=t-144)){this.pushArrayState(n),this.complete();continue t}i=[]}else{var e=t-160;i=this.decodeUtf8String(e,0)}else if(192===t)i=null;else if(194===t)i=!1;else if(195===t)i=!0;else if(202===t)i=this.readF32();else if(203===t)i=this.readF64();else if(204===t)i=this.readU8();else if(205===t)i=this.readU16();else if(206===t)i=this.readU32();else if(207===t)i=this.readU64();else if(208===t)i=this.readI8();else if(209===t)i=this.readI16();else if(210===t)i=this.readI32();else if(211===t)i=this.readI64();else if(217===t)e=this.lookU8(),i=this.decodeUtf8String(e,1);else if(218===t)e=this.lookU16(),i=this.decodeUtf8String(e,2);else if(219===t)e=this.lookU32(),i=this.decodeUtf8String(e,4);else if(220===t){if(0!==(n=this.readU16())){this.pushArrayState(n),this.complete();continue t}i=[]}else if(221===t){if(0!==(n=this.readU32())){this.pushArrayState(n),this.complete();continue t}i=[]}else if(222===t){if(0!==(n=this.readU16())){this.pushMapState(n),this.complete();continue t}i={}}else if(223===t){if(0!==(n=this.readU32())){this.pushMapState(n),this.complete();continue t}i={}}else if(196===t){var n=this.lookU8();i=this.decodeBinary(n,1)}else if(197===t)n=this.lookU16(),i=this.decodeBinary(n,2);else if(198===t)n=this.lookU32(),i=this.decodeBinary(n,4);else if(212===t)i=this.decodeExtension(1,0);else if(213===t)i=this.decodeExtension(2,0);else if(214===t)i=this.decodeExtension(4,0);else if(215===t)i=this.decodeExtension(8,0);else if(216===t)i=this.decodeExtension(16,0);else if(199===t)n=this.lookU8(),i=this.decodeExtension(n,1);else if(200===t)n=this.lookU16(),i=this.decodeExtension(n,2);else{if(201!==t)throw new y("Unrecognized type byte: "+x(t));n=this.lookU32(),i=this.decodeExtension(n,4)}this.complete();for(var r=this.stack;r.length>0;){var s=r[r.length-1];if(0===s.type){if(s.array[s.position]=i,s.position++,s.position!==s.size)continue t;r.pop(),i=s.array}else{if(1===s.type){if(h=void 0,"string"!=(h=typeof i)&&"number"!==h)throw new y("The type of key must be string or number but "+typeof i);if("__proto__"===i)throw new y("The key __proto__ is not allowed");s.key=i,s.type=2;continue t}if(s.map[s.key]=i,s.readCount++,s.readCount!==s.size){s.key=null,s.type=1;continue t}r.pop(),i=s.map}}return i}var h},i.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},i.prototype.complete=function(){this.headByte=-1},i.prototype.readArraySize=function(){var t=this.readHeadByte();switch(t){case 220:return this.readU16();case 221:return this.readU32();default:if(t<160)return t-144;throw new y("Unrecognized array type byte: "+x(t))}},i.prototype.pushMapState=function(t){if(t>this.maxMapLength)throw new y("Max length exceeded: map length ("+t+") > maxMapLengthLength ("+this.maxMapLength+")");this.stack.push({type:1,size:t,key:null,readCount:0,map:{}})},i.prototype.pushArrayState=function(t){if(t>this.maxArrayLength)throw new y("Max length exceeded: array length ("+t+") > maxArrayLength ("+this.maxArrayLength+")");this.stack.push({type:0,size:t,array:new Array(t),position:0})},i.prototype.decodeUtf8String=function(t,i){var e;if(t>this.maxStrLength)throw new y("Max length exceeded: UTF-8 byte length ("+t+") > maxStrLength ("+this.maxStrLength+")");if(this.bytes.byteLengthw?function(t,i,e){var n=t.subarray(i,i+e);return l.decode(n)}(this.bytes,r,t):u(this.bytes,r,t),this.pos+=i+t,n},i.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},i.prototype.decodeBinary=function(t,i){if(t>this.maxBinLength)throw new y("Max length exceeded: bin length ("+t+") > maxBinLength ("+this.maxBinLength+")");if(!this.hasRemaining(t+i))throw D;var e=this.pos+i,n=this.bytes.subarray(e,e+t);return this.pos+=i+t,n},i.prototype.decodeExtension=function(t,i){if(t>this.maxExtLength)throw new y("Max length exceeded: ext length ("+t+") > maxExtLength ("+this.maxExtLength+")");var e=this.view.getInt8(this.pos+i),n=this.decodeBinary(t,i+1);return this.extensionCodec.decode(n,e,this.context)},i.prototype.lookU8=function(){return this.view.getUint8(this.pos)},i.prototype.lookU16=function(){return this.view.getUint16(this.pos)},i.prototype.lookU32=function(){return this.view.getUint32(this.pos)},i.prototype.readU8=function(){var t=this.view.getUint8(this.pos);return this.pos++,t},i.prototype.readI8=function(){var t=this.view.getInt8(this.pos);return this.pos++,t},i.prototype.readU16=function(){var t=this.view.getUint16(this.pos);return this.pos+=2,t},i.prototype.readI16=function(){var t=this.view.getInt16(this.pos);return this.pos+=2,t},i.prototype.readU32=function(){var t=this.view.getUint32(this.pos);return this.pos+=4,t},i.prototype.readI32=function(){var t=this.view.getInt32(this.pos);return this.pos+=4,t},i.prototype.readU64=function(){var t,i,e=(t=this.view,i=this.pos,4294967296*t.getUint32(i)+t.getUint32(i+4));return this.pos+=8,e},i.prototype.readI64=function(){var t=e(this.view,this.pos);return this.pos+=8,t},i.prototype.readF32=function(){var t=this.view.getFloat32(this.pos);return this.pos+=4,t},i.prototype.readF64=function(){var t=this.view.getFloat64(this.pos);return this.pos+=8,t},i}(),O=n(1);class V{static write(t){let i=t.byteLength||t.length;const e=[];do{let t=127&i;i>>=7,i>0&&(t|=128),e.push(t)}while(i>0);i=t.byteLength||t.length;const n=new Uint8Array(e.length+i);return n.set(e,0),n.set(t,e.length),n.buffer}static parse(t){const i=[],e=new Uint8Array(t),n=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(e.byteLength>=r+h+o))throw new Error("Incomplete message.");i.push(e.slice?e.slice(r+h,r+h+o):e.subarray(r+h,r+h+o)),r=r+h+o}return i}}const C=new Uint8Array([145,O.MessageType.Ping]);class P{constructor(t){this.name="messagepack",this.version=1,this.transferFormat=O.TransferFormat.Binary,this.i=1,this.h=2,this.u=3,t=t||{},this.l=new b(t.extensionCodec,t.context,t.maxDepth,t.initialBufferSize,t.sortKeys,t.forceFloat32,t.ignoreUndefined,t.forceIntegerToFloat),this.p=new B(t.extensionCodec,t.context,t.maxStrLength,t.maxBinLength,t.maxArrayLength,t.maxMapLength,t.maxExtLength)}parseMessages(t,i){if(!(e=t)||"undefined"==typeof ArrayBuffer||!(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var e;null===i&&(i=O.NullLogger.instance);const n=V.parse(t),r=[];for(const t of n){const e=this.g(t,i);e&&r.push(e)}return r}writeMessage(t){switch(t.type){case O.MessageType.Invocation:return this.m(t);case O.MessageType.StreamInvocation:return this.A(t);case O.MessageType.StreamItem:return this.I(t);case O.MessageType.Completion:return this._(t);case O.MessageType.Ping:return V.write(C);case O.MessageType.CancelInvocation:return this.M(t);default:throw new Error("Invalid message type.")}}g(t,i){if(0===t.length)throw new Error("Invalid payload.");const e=this.p.decode(t);if(0===e.length||!(e instanceof Array))throw new Error("Invalid payload.");const n=e[0];switch(n){case O.MessageType.Invocation:return this.S(this.U(e),e);case O.MessageType.StreamItem:return this.j(this.U(e),e);case O.MessageType.Completion:return this.T(this.U(e),e);case O.MessageType.Ping:return this.D(e);case O.MessageType.Close:return this.k(e);default:return i.log(O.LogLevel.Information,"Unknown message type '"+n+"' ignored."),null}}k(t){if(t.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:t.length>=3?t[2]:void 0,error:t[1],type:O.MessageType.Close}}D(t){if(t.length<1)throw new Error("Invalid payload for Ping message.");return{type:O.MessageType.Ping}}S(t,i){if(i.length<5)throw new Error("Invalid payload for Invocation message.");const e=i[2];return e?{arguments:i[4],headers:t,invocationId:e,streamIds:[],target:i[3],type:O.MessageType.Invocation}:{arguments:i[4],headers:t,streamIds:[],target:i[3],type:O.MessageType.Invocation}}j(t,i){if(i.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:t,invocationId:i[2],item:i[3],type:O.MessageType.StreamItem}}T(t,i){if(i.length<4)throw new Error("Invalid payload for Completion message.");const e=i[3];if(e!==this.h&&i.length<5)throw new Error("Invalid payload for Completion message.");let n,r;switch(e){case this.i:n=i[4];break;case this.u:r=i[4]}return{error:n,headers:t,invocationId:i[2],result:r,type:O.MessageType.Completion}}m(t){let i;return i=t.streamIds?this.l.encode([O.MessageType.Invocation,t.headers||{},t.invocationId||null,t.target,t.arguments,t.streamIds]):this.l.encode([O.MessageType.Invocation,t.headers||{},t.invocationId||null,t.target,t.arguments]),V.write(i.slice())}A(t){let i;return i=t.streamIds?this.l.encode([O.MessageType.StreamInvocation,t.headers||{},t.invocationId,t.target,t.arguments,t.streamIds]):this.l.encode([O.MessageType.StreamInvocation,t.headers||{},t.invocationId,t.target,t.arguments]),V.write(i.slice())}I(t){const i=this.l.encode([O.MessageType.StreamItem,t.headers||{},t.invocationId,t.item]);return V.write(i.slice())}_(t){const i=t.error?this.i:t.result?this.u:this.h;let e;switch(i){case this.i:e=this.l.encode([O.MessageType.Completion,t.headers||{},t.invocationId,i,t.error]);break;case this.h:e=this.l.encode([O.MessageType.Completion,t.headers||{},t.invocationId,i]);break;case this.u:e=this.l.encode([O.MessageType.Completion,t.headers||{},t.invocationId,i,t.result])}return V.write(e.slice())}M(t){const i=this.l.encode([O.MessageType.CancelInvocation,t.headers||{},t.invocationId]);return V.write(i.slice())}U(t){const i=t[1];if("object"!=typeof i)throw new Error("Invalid headers.");return i}}const z="6.0.0"})(),r})()},"object"==typeof exports&&"object"==typeof module?module.exports=i(require("signalR")):"function"==typeof define&&define.amd?define(["signalR"],i):"object"==typeof exports?exports.msgpack=i(require("signalR")):(t.signalR=t.signalR||{},t.signalR.protocols=t.signalR.protocols||{},t.signalR.protocols.msgpack=i(t.signalR));
//# sourceMappingURL=signalr-protocol-msgpack.js.map
\ No newline at end of file
diff --git a/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.js.map b/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.js.map
index e95671a2..5e313db1 100644
--- a/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.js.map
+++ b/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack://signalR.protocols.msgpack/webpack/universalModuleDefinition","webpack://signalR.protocols.msgpack/webpack/bootstrap","webpack://signalR.protocols.msgpack/src/browser-index.ts","webpack://signalR.protocols.msgpack/src/index.ts","webpack://signalR.protocols.msgpack/src/MessagePackHubProtocol.ts","webpack://signalR.protocols.msgpack/node_modules/buffer/index.js","webpack://signalR.protocols.msgpack/node_modules/base64-js/index.js","webpack://signalR.protocols.msgpack/node_modules/ieee754/index.js","webpack://signalR.protocols.msgpack/external \"msgpack5\"","webpack://signalR.protocols.msgpack/external \"signalR\"","webpack://signalR.protocols.msgpack/src/BinaryMessageFormat.ts","webpack://signalR.protocols.msgpack/src/Utils.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mEAAmE;AAC5G,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sDAAsD;AACtD,+GAA+G;AAE/G,qHAAqH;AAE7F;;;;;;;;ACLxB;AAAA;AAAA;AAAA;AAAA;AAAA,sDAAsD;AACtD,+GAA+G;AAE/G,6DAA6D;AAC7D,gEAAgE;AACzD,IAAM,OAAO,GAAG,iBAAiB,CAAC;AAEyB;;;;;;;;ACPlE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sDAAsD;AACtD,+GAA+G;;;;;;;;;AAE/E;AACK;AAOT;AAEgC;AACpB;AAExC,+DAA+D;AAE/D,wCAAwC;AACxC,+FAA+F;AAC/F,sDAAsD;AACtD,IAAM,uBAAuB,GAAe,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,8DAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAErF,8CAA8C;AAC9C;IAcI;;;OAGG;IACH,gCAAY,kBAAuC;QAjBnD,+GAA+G;QAC/F,SAAI,GAAW,aAAa,CAAC;QAC7C,mCAAmC;QACnB,YAAO,GAAW,CAAC,CAAC;QACpC,0CAA0C;QAC1B,mBAAc,GAAmB,iEAAc,CAAC,MAAM,CAAC;QAEtD,gBAAW,GAAG,CAAC,CAAC;QAChB,eAAU,GAAG,CAAC,CAAC;QACf,kBAAa,GAAG,CAAC,CAAC;QAS/B,IAAI,kBAAkB,EAAE;YACpB,IAAI,CAAC,kBAAkB,gBAChB,kBAAkB,IACrB,iBAAiB,EAAE,KAAK,GAC3B,CAAC;SACL;IACL,CAAC;IAED;;;;OAIG;IACI,8CAAa,GAApB,UAAqB,KAA2B,EAAE,MAAe;QAC7D,sHAAsH;QACtH,IAAI,CAAC,CAAC,KAAK,YAAY,6CAAM,CAAC,IAAI,CAAC,CAAC,4DAAa,CAAC,KAAK,CAAC,CAAC,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;SACrG;QAED,IAAI,MAAM,KAAK,IAAI,EAAE;YACjB,MAAM,GAAG,6DAAU,CAAC,QAAQ,CAAC;SAChC;QAED,IAAM,QAAQ,GAAG,wEAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAElD,IAAM,WAAW,GAAG,EAAE,CAAC;QACvB,KAAsB,UAAQ,EAAR,qBAAQ,EAAR,sBAAQ,EAAR,IAAQ,EAAE;YAA3B,IAAM,OAAO;YACd,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACzD,gFAAgF;YAChF,IAAI,aAAa,EAAE;gBACf,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC;SACJ;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACI,6CAAY,GAAnB,UAAoB,OAAmB;QACnC,QAAQ,OAAO,CAAC,IAAI,EAAE;YAClB,KAAK,8DAAW,CAAC,UAAU;gBACvB,OAAO,IAAI,CAAC,eAAe,CAAC,OAA4B,CAAC,CAAC;YAC9D,KAAK,8DAAW,CAAC,gBAAgB;gBAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAkC,CAAC,CAAC;YAC1E,KAAK,8DAAW,CAAC,UAAU;gBACvB,OAAO,IAAI,CAAC,eAAe,CAAC,OAA4B,CAAC,CAAC;YAC9D,KAAK,8DAAW,CAAC,UAAU;gBACvB,OAAO,IAAI,CAAC,eAAe,CAAC,OAA4B,CAAC,CAAC;YAC9D,KAAK,8DAAW,CAAC,IAAI;gBACjB,OAAO,wEAAmB,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC9D,KAAK,8DAAW,CAAC,gBAAgB;gBAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAkC,CAAC,CAAC;YAC1E;gBACI,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAChD;IACL,CAAC;IAEO,6CAAY,GAApB,UAAqB,KAAiB,EAAE,MAAe;QACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACvC;QAED,IAAM,OAAO,GAAG,qCAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClD,IAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,6CAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,YAAY,KAAK,CAAC,EAAE;YAC3D,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACvC;QAED,IAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAgB,CAAC;QAEjD,QAAQ,WAAW,EAAE;YACjB,KAAK,8DAAW,CAAC,UAAU;gBACvB,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;YAClF,KAAK,8DAAW,CAAC,UAAU;gBACvB,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;YAClF,KAAK,8DAAW,CAAC,UAAU;gBACvB,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;YAClF,KAAK,8DAAW,CAAC,IAAI;gBACjB,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC9C,KAAK,8DAAW,CAAC,KAAK;gBAClB,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAC/C;gBACI,6EAA6E;gBAC7E,MAAM,CAAC,GAAG,CAAC,2DAAQ,CAAC,WAAW,EAAE,wBAAwB,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;gBACxF,OAAO,IAAI,CAAC;SACnB;IACL,CAAC;IAEO,mDAAkB,GAA1B,UAA2B,UAAiB;QACxC,+FAA+F;QAC/F,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACzD;QAED,OAAO;YACH,kCAAkC;YAClC,cAAc,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAClE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;YACpB,IAAI,EAAE,8DAAW,CAAC,KAAK;SACZ,CAAC;IACpB,CAAC;IAEO,kDAAiB,GAAzB,UAA0B,UAAiB;QACvC,+FAA+F;QAC/F,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;SACxD;QAED,OAAO;YACH,iCAAiC;YACjC,IAAI,EAAE,8DAAW,CAAC,IAAI;SACX,CAAC;IACpB,CAAC;IAEO,wDAAuB,GAA/B,UAAgC,OAAuB,EAAE,UAAiB;QACtE,+FAA+F;QAC/F,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC9D;QAED,IAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAW,CAAC;QAC7C,IAAI,YAAY,EAAE;YACd,OAAO;gBACH,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;gBACxB,OAAO;gBACP,YAAY;gBACZ,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,UAAU,CAAC,CAAC,CAAW;gBAC/B,IAAI,EAAE,8DAAW,CAAC,UAAU;aAC/B,CAAC;SACL;aAAM;YACH,OAAO;gBACH,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;gBACxB,OAAO;gBACP,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;gBACrB,IAAI,EAAE,8DAAW,CAAC,UAAU;aAC/B,CAAC;SACL;IAEL,CAAC;IAEO,wDAAuB,GAA/B,UAAgC,OAAuB,EAAE,UAAiB;QACtE,+FAA+F;QAC/F,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC9D;QAED,OAAO;YACH,OAAO;YACP,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;YAC3B,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;YACnB,IAAI,EAAE,8DAAW,CAAC,UAAU;SACV,CAAC;IAC3B,CAAC;IAEO,wDAAuB,GAA/B,UAAgC,OAAuB,EAAE,UAAiB;QACtE,+FAA+F;QAC/F,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC9D;QAED,IAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAEjC,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC9D;QAED,IAAI,KAAyB,CAAC;QAC9B,IAAI,MAAW,CAAC;QAEhB,QAAQ,UAAU,EAAE;YAChB,KAAK,IAAI,CAAC,WAAW;gBACjB,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM;YACV,KAAK,IAAI,CAAC,aAAa;gBACnB,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBACvB,MAAM;SACb;QAED,IAAM,iBAAiB,GAAsB;YACzC,KAAK;YACL,OAAO;YACP,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;YAC3B,MAAM;YACN,IAAI,EAAE,8DAAW,CAAC,UAAU;SAC/B,CAAC;QAEF,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAEO,gDAAe,GAAvB,UAAwB,iBAAoC;QACxD,IAAM,OAAO,GAAG,qCAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClD,IAAI,OAAY,CAAC;QACjB,IAAI,iBAAiB,CAAC,SAAS,EAAE;YAC7B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,8DAAW,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAO,IAAI,EAAE,EAAE,iBAAiB,CAAC,YAAY,IAAI,IAAI;gBACzH,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;SACxF;aAAM;YACH,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,8DAAW,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAO,IAAI,EAAE,EAAE,iBAAiB,CAAC,YAAY,IAAI,IAAI;gBACzH,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;SAC3D;QAED,OAAO,wEAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,sDAAqB,GAA7B,UAA8B,uBAAgD;QAC1E,IAAM,OAAO,GAAG,qCAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClD,IAAI,OAAY,CAAC;QACjB,IAAI,uBAAuB,CAAC,SAAS,EAAE;YACnC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,8DAAW,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,OAAO,IAAI,EAAE,EAAE,uBAAuB,CAAC,YAAY;gBACnI,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,CAAC,SAAS,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;SAC1G;aAAM;YACH,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,8DAAW,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,OAAO,IAAI,EAAE,EAAE,uBAAuB,CAAC,YAAY;gBACnI,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;SACvE;QAED,OAAO,wEAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,gDAAe,GAAvB,UAAwB,iBAAoC;QACxD,IAAM,OAAO,GAAG,qCAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClD,IAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,8DAAW,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAO,IAAI,EAAE,EAAE,iBAAiB,CAAC,YAAY;YACvH,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzB,OAAO,wEAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,gDAAe,GAAvB,UAAwB,iBAAoC;QACxD,IAAM,OAAO,GAAG,qCAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClD,IAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAEhI,IAAI,OAAY,CAAC;QACjB,QAAQ,UAAU,EAAE;YAChB,KAAK,IAAI,CAAC,WAAW;gBACjB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,8DAAW,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAO,IAAI,EAAE,EAAE,iBAAiB,CAAC,YAAY,EAAE,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzJ,MAAM;YACV,KAAK,IAAI,CAAC,UAAU;gBAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,8DAAW,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAO,IAAI,EAAE,EAAE,iBAAiB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;gBAChI,MAAM;YACV,KAAK,IAAI,CAAC,aAAa;gBACnB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,8DAAW,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAO,IAAI,EAAE,EAAE,iBAAiB,CAAC,YAAY,EAAE,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1J,MAAM;SACb;QAED,OAAO,wEAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,sDAAqB,GAA7B,UAA8B,uBAAgD;QAC1E,IAAM,OAAO,GAAG,qCAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClD,IAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,8DAAW,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,OAAO,IAAI,EAAE,EAAE,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;QAE5I,OAAO,wEAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,4CAAW,GAAnB,UAAoB,UAAe;QAC/B,IAAM,OAAO,GAAmB,UAAU,CAAC,CAAC,CAAmB,CAAC;QAChE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACvC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IACL,6BAAC;AAAD,CAAC;;;;;;;;;ACpTD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,CAAW;AAChC,cAAc,mBAAO,CAAC,CAAS;;AAE/B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACjrDY;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA;AACA,QAAQ,WAAW;;AAEnB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;ACnFA,gD;;;;;;ACAA,gD;;;;;;;ACAA;AAAA;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","file":"signalr-protocol-msgpack.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"msgpack5\"), require(\"signalR\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"msgpack5\", \"signalR\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"msgpack\"] = factory(require(\"msgpack5\"), require(\"signalR\"));\n\telse\n\t\troot[\"signalR\"] = root[\"signalR\"] || {}, root[\"signalR\"][\"protocols\"] = root[\"signalR\"][\"protocols\"] || {}, root[\"signalR\"][\"protocols\"][\"msgpack\"] = factory(root[\"msgpack5\"], root[\"signalR\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__6__, __WEBPACK_EXTERNAL_MODULE__7__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n// This is where we add any polyfills we'll need for the browser. It is the entry module for browser-specific builds.\r\n\r\nexport * from \"./index\";\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR Message Pack protocol library. */\r\nexport const VERSION = \"0.0.0-DEV_BUILD\";\r\n\r\nexport { MessagePackHubProtocol } from \"./MessagePackHubProtocol\";\r\n\r\nexport { MessagePackOptions } from \"./MessagePackOptions\";\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\nimport { Buffer } from \"buffer\";\r\nimport * as msgpack5 from \"msgpack5\";\r\n\r\nimport { MessagePackOptions } from \"./MessagePackOptions\";\r\n\r\nimport {\r\n CancelInvocationMessage, CompletionMessage, HubMessage, IHubProtocol, ILogger, InvocationMessage,\r\n LogLevel, MessageHeaders, MessageType, NullLogger, StreamInvocationMessage, StreamItemMessage, TransferFormat,\r\n} from \"@microsoft/signalr\";\r\n\r\nimport { BinaryMessageFormat } from \"./BinaryMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n\r\n// TypeDoc's @inheritDoc and @link don't work across modules :(\r\n\r\n// constant encoding of the ping message\r\n// see: https://github.com/aspnet/SignalR/blob/dev/specs/HubProtocol.md#ping-message-encoding-1\r\n// Don't use Uint8Array.from as IE does not support it\r\nconst SERIALIZED_PING_MESSAGE: Uint8Array = new Uint8Array([0x91, MessageType.Ping]);\r\n\r\n/** Implements the MessagePack Hub Protocol */\r\nexport class MessagePackHubProtocol implements IHubProtocol {\r\n /** The name of the protocol. This is used by SignalR to resolve the protocol between the client and server. */\r\n public readonly name: string = \"messagepack\";\r\n /** The version of the protocol. */\r\n public readonly version: number = 1;\r\n /** The TransferFormat of the protocol. */\r\n public readonly transferFormat: TransferFormat = TransferFormat.Binary;\r\n\r\n private readonly errorResult = 1;\r\n private readonly voidResult = 2;\r\n private readonly nonVoidResult = 3;\r\n\r\n private readonly messagePackOptions?: any;\r\n\r\n /**\r\n *\r\n * @param messagePackOptions MessagePack options passed to msgpack5\r\n */\r\n constructor(messagePackOptions?: MessagePackOptions) {\r\n if (messagePackOptions) {\r\n this.messagePackOptions = {\r\n ...messagePackOptions,\r\n compatibilityMode: false,\r\n };\r\n }\r\n }\r\n\r\n /** Creates an array of HubMessage objects from the specified serialized representation.\r\n *\r\n * @param {ArrayBuffer | Buffer} input An ArrayBuffer or Buffer 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 public parseMessages(input: ArrayBuffer | Buffer, logger: ILogger): HubMessage[] {\r\n // The interface does allow \"string\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (!(input instanceof Buffer) && !(isArrayBuffer(input))) {\r\n throw new Error(\"Invalid input for MessagePack hub protocol. Expected an ArrayBuffer or Buffer.\");\r\n }\r\n\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n\r\n const messages = BinaryMessageFormat.parse(input);\r\n\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = this.parseMessage(message, logger);\r\n // Can be null for an unknown message. Unknown message is logged in parseMessage\r\n if (parsedMessage) {\r\n hubMessages.push(parsedMessage);\r\n }\r\n }\r\n\r\n return hubMessages;\r\n }\r\n\r\n /** Writes the specified HubMessage to an ArrayBuffer and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {ArrayBuffer} An ArrayBuffer containing the serialized representation of the message.\r\n */\r\n public writeMessage(message: HubMessage): ArrayBuffer {\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n return this.writeInvocation(message as InvocationMessage);\r\n case MessageType.StreamInvocation:\r\n return this.writeStreamInvocation(message as StreamInvocationMessage);\r\n case MessageType.StreamItem:\r\n return this.writeStreamItem(message as StreamItemMessage);\r\n case MessageType.Completion:\r\n return this.writeCompletion(message as CompletionMessage);\r\n case MessageType.Ping:\r\n return BinaryMessageFormat.write(SERIALIZED_PING_MESSAGE);\r\n case MessageType.CancelInvocation:\r\n return this.writeCancelInvocation(message as CancelInvocationMessage);\r\n default:\r\n throw new Error(\"Invalid message type.\");\r\n }\r\n }\r\n\r\n private parseMessage(input: Uint8Array, logger: ILogger): HubMessage | null {\r\n if (input.length === 0) {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n\r\n const msgpack = msgpack5(this.messagePackOptions);\r\n const properties = msgpack.decode(Buffer.from(input));\r\n if (properties.length === 0 || !(properties instanceof Array)) {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n\r\n const messageType = properties[0] as MessageType;\r\n\r\n switch (messageType) {\r\n case MessageType.Invocation:\r\n return this.createInvocationMessage(this.readHeaders(properties), properties);\r\n case MessageType.StreamItem:\r\n return this.createStreamItemMessage(this.readHeaders(properties), properties);\r\n case MessageType.Completion:\r\n return this.createCompletionMessage(this.readHeaders(properties), properties);\r\n case MessageType.Ping:\r\n return this.createPingMessage(properties);\r\n case MessageType.Close:\r\n return this.createCloseMessage(properties);\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 '\" + messageType + \"' ignored.\");\r\n return null;\r\n }\r\n }\r\n\r\n private createCloseMessage(properties: any[]): HubMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 2) {\r\n throw new Error(\"Invalid payload for Close message.\");\r\n }\r\n\r\n return {\r\n // Close messages have no headers.\r\n allowReconnect: properties.length >= 3 ? properties[2] : undefined,\r\n error: properties[1],\r\n type: MessageType.Close,\r\n } as HubMessage;\r\n }\r\n\r\n private createPingMessage(properties: any[]): HubMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 1) {\r\n throw new Error(\"Invalid payload for Ping message.\");\r\n }\r\n\r\n return {\r\n // Ping messages have no headers.\r\n type: MessageType.Ping,\r\n } as HubMessage;\r\n }\r\n\r\n private createInvocationMessage(headers: MessageHeaders, properties: any[]): InvocationMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 5) {\r\n throw new Error(\"Invalid payload for Invocation message.\");\r\n }\r\n\r\n const invocationId = properties[2] as string;\r\n if (invocationId) {\r\n return {\r\n arguments: properties[4],\r\n headers,\r\n invocationId,\r\n streamIds: [],\r\n target: properties[3] as string,\r\n type: MessageType.Invocation,\r\n };\r\n } else {\r\n return {\r\n arguments: properties[4],\r\n headers,\r\n streamIds: [],\r\n target: properties[3],\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n\r\n }\r\n\r\n private createStreamItemMessage(headers: MessageHeaders, properties: any[]): StreamItemMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 4) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n\r\n return {\r\n headers,\r\n invocationId: properties[2],\r\n item: properties[3],\r\n type: MessageType.StreamItem,\r\n } as StreamItemMessage;\r\n }\r\n\r\n private createCompletionMessage(headers: MessageHeaders, properties: any[]): CompletionMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 4) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n\r\n const resultKind = properties[3];\r\n\r\n if (resultKind !== this.voidResult && properties.length < 5) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n\r\n let error: string | undefined;\r\n let result: any;\r\n\r\n switch (resultKind) {\r\n case this.errorResult:\r\n error = properties[4];\r\n break;\r\n case this.nonVoidResult:\r\n result = properties[4];\r\n break;\r\n }\r\n\r\n const completionMessage: CompletionMessage = {\r\n error,\r\n headers,\r\n invocationId: properties[2],\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n\r\n return completionMessage;\r\n }\r\n\r\n private writeInvocation(invocationMessage: InvocationMessage): ArrayBuffer {\r\n const msgpack = msgpack5(this.messagePackOptions);\r\n let payload: any;\r\n if (invocationMessage.streamIds) {\r\n payload = msgpack.encode([MessageType.Invocation, invocationMessage.headers || {}, invocationMessage.invocationId || null,\r\n invocationMessage.target, invocationMessage.arguments, invocationMessage.streamIds]);\r\n } else {\r\n payload = msgpack.encode([MessageType.Invocation, invocationMessage.headers || {}, invocationMessage.invocationId || null,\r\n invocationMessage.target, invocationMessage.arguments]);\r\n }\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private writeStreamInvocation(streamInvocationMessage: StreamInvocationMessage): ArrayBuffer {\r\n const msgpack = msgpack5(this.messagePackOptions);\r\n let payload: any;\r\n if (streamInvocationMessage.streamIds) {\r\n payload = msgpack.encode([MessageType.StreamInvocation, streamInvocationMessage.headers || {}, streamInvocationMessage.invocationId,\r\n streamInvocationMessage.target, streamInvocationMessage.arguments, streamInvocationMessage.streamIds]);\r\n } else {\r\n payload = msgpack.encode([MessageType.StreamInvocation, streamInvocationMessage.headers || {}, streamInvocationMessage.invocationId,\r\n streamInvocationMessage.target, streamInvocationMessage.arguments]);\r\n }\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private writeStreamItem(streamItemMessage: StreamItemMessage): ArrayBuffer {\r\n const msgpack = msgpack5(this.messagePackOptions);\r\n const payload = msgpack.encode([MessageType.StreamItem, streamItemMessage.headers || {}, streamItemMessage.invocationId,\r\n streamItemMessage.item]);\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private writeCompletion(completionMessage: CompletionMessage): ArrayBuffer {\r\n const msgpack = msgpack5(this.messagePackOptions);\r\n const resultKind = completionMessage.error ? this.errorResult : completionMessage.result ? this.nonVoidResult : this.voidResult;\r\n\r\n let payload: any;\r\n switch (resultKind) {\r\n case this.errorResult:\r\n payload = msgpack.encode([MessageType.Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind, completionMessage.error]);\r\n break;\r\n case this.voidResult:\r\n payload = msgpack.encode([MessageType.Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind]);\r\n break;\r\n case this.nonVoidResult:\r\n payload = msgpack.encode([MessageType.Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind, completionMessage.result]);\r\n break;\r\n }\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private writeCancelInvocation(cancelInvocationMessage: CancelInvocationMessage): ArrayBuffer {\r\n const msgpack = msgpack5(this.messagePackOptions);\r\n const payload = msgpack.encode([MessageType.CancelInvocation, cancelInvocationMessage.headers || {}, cancelInvocationMessage.invocationId]);\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private readHeaders(properties: any): MessageHeaders {\r\n const headers: MessageHeaders = properties[1] as MessageHeaders;\r\n if (typeof headers !== \"object\") {\r\n throw new Error(\"Invalid headers.\");\r\n }\r\n return headers;\r\n }\r\n}\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('Invalid typed array length')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (isArrayBuffer(value)) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n return fromObject(value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj) {\n if (isArrayBufferView(obj) || 'length' in obj) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (isArrayBufferView(string) || isArrayBuffer(string)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : new Buffer(val, encoding)\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffers from another context (i.e. an iframe) do not pass the `instanceof` check\n// but they should be treated as valid. See: https://github.com/feross/buffer/issues/166\nfunction isArrayBuffer (obj) {\n return obj instanceof ArrayBuffer ||\n (obj != null && obj.constructor != null && obj.constructor.name === 'ArrayBuffer' &&\n typeof obj.byteLength === 'number')\n}\n\n// Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`\nfunction isArrayBufferView (obj) {\n return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)\n}\n\nfunction numberIsNaN (obj) {\n return obj !== obj // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return (b64.length * 3 / 4) - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr((len * 3 / 4) - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0; i < l; i += 4) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__6__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7__;","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n// Not exported from index.\r\n/** @private */\r\nexport class BinaryMessageFormat {\r\n\r\n // The length prefix of binary messages is encoded as VarInt. Read the comment in\r\n // the BinaryMessageParser.TryParseMessage for details.\r\n\r\n public static write(output: Uint8Array): ArrayBuffer {\r\n // msgpack5 uses returns Buffer instead of Uint8Array on IE10 and some other browser\r\n // in which case .byteLength does will be undefined\r\n let size = output.byteLength || output.length;\r\n const lenBuffer = [];\r\n do {\r\n let sizePart = size & 0x7f;\r\n size = size >> 7;\r\n if (size > 0) {\r\n sizePart |= 0x80;\r\n }\r\n lenBuffer.push(sizePart);\r\n }\r\n while (size > 0);\r\n\r\n // msgpack5 uses returns Buffer instead of Uint8Array on IE10 and some other browser\r\n // in which case .byteLength does will be undefined\r\n size = output.byteLength || output.length;\r\n\r\n const buffer = new Uint8Array(lenBuffer.length + size);\r\n buffer.set(lenBuffer, 0);\r\n buffer.set(output, lenBuffer.length);\r\n return buffer.buffer;\r\n }\r\n\r\n public static parse(input: ArrayBuffer): Uint8Array[] {\r\n const result: Uint8Array[] = [];\r\n const uint8Array = new Uint8Array(input);\r\n const maxLengthPrefixSize = 5;\r\n const numBitsToShift = [0, 7, 14, 21, 28 ];\r\n\r\n for (let offset = 0; offset < input.byteLength;) {\r\n let numBytes = 0;\r\n let size = 0;\r\n let byteRead;\r\n do {\r\n byteRead = uint8Array[offset + numBytes];\r\n size = size | ((byteRead & 0x7f) << (numBitsToShift[numBytes]));\r\n numBytes++;\r\n }\r\n while (numBytes < Math.min(maxLengthPrefixSize, input.byteLength - offset) && (byteRead & 0x80) !== 0);\r\n\r\n if ((byteRead & 0x80) !== 0 && numBytes < maxLengthPrefixSize) {\r\n throw new Error(\"Cannot read message size.\");\r\n }\r\n\r\n if (numBytes === maxLengthPrefixSize && byteRead > 7) {\r\n throw new Error(\"Messages bigger than 2GB are not supported.\");\r\n }\r\n\r\n if (uint8Array.byteLength >= (offset + numBytes + size)) {\r\n // IE does not support .slice() so use subarray\r\n result.push(uint8Array.slice\r\n ? uint8Array.slice(offset + numBytes, offset + numBytes + size)\r\n : uint8Array.subarray(offset + numBytes, offset + numBytes + size));\r\n } else {\r\n throw new Error(\"Incomplete message.\");\r\n }\r\n\r\n offset = offset + numBytes + size;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n\r\n// Copied from signalr/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val: any): val is ArrayBuffer {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack://signalR.protocols.msgpack/webpack/universalModuleDefinition","webpack://signalR.protocols.msgpack/external \"signalR\"","webpack://signalR.protocols.msgpack/webpack/bootstrap","webpack://signalR.protocols.msgpack/webpack/runtime/define property getters","webpack://signalR.protocols.msgpack/webpack/runtime/hasOwnProperty shorthand","webpack://signalR.protocols.msgpack/webpack/runtime/make namespace object","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/utils/int.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/utils/utf8.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/DecodeError.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/ExtData.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/timestamp.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/ExtensionCodec.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/utils/typedArrays.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/Encoder.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/utils/prettyByte.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/CachedKeyDecoder.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/Decoder.mjs","webpack://signalR.protocols.msgpack/src/BinaryMessageFormat.ts","webpack://signalR.protocols.msgpack/src/MessagePackHubProtocol.ts","webpack://signalR.protocols.msgpack/src/Utils.ts","webpack://signalR.protocols.msgpack/src/index.ts"],"names":["root","factory","self","__WEBPACK_EXTERNAL_MODULE__1__","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","UINT32_MAX","setInt64","view","offset","high","Math","floor","low","setUint32","getInt64","getInt32","getUint32","TEXT_ENCODING_AVAILABLE","process","env","TextEncoder","TextDecoder","utf8Count","str","strLength","length","byteLength","pos","charCodeAt","extra","sharedTextEncoder","TEXT_ENCODER_THRESHOLD","utf8EncodeTE","encodeInto","output","outputOffset","subarray","set","encode","utf8DecodeJs","bytes","inputOffset","end","units","result","byte1","push","byte2","byte3","unit","String","fromCharCode","apply","extendStatics","sharedTextDecoder","TEXT_DECODER_THRESHOLD","ExtData","type","data","this","__extends","b","setPrototypeOf","__proto__","Array","p","TypeError","__","constructor","create","DecodeError","_super","message","_this","proto","configurable","name","Error","timestampExtension","object","msec","sec","nsec","nsecInSec","Date","_a","rv","Uint8Array","DataView","buffer","secHigh","secLow","encodeTimeSpecToTimestamp","getTime","decode","timeSpec","byteOffset","nsec30AndSecHigh2","decodeTimestampToTimeSpec","ExtensionCodec","builtInEncoders","builtInDecoders","encoders","decoders","register","index","tryToEncode","context","i","encodeExt","decodeExt","defaultCodec","ensureUint8Array","ArrayBuffer","isView","from","Encoder","extensionCodec","maxDepth","initialBufferSize","sortKeys","forceFloat32","ignoreUndefined","forceIntegerToFloat","getUint8Array","reinitializeState","doEncode","depth","encodeNil","encodeBoolean","encodeNumber","encodeString","encodeObject","ensureBufferSizeToWrite","sizeToWrite","requiredSize","resizeBuffer","newSize","newBuffer","newBytes","newView","writeU8","Number","isSafeInteger","writeU16","writeU32","writeU64","writeI8","writeI16","writeI32","writeI64","writeF32","writeF64","writeStringHeader","utf8EncodeJs","ext","encodeExtension","isArray","encodeArray","encodeBinary","toString","encodeMap","size","writeU8a","_i","object_1","item","countWithoutUndefined","keys","count","keys_1","sort","keys_2","setUint8","values","setInt8","setUint16","setInt16","setInt32","setFloat32","setFloat64","setUint64","prettyByte","byte","abs","padStart","CachedKeyDecoder","maxKeyLength","maxLengthPerKey","hit","miss","caches","canBeCached","find","FIND_CHUNK","records_1","record","recordBytes","j","store","records","random","cachedValue","slicedCopyOfBytes","slice","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","iterator","n","v","op","pop","__asyncValues","asyncIterator","m","__values","settle","__await","__asyncGenerator","q","a","resume","fulfill","shift","EMPTY_VIEW","EMPTY_BYTES","DataViewIndexOutOfBoundsError","getInt8","MORE_DATA","sharedCachedKeyDecoder","Decoder","maxStrLength","maxBinLength","maxArrayLength","maxMapLength","maxExtLength","keyDecoder","totalPos","headByte","stack","setBuffer","bufferView","createDataView","appendBuffer","hasRemaining","remainingData","newData","createExtraByteError","posToShow","RangeError","doDecodeSync","decodeMulti","decodeAsync","stream","stream_1","stream_1_1","e_1","decoded","e_1_1","_b","_c","error","return","decodeArrayStream","decodeMultiAsync","decodeStream","arguments","isArrayHeaderRequired","arrayItemsLeft","stream_2","stream_2_1","e_2","e_3_1","e_3","readArraySize","complete","DECODE","readHeadByte","pushMapState","pushArrayState","decodeUtf8String","readF32","readF64","readU8","readU16","readU32","readU64","readI8","readI16","readI32","readI64","lookU8","lookU16","lookU32","decodeBinary","decodeExtension","state","array","position","keyType","map","readCount","headerOffset","stateIsMapKey","stringBytes","utf8DecodeTD","headOffset","extType","getUint8","getUint16","getInt16","getFloat32","getFloat64","BinaryMessageFormat","lenBuffer","sizePart","input","uint8Array","numBitsToShift","byteRead","numBytes","min","SERIALIZED_PING_MESSAGE","MessageType","MessagePackHubProtocol","messagePackOptions","version","transferFormat","TransferFormat","_errorResult","_voidResult","_nonVoidResult","_encoder","_decoder","logger","val","NullLogger","messages","parse","hubMessages","parsedMessage","_parseMessage","_writeInvocation","_writeStreamInvocation","_writeStreamItem","_writeCompletion","write","_writeCancelInvocation","properties","messageType","_createInvocationMessage","_readHeaders","_createStreamItemMessage","_createCompletionMessage","_createPingMessage","_createCloseMessage","log","LogLevel","allowReconnect","headers","invocationId","streamIds","target","resultKind","invocationMessage","payload","streamInvocationMessage","streamItemMessage","completionMessage","cancelInvocationMessage","VERSION","require","define","amd"],"mappings":"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","file":"signalr-protocol-msgpack.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"signalR\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"signalR\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"msgpack\"] = factory(require(\"signalR\"));\n\telse\n\t\troot[\"signalR\"] = root[\"signalR\"] || {}, root[\"signalR\"][\"protocols\"] = root[\"signalR\"][\"protocols\"] || {}, root[\"signalR\"][\"protocols\"][\"msgpack\"] = factory(root[\"signalR\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__1__) {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Integer Utility\nexport var UINT32_MAX = 4294967295;\n// DataView extension to handle int64 / uint64,\n// where the actual range is 53-bits integer (a.k.a. safe integer)\nexport function setUint64(view, offset, value) {\n var high = value / 4294967296;\n var low = value; // high bits are truncated by DataView\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nexport function setInt64(view, offset, value) {\n var high = Math.floor(value / 4294967296);\n var low = value; // high bits are truncated by DataView\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nexport function getInt64(view, offset) {\n var high = view.getInt32(offset);\n var low = view.getUint32(offset + 4);\n return high * 4294967296 + low;\n}\nexport function getUint64(view, offset) {\n var high = view.getUint32(offset);\n var low = view.getUint32(offset + 4);\n return high * 4294967296 + low;\n}\n//# sourceMappingURL=int.mjs.map","import { UINT32_MAX } from \"./int.mjs\";\nvar TEXT_ENCODING_AVAILABLE = (typeof process === \"undefined\" || process.env[\"TEXT_ENCODING\"] !== \"never\") &&\n typeof TextEncoder !== \"undefined\" &&\n typeof TextDecoder !== \"undefined\";\nexport function utf8Count(str) {\n var strLength = str.length;\n var byteLength = 0;\n var pos = 0;\n while (pos < strLength) {\n var value = str.charCodeAt(pos++);\n if ((value & 0xffffff80) === 0) {\n // 1-byte\n byteLength++;\n continue;\n }\n else if ((value & 0xfffff800) === 0) {\n // 2-bytes\n byteLength += 2;\n }\n else {\n // handle surrogate pair\n if (value >= 0xd800 && value <= 0xdbff) {\n // high surrogate\n if (pos < strLength) {\n var extra = str.charCodeAt(pos);\n if ((extra & 0xfc00) === 0xdc00) {\n ++pos;\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n }\n }\n }\n if ((value & 0xffff0000) === 0) {\n // 3-byte\n byteLength += 3;\n }\n else {\n // 4-byte\n byteLength += 4;\n }\n }\n }\n return byteLength;\n}\nexport function utf8EncodeJs(str, output, outputOffset) {\n var strLength = str.length;\n var offset = outputOffset;\n var pos = 0;\n while (pos < strLength) {\n var value = str.charCodeAt(pos++);\n if ((value & 0xffffff80) === 0) {\n // 1-byte\n output[offset++] = value;\n continue;\n }\n else if ((value & 0xfffff800) === 0) {\n // 2-bytes\n output[offset++] = ((value >> 6) & 0x1f) | 0xc0;\n }\n else {\n // handle surrogate pair\n if (value >= 0xd800 && value <= 0xdbff) {\n // high surrogate\n if (pos < strLength) {\n var extra = str.charCodeAt(pos);\n if ((extra & 0xfc00) === 0xdc00) {\n ++pos;\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n }\n }\n }\n if ((value & 0xffff0000) === 0) {\n // 3-byte\n output[offset++] = ((value >> 12) & 0x0f) | 0xe0;\n output[offset++] = ((value >> 6) & 0x3f) | 0x80;\n }\n else {\n // 4-byte\n output[offset++] = ((value >> 18) & 0x07) | 0xf0;\n output[offset++] = ((value >> 12) & 0x3f) | 0x80;\n output[offset++] = ((value >> 6) & 0x3f) | 0x80;\n }\n }\n output[offset++] = (value & 0x3f) | 0x80;\n }\n}\nvar sharedTextEncoder = TEXT_ENCODING_AVAILABLE ? new TextEncoder() : undefined;\nexport var TEXT_ENCODER_THRESHOLD = !TEXT_ENCODING_AVAILABLE\n ? UINT32_MAX\n : typeof process !== \"undefined\" && process.env[\"TEXT_ENCODING\"] !== \"force\"\n ? 200\n : 0;\nfunction utf8EncodeTEencode(str, output, outputOffset) {\n output.set(sharedTextEncoder.encode(str), outputOffset);\n}\nfunction utf8EncodeTEencodeInto(str, output, outputOffset) {\n sharedTextEncoder.encodeInto(str, output.subarray(outputOffset));\n}\nexport var utf8EncodeTE = (sharedTextEncoder === null || sharedTextEncoder === void 0 ? void 0 : sharedTextEncoder.encodeInto) ? utf8EncodeTEencodeInto : utf8EncodeTEencode;\nvar CHUNK_SIZE = 4096;\nexport function utf8DecodeJs(bytes, inputOffset, byteLength) {\n var offset = inputOffset;\n var end = offset + byteLength;\n var units = [];\n var result = \"\";\n while (offset < end) {\n var byte1 = bytes[offset++];\n if ((byte1 & 0x80) === 0) {\n // 1 byte\n units.push(byte1);\n }\n else if ((byte1 & 0xe0) === 0xc0) {\n // 2 bytes\n var byte2 = bytes[offset++] & 0x3f;\n units.push(((byte1 & 0x1f) << 6) | byte2);\n }\n else if ((byte1 & 0xf0) === 0xe0) {\n // 3 bytes\n var byte2 = bytes[offset++] & 0x3f;\n var byte3 = bytes[offset++] & 0x3f;\n units.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3);\n }\n else if ((byte1 & 0xf8) === 0xf0) {\n // 4 bytes\n var byte2 = bytes[offset++] & 0x3f;\n var byte3 = bytes[offset++] & 0x3f;\n var byte4 = bytes[offset++] & 0x3f;\n var unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;\n if (unit > 0xffff) {\n unit -= 0x10000;\n units.push(((unit >>> 10) & 0x3ff) | 0xd800);\n unit = 0xdc00 | (unit & 0x3ff);\n }\n units.push(unit);\n }\n else {\n units.push(byte1);\n }\n if (units.length >= CHUNK_SIZE) {\n result += String.fromCharCode.apply(String, units);\n units.length = 0;\n }\n }\n if (units.length > 0) {\n result += String.fromCharCode.apply(String, units);\n }\n return result;\n}\nvar sharedTextDecoder = TEXT_ENCODING_AVAILABLE ? new TextDecoder() : null;\nexport var TEXT_DECODER_THRESHOLD = !TEXT_ENCODING_AVAILABLE\n ? UINT32_MAX\n : typeof process !== \"undefined\" && process.env[\"TEXT_DECODER\"] !== \"force\"\n ? 200\n : 0;\nexport function utf8DecodeTD(bytes, inputOffset, byteLength) {\n var stringBytes = bytes.subarray(inputOffset, inputOffset + byteLength);\n return sharedTextDecoder.decode(stringBytes);\n}\n//# sourceMappingURL=utf8.mjs.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar DecodeError = /** @class */ (function (_super) {\n __extends(DecodeError, _super);\n function DecodeError(message) {\n var _this = _super.call(this, message) || this;\n // fix the prototype chain in a cross-platform way\n var proto = Object.create(DecodeError.prototype);\n Object.setPrototypeOf(_this, proto);\n Object.defineProperty(_this, \"name\", {\n configurable: true,\n enumerable: false,\n value: DecodeError.name,\n });\n return _this;\n }\n return DecodeError;\n}(Error));\nexport { DecodeError };\n//# sourceMappingURL=DecodeError.mjs.map","/**\n * ExtData is used to handle Extension Types that are not registered to ExtensionCodec.\n */\nvar ExtData = /** @class */ (function () {\n function ExtData(type, data) {\n this.type = type;\n this.data = data;\n }\n return ExtData;\n}());\nexport { ExtData };\n//# sourceMappingURL=ExtData.mjs.map","// https://github.com/msgpack/msgpack/blob/master/spec.md#timestamp-extension-type\nimport { DecodeError } from \"./DecodeError.mjs\";\nimport { getInt64, setInt64 } from \"./utils/int.mjs\";\nexport var EXT_TIMESTAMP = -1;\nvar TIMESTAMP32_MAX_SEC = 0x100000000 - 1; // 32-bit unsigned int\nvar TIMESTAMP64_MAX_SEC = 0x400000000 - 1; // 34-bit unsigned int\nexport function encodeTimeSpecToTimestamp(_a) {\n var sec = _a.sec, nsec = _a.nsec;\n if (sec >= 0 && nsec >= 0 && sec <= TIMESTAMP64_MAX_SEC) {\n // Here sec >= 0 && nsec >= 0\n if (nsec === 0 && sec <= TIMESTAMP32_MAX_SEC) {\n // timestamp 32 = { sec32 (unsigned) }\n var rv = new Uint8Array(4);\n var view = new DataView(rv.buffer);\n view.setUint32(0, sec);\n return rv;\n }\n else {\n // timestamp 64 = { nsec30 (unsigned), sec34 (unsigned) }\n var secHigh = sec / 0x100000000;\n var secLow = sec & 0xffffffff;\n var rv = new Uint8Array(8);\n var view = new DataView(rv.buffer);\n // nsec30 | secHigh2\n view.setUint32(0, (nsec << 2) | (secHigh & 0x3));\n // secLow32\n view.setUint32(4, secLow);\n return rv;\n }\n }\n else {\n // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }\n var rv = new Uint8Array(12);\n var view = new DataView(rv.buffer);\n view.setUint32(0, nsec);\n setInt64(view, 4, sec);\n return rv;\n }\n}\nexport function encodeDateToTimeSpec(date) {\n var msec = date.getTime();\n var sec = Math.floor(msec / 1e3);\n var nsec = (msec - sec * 1e3) * 1e6;\n // Normalizes { sec, nsec } to ensure nsec is unsigned.\n var nsecInSec = Math.floor(nsec / 1e9);\n return {\n sec: sec + nsecInSec,\n nsec: nsec - nsecInSec * 1e9,\n };\n}\nexport function encodeTimestampExtension(object) {\n if (object instanceof Date) {\n var timeSpec = encodeDateToTimeSpec(object);\n return encodeTimeSpecToTimestamp(timeSpec);\n }\n else {\n return null;\n }\n}\nexport function decodeTimestampToTimeSpec(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n // data may be 32, 64, or 96 bits\n switch (data.byteLength) {\n case 4: {\n // timestamp 32 = { sec32 }\n var sec = view.getUint32(0);\n var nsec = 0;\n return { sec: sec, nsec: nsec };\n }\n case 8: {\n // timestamp 64 = { nsec30, sec34 }\n var nsec30AndSecHigh2 = view.getUint32(0);\n var secLow32 = view.getUint32(4);\n var sec = (nsec30AndSecHigh2 & 0x3) * 0x100000000 + secLow32;\n var nsec = nsec30AndSecHigh2 >>> 2;\n return { sec: sec, nsec: nsec };\n }\n case 12: {\n // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }\n var sec = getInt64(view, 4);\n var nsec = view.getUint32(0);\n return { sec: sec, nsec: nsec };\n }\n default:\n throw new DecodeError(\"Unrecognized data size for timestamp (expected 4, 8, or 12): \" + data.length);\n }\n}\nexport function decodeTimestampExtension(data) {\n var timeSpec = decodeTimestampToTimeSpec(data);\n return new Date(timeSpec.sec * 1e3 + timeSpec.nsec / 1e6);\n}\nexport var timestampExtension = {\n type: EXT_TIMESTAMP,\n encode: encodeTimestampExtension,\n decode: decodeTimestampExtension,\n};\n//# sourceMappingURL=timestamp.mjs.map","// ExtensionCodec to handle MessagePack extensions\nimport { ExtData } from \"./ExtData.mjs\";\nimport { timestampExtension } from \"./timestamp.mjs\";\nvar ExtensionCodec = /** @class */ (function () {\n function ExtensionCodec() {\n // built-in extensions\n this.builtInEncoders = [];\n this.builtInDecoders = [];\n // custom extensions\n this.encoders = [];\n this.decoders = [];\n this.register(timestampExtension);\n }\n ExtensionCodec.prototype.register = function (_a) {\n var type = _a.type, encode = _a.encode, decode = _a.decode;\n if (type >= 0) {\n // custom extensions\n this.encoders[type] = encode;\n this.decoders[type] = decode;\n }\n else {\n // built-in extensions\n var index = 1 + type;\n this.builtInEncoders[index] = encode;\n this.builtInDecoders[index] = decode;\n }\n };\n ExtensionCodec.prototype.tryToEncode = function (object, context) {\n // built-in extensions\n for (var i = 0; i < this.builtInEncoders.length; i++) {\n var encodeExt = this.builtInEncoders[i];\n if (encodeExt != null) {\n var data = encodeExt(object, context);\n if (data != null) {\n var type = -1 - i;\n return new ExtData(type, data);\n }\n }\n }\n // custom extensions\n for (var i = 0; i < this.encoders.length; i++) {\n var encodeExt = this.encoders[i];\n if (encodeExt != null) {\n var data = encodeExt(object, context);\n if (data != null) {\n var type = i;\n return new ExtData(type, data);\n }\n }\n }\n if (object instanceof ExtData) {\n // to keep ExtData as is\n return object;\n }\n return null;\n };\n ExtensionCodec.prototype.decode = function (data, type, context) {\n var decodeExt = type < 0 ? this.builtInDecoders[-1 - type] : this.decoders[type];\n if (decodeExt) {\n return decodeExt(data, type, context);\n }\n else {\n // decode() does not fail, returns ExtData instead.\n return new ExtData(type, data);\n }\n };\n ExtensionCodec.defaultCodec = new ExtensionCodec();\n return ExtensionCodec;\n}());\nexport { ExtensionCodec };\n//# sourceMappingURL=ExtensionCodec.mjs.map","export function ensureUint8Array(buffer) {\n if (buffer instanceof Uint8Array) {\n return buffer;\n }\n else if (ArrayBuffer.isView(buffer)) {\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n else if (buffer instanceof ArrayBuffer) {\n return new Uint8Array(buffer);\n }\n else {\n // ArrayLike\n return Uint8Array.from(buffer);\n }\n}\nexport function createDataView(buffer) {\n if (buffer instanceof ArrayBuffer) {\n return new DataView(buffer);\n }\n var bufferView = ensureUint8Array(buffer);\n return new DataView(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\n}\n//# sourceMappingURL=typedArrays.mjs.map","import { utf8EncodeJs, utf8Count, TEXT_ENCODER_THRESHOLD, utf8EncodeTE } from \"./utils/utf8.mjs\";\nimport { ExtensionCodec } from \"./ExtensionCodec.mjs\";\nimport { setInt64, setUint64 } from \"./utils/int.mjs\";\nimport { ensureUint8Array } from \"./utils/typedArrays.mjs\";\nexport var DEFAULT_MAX_DEPTH = 100;\nexport var DEFAULT_INITIAL_BUFFER_SIZE = 2048;\nvar Encoder = /** @class */ (function () {\n function Encoder(extensionCodec, context, maxDepth, initialBufferSize, sortKeys, forceFloat32, ignoreUndefined, forceIntegerToFloat) {\n if (extensionCodec === void 0) { extensionCodec = ExtensionCodec.defaultCodec; }\n if (context === void 0) { context = undefined; }\n if (maxDepth === void 0) { maxDepth = DEFAULT_MAX_DEPTH; }\n if (initialBufferSize === void 0) { initialBufferSize = DEFAULT_INITIAL_BUFFER_SIZE; }\n if (sortKeys === void 0) { sortKeys = false; }\n if (forceFloat32 === void 0) { forceFloat32 = false; }\n if (ignoreUndefined === void 0) { ignoreUndefined = false; }\n if (forceIntegerToFloat === void 0) { forceIntegerToFloat = false; }\n this.extensionCodec = extensionCodec;\n this.context = context;\n this.maxDepth = maxDepth;\n this.initialBufferSize = initialBufferSize;\n this.sortKeys = sortKeys;\n this.forceFloat32 = forceFloat32;\n this.ignoreUndefined = ignoreUndefined;\n this.forceIntegerToFloat = forceIntegerToFloat;\n this.pos = 0;\n this.view = new DataView(new ArrayBuffer(this.initialBufferSize));\n this.bytes = new Uint8Array(this.view.buffer);\n }\n Encoder.prototype.getUint8Array = function () {\n return this.bytes.subarray(0, this.pos);\n };\n Encoder.prototype.reinitializeState = function () {\n this.pos = 0;\n };\n Encoder.prototype.encode = function (object) {\n this.reinitializeState();\n this.doEncode(object, 1);\n return this.getUint8Array();\n };\n Encoder.prototype.doEncode = function (object, depth) {\n if (depth > this.maxDepth) {\n throw new Error(\"Too deep objects in depth \" + depth);\n }\n if (object == null) {\n this.encodeNil();\n }\n else if (typeof object === \"boolean\") {\n this.encodeBoolean(object);\n }\n else if (typeof object === \"number\") {\n this.encodeNumber(object);\n }\n else if (typeof object === \"string\") {\n this.encodeString(object);\n }\n else {\n this.encodeObject(object, depth);\n }\n };\n Encoder.prototype.ensureBufferSizeToWrite = function (sizeToWrite) {\n var requiredSize = this.pos + sizeToWrite;\n if (this.view.byteLength < requiredSize) {\n this.resizeBuffer(requiredSize * 2);\n }\n };\n Encoder.prototype.resizeBuffer = function (newSize) {\n var newBuffer = new ArrayBuffer(newSize);\n var newBytes = new Uint8Array(newBuffer);\n var newView = new DataView(newBuffer);\n newBytes.set(this.bytes);\n this.view = newView;\n this.bytes = newBytes;\n };\n Encoder.prototype.encodeNil = function () {\n this.writeU8(0xc0);\n };\n Encoder.prototype.encodeBoolean = function (object) {\n if (object === false) {\n this.writeU8(0xc2);\n }\n else {\n this.writeU8(0xc3);\n }\n };\n Encoder.prototype.encodeNumber = function (object) {\n if (Number.isSafeInteger(object) && !this.forceIntegerToFloat) {\n if (object >= 0) {\n if (object < 0x80) {\n // positive fixint\n this.writeU8(object);\n }\n else if (object < 0x100) {\n // uint 8\n this.writeU8(0xcc);\n this.writeU8(object);\n }\n else if (object < 0x10000) {\n // uint 16\n this.writeU8(0xcd);\n this.writeU16(object);\n }\n else if (object < 0x100000000) {\n // uint 32\n this.writeU8(0xce);\n this.writeU32(object);\n }\n else {\n // uint 64\n this.writeU8(0xcf);\n this.writeU64(object);\n }\n }\n else {\n if (object >= -0x20) {\n // negative fixint\n this.writeU8(0xe0 | (object + 0x20));\n }\n else if (object >= -0x80) {\n // int 8\n this.writeU8(0xd0);\n this.writeI8(object);\n }\n else if (object >= -0x8000) {\n // int 16\n this.writeU8(0xd1);\n this.writeI16(object);\n }\n else if (object >= -0x80000000) {\n // int 32\n this.writeU8(0xd2);\n this.writeI32(object);\n }\n else {\n // int 64\n this.writeU8(0xd3);\n this.writeI64(object);\n }\n }\n }\n else {\n // non-integer numbers\n if (this.forceFloat32) {\n // float 32\n this.writeU8(0xca);\n this.writeF32(object);\n }\n else {\n // float 64\n this.writeU8(0xcb);\n this.writeF64(object);\n }\n }\n };\n Encoder.prototype.writeStringHeader = function (byteLength) {\n if (byteLength < 32) {\n // fixstr\n this.writeU8(0xa0 + byteLength);\n }\n else if (byteLength < 0x100) {\n // str 8\n this.writeU8(0xd9);\n this.writeU8(byteLength);\n }\n else if (byteLength < 0x10000) {\n // str 16\n this.writeU8(0xda);\n this.writeU16(byteLength);\n }\n else if (byteLength < 0x100000000) {\n // str 32\n this.writeU8(0xdb);\n this.writeU32(byteLength);\n }\n else {\n throw new Error(\"Too long string: \" + byteLength + \" bytes in UTF-8\");\n }\n };\n Encoder.prototype.encodeString = function (object) {\n var maxHeaderSize = 1 + 4;\n var strLength = object.length;\n if (strLength > TEXT_ENCODER_THRESHOLD) {\n var byteLength = utf8Count(object);\n this.ensureBufferSizeToWrite(maxHeaderSize + byteLength);\n this.writeStringHeader(byteLength);\n utf8EncodeTE(object, this.bytes, this.pos);\n this.pos += byteLength;\n }\n else {\n var byteLength = utf8Count(object);\n this.ensureBufferSizeToWrite(maxHeaderSize + byteLength);\n this.writeStringHeader(byteLength);\n utf8EncodeJs(object, this.bytes, this.pos);\n this.pos += byteLength;\n }\n };\n Encoder.prototype.encodeObject = function (object, depth) {\n // try to encode objects with custom codec first of non-primitives\n var ext = this.extensionCodec.tryToEncode(object, this.context);\n if (ext != null) {\n this.encodeExtension(ext);\n }\n else if (Array.isArray(object)) {\n this.encodeArray(object, depth);\n }\n else if (ArrayBuffer.isView(object)) {\n this.encodeBinary(object);\n }\n else if (typeof object === \"object\") {\n this.encodeMap(object, depth);\n }\n else {\n // symbol, function and other special object come here unless extensionCodec handles them.\n throw new Error(\"Unrecognized object: \" + Object.prototype.toString.apply(object));\n }\n };\n Encoder.prototype.encodeBinary = function (object) {\n var size = object.byteLength;\n if (size < 0x100) {\n // bin 8\n this.writeU8(0xc4);\n this.writeU8(size);\n }\n else if (size < 0x10000) {\n // bin 16\n this.writeU8(0xc5);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // bin 32\n this.writeU8(0xc6);\n this.writeU32(size);\n }\n else {\n throw new Error(\"Too large binary: \" + size);\n }\n var bytes = ensureUint8Array(object);\n this.writeU8a(bytes);\n };\n Encoder.prototype.encodeArray = function (object, depth) {\n var size = object.length;\n if (size < 16) {\n // fixarray\n this.writeU8(0x90 + size);\n }\n else if (size < 0x10000) {\n // array 16\n this.writeU8(0xdc);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // array 32\n this.writeU8(0xdd);\n this.writeU32(size);\n }\n else {\n throw new Error(\"Too large array: \" + size);\n }\n for (var _i = 0, object_1 = object; _i < object_1.length; _i++) {\n var item = object_1[_i];\n this.doEncode(item, depth + 1);\n }\n };\n Encoder.prototype.countWithoutUndefined = function (object, keys) {\n var count = 0;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (object[key] !== undefined) {\n count++;\n }\n }\n return count;\n };\n Encoder.prototype.encodeMap = function (object, depth) {\n var keys = Object.keys(object);\n if (this.sortKeys) {\n keys.sort();\n }\n var size = this.ignoreUndefined ? this.countWithoutUndefined(object, keys) : keys.length;\n if (size < 16) {\n // fixmap\n this.writeU8(0x80 + size);\n }\n else if (size < 0x10000) {\n // map 16\n this.writeU8(0xde);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // map 32\n this.writeU8(0xdf);\n this.writeU32(size);\n }\n else {\n throw new Error(\"Too large map object: \" + size);\n }\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var value = object[key];\n if (!(this.ignoreUndefined && value === undefined)) {\n this.encodeString(key);\n this.doEncode(value, depth + 1);\n }\n }\n };\n Encoder.prototype.encodeExtension = function (ext) {\n var size = ext.data.length;\n if (size === 1) {\n // fixext 1\n this.writeU8(0xd4);\n }\n else if (size === 2) {\n // fixext 2\n this.writeU8(0xd5);\n }\n else if (size === 4) {\n // fixext 4\n this.writeU8(0xd6);\n }\n else if (size === 8) {\n // fixext 8\n this.writeU8(0xd7);\n }\n else if (size === 16) {\n // fixext 16\n this.writeU8(0xd8);\n }\n else if (size < 0x100) {\n // ext 8\n this.writeU8(0xc7);\n this.writeU8(size);\n }\n else if (size < 0x10000) {\n // ext 16\n this.writeU8(0xc8);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // ext 32\n this.writeU8(0xc9);\n this.writeU32(size);\n }\n else {\n throw new Error(\"Too large extension object: \" + size);\n }\n this.writeI8(ext.type);\n this.writeU8a(ext.data);\n };\n Encoder.prototype.writeU8 = function (value) {\n this.ensureBufferSizeToWrite(1);\n this.view.setUint8(this.pos, value);\n this.pos++;\n };\n Encoder.prototype.writeU8a = function (values) {\n var size = values.length;\n this.ensureBufferSizeToWrite(size);\n this.bytes.set(values, this.pos);\n this.pos += size;\n };\n Encoder.prototype.writeI8 = function (value) {\n this.ensureBufferSizeToWrite(1);\n this.view.setInt8(this.pos, value);\n this.pos++;\n };\n Encoder.prototype.writeU16 = function (value) {\n this.ensureBufferSizeToWrite(2);\n this.view.setUint16(this.pos, value);\n this.pos += 2;\n };\n Encoder.prototype.writeI16 = function (value) {\n this.ensureBufferSizeToWrite(2);\n this.view.setInt16(this.pos, value);\n this.pos += 2;\n };\n Encoder.prototype.writeU32 = function (value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setUint32(this.pos, value);\n this.pos += 4;\n };\n Encoder.prototype.writeI32 = function (value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setInt32(this.pos, value);\n this.pos += 4;\n };\n Encoder.prototype.writeF32 = function (value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setFloat32(this.pos, value);\n this.pos += 4;\n };\n Encoder.prototype.writeF64 = function (value) {\n this.ensureBufferSizeToWrite(8);\n this.view.setFloat64(this.pos, value);\n this.pos += 8;\n };\n Encoder.prototype.writeU64 = function (value) {\n this.ensureBufferSizeToWrite(8);\n setUint64(this.view, this.pos, value);\n this.pos += 8;\n };\n Encoder.prototype.writeI64 = function (value) {\n this.ensureBufferSizeToWrite(8);\n setInt64(this.view, this.pos, value);\n this.pos += 8;\n };\n return Encoder;\n}());\nexport { Encoder };\n//# sourceMappingURL=Encoder.mjs.map","export function prettyByte(byte) {\n return (byte < 0 ? \"-\" : \"\") + \"0x\" + Math.abs(byte).toString(16).padStart(2, \"0\");\n}\n//# sourceMappingURL=prettyByte.mjs.map","import { utf8DecodeJs } from \"./utils/utf8.mjs\";\nvar DEFAULT_MAX_KEY_LENGTH = 16;\nvar DEFAULT_MAX_LENGTH_PER_KEY = 16;\nvar CachedKeyDecoder = /** @class */ (function () {\n function CachedKeyDecoder(maxKeyLength, maxLengthPerKey) {\n if (maxKeyLength === void 0) { maxKeyLength = DEFAULT_MAX_KEY_LENGTH; }\n if (maxLengthPerKey === void 0) { maxLengthPerKey = DEFAULT_MAX_LENGTH_PER_KEY; }\n this.maxKeyLength = maxKeyLength;\n this.maxLengthPerKey = maxLengthPerKey;\n this.hit = 0;\n this.miss = 0;\n // avoid `new Array(N)`, which makes a sparse array,\n // because a sparse array is typically slower than a non-sparse array.\n this.caches = [];\n for (var i = 0; i < this.maxKeyLength; i++) {\n this.caches.push([]);\n }\n }\n CachedKeyDecoder.prototype.canBeCached = function (byteLength) {\n return byteLength > 0 && byteLength <= this.maxKeyLength;\n };\n CachedKeyDecoder.prototype.find = function (bytes, inputOffset, byteLength) {\n var records = this.caches[byteLength - 1];\n FIND_CHUNK: for (var _i = 0, records_1 = records; _i < records_1.length; _i++) {\n var record = records_1[_i];\n var recordBytes = record.bytes;\n for (var j = 0; j < byteLength; j++) {\n if (recordBytes[j] !== bytes[inputOffset + j]) {\n continue FIND_CHUNK;\n }\n }\n return record.str;\n }\n return null;\n };\n CachedKeyDecoder.prototype.store = function (bytes, value) {\n var records = this.caches[bytes.length - 1];\n var record = { bytes: bytes, str: value };\n if (records.length >= this.maxLengthPerKey) {\n // `records` are full!\n // Set `record` to an arbitrary position.\n records[(Math.random() * records.length) | 0] = record;\n }\n else {\n records.push(record);\n }\n };\n CachedKeyDecoder.prototype.decode = function (bytes, inputOffset, byteLength) {\n var cachedValue = this.find(bytes, inputOffset, byteLength);\n if (cachedValue != null) {\n this.hit++;\n return cachedValue;\n }\n this.miss++;\n var str = utf8DecodeJs(bytes, inputOffset, byteLength);\n // Ensure to copy a slice of bytes because the byte may be NodeJS Buffer and Buffer#slice() returns a reference to its internal ArrayBuffer.\n var slicedCopyOfBytes = Uint8Array.prototype.slice.call(bytes, inputOffset, inputOffset + byteLength);\n this.store(slicedCopyOfBytes, str);\n return str;\n };\n return CachedKeyDecoder;\n}());\nexport { CachedKeyDecoder };\n//# sourceMappingURL=CachedKeyDecoder.mjs.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nimport { prettyByte } from \"./utils/prettyByte.mjs\";\nimport { ExtensionCodec } from \"./ExtensionCodec.mjs\";\nimport { getInt64, getUint64, UINT32_MAX } from \"./utils/int.mjs\";\nimport { utf8DecodeJs, TEXT_DECODER_THRESHOLD, utf8DecodeTD } from \"./utils/utf8.mjs\";\nimport { createDataView, ensureUint8Array } from \"./utils/typedArrays.mjs\";\nimport { CachedKeyDecoder } from \"./CachedKeyDecoder.mjs\";\nimport { DecodeError } from \"./DecodeError.mjs\";\nvar isValidMapKeyType = function (key) {\n var keyType = typeof key;\n return keyType === \"string\" || keyType === \"number\";\n};\nvar HEAD_BYTE_REQUIRED = -1;\nvar EMPTY_VIEW = new DataView(new ArrayBuffer(0));\nvar EMPTY_BYTES = new Uint8Array(EMPTY_VIEW.buffer);\n// IE11: Hack to support IE11.\n// IE11: Drop this hack and just use RangeError when IE11 is obsolete.\nexport var DataViewIndexOutOfBoundsError = (function () {\n try {\n // IE11: The spec says it should throw RangeError,\n // IE11: but in IE11 it throws TypeError.\n EMPTY_VIEW.getInt8(0);\n }\n catch (e) {\n return e.constructor;\n }\n throw new Error(\"never reached\");\n})();\nvar MORE_DATA = new DataViewIndexOutOfBoundsError(\"Insufficient data\");\nvar sharedCachedKeyDecoder = new CachedKeyDecoder();\nvar Decoder = /** @class */ (function () {\n function Decoder(extensionCodec, context, maxStrLength, maxBinLength, maxArrayLength, maxMapLength, maxExtLength, keyDecoder) {\n if (extensionCodec === void 0) { extensionCodec = ExtensionCodec.defaultCodec; }\n if (context === void 0) { context = undefined; }\n if (maxStrLength === void 0) { maxStrLength = UINT32_MAX; }\n if (maxBinLength === void 0) { maxBinLength = UINT32_MAX; }\n if (maxArrayLength === void 0) { maxArrayLength = UINT32_MAX; }\n if (maxMapLength === void 0) { maxMapLength = UINT32_MAX; }\n if (maxExtLength === void 0) { maxExtLength = UINT32_MAX; }\n if (keyDecoder === void 0) { keyDecoder = sharedCachedKeyDecoder; }\n this.extensionCodec = extensionCodec;\n this.context = context;\n this.maxStrLength = maxStrLength;\n this.maxBinLength = maxBinLength;\n this.maxArrayLength = maxArrayLength;\n this.maxMapLength = maxMapLength;\n this.maxExtLength = maxExtLength;\n this.keyDecoder = keyDecoder;\n this.totalPos = 0;\n this.pos = 0;\n this.view = EMPTY_VIEW;\n this.bytes = EMPTY_BYTES;\n this.headByte = HEAD_BYTE_REQUIRED;\n this.stack = [];\n }\n Decoder.prototype.reinitializeState = function () {\n this.totalPos = 0;\n this.headByte = HEAD_BYTE_REQUIRED;\n this.stack.length = 0;\n // view, bytes, and pos will be re-initialized in setBuffer()\n };\n Decoder.prototype.setBuffer = function (buffer) {\n this.bytes = ensureUint8Array(buffer);\n this.view = createDataView(this.bytes);\n this.pos = 0;\n };\n Decoder.prototype.appendBuffer = function (buffer) {\n if (this.headByte === HEAD_BYTE_REQUIRED && !this.hasRemaining(1)) {\n this.setBuffer(buffer);\n }\n else {\n var remainingData = this.bytes.subarray(this.pos);\n var newData = ensureUint8Array(buffer);\n // concat remainingData + newData\n var newBuffer = new Uint8Array(remainingData.length + newData.length);\n newBuffer.set(remainingData);\n newBuffer.set(newData, remainingData.length);\n this.setBuffer(newBuffer);\n }\n };\n Decoder.prototype.hasRemaining = function (size) {\n return this.view.byteLength - this.pos >= size;\n };\n Decoder.prototype.createExtraByteError = function (posToShow) {\n var _a = this, view = _a.view, pos = _a.pos;\n return new RangeError(\"Extra \" + (view.byteLength - pos) + \" of \" + view.byteLength + \" byte(s) found at buffer[\" + posToShow + \"]\");\n };\n /**\n * @throws {DecodeError}\n * @throws {RangeError}\n */\n Decoder.prototype.decode = function (buffer) {\n this.reinitializeState();\n this.setBuffer(buffer);\n var object = this.doDecodeSync();\n if (this.hasRemaining(1)) {\n throw this.createExtraByteError(this.pos);\n }\n return object;\n };\n Decoder.prototype.decodeMulti = function (buffer) {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.reinitializeState();\n this.setBuffer(buffer);\n _a.label = 1;\n case 1:\n if (!this.hasRemaining(1)) return [3 /*break*/, 3];\n return [4 /*yield*/, this.doDecodeSync()];\n case 2:\n _a.sent();\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/];\n }\n });\n };\n Decoder.prototype.decodeAsync = function (stream) {\n var stream_1, stream_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function () {\n var decoded, object, buffer, e_1_1, _b, headByte, pos, totalPos;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n decoded = false;\n _c.label = 1;\n case 1:\n _c.trys.push([1, 6, 7, 12]);\n stream_1 = __asyncValues(stream);\n _c.label = 2;\n case 2: return [4 /*yield*/, stream_1.next()];\n case 3:\n if (!(stream_1_1 = _c.sent(), !stream_1_1.done)) return [3 /*break*/, 5];\n buffer = stream_1_1.value;\n if (decoded) {\n throw this.createExtraByteError(this.totalPos);\n }\n this.appendBuffer(buffer);\n try {\n object = this.doDecodeSync();\n decoded = true;\n }\n catch (e) {\n if (!(e instanceof DataViewIndexOutOfBoundsError)) {\n throw e; // rethrow\n }\n // fallthrough\n }\n this.totalPos += this.pos;\n _c.label = 4;\n case 4: return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 12];\n case 6:\n e_1_1 = _c.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 12];\n case 7:\n _c.trys.push([7, , 10, 11]);\n if (!(stream_1_1 && !stream_1_1.done && (_a = stream_1.return))) return [3 /*break*/, 9];\n return [4 /*yield*/, _a.call(stream_1)];\n case 8:\n _c.sent();\n _c.label = 9;\n case 9: return [3 /*break*/, 11];\n case 10:\n if (e_1) throw e_1.error;\n return [7 /*endfinally*/];\n case 11: return [7 /*endfinally*/];\n case 12:\n if (decoded) {\n if (this.hasRemaining(1)) {\n throw this.createExtraByteError(this.totalPos);\n }\n return [2 /*return*/, object];\n }\n _b = this, headByte = _b.headByte, pos = _b.pos, totalPos = _b.totalPos;\n throw new RangeError(\"Insufficient data in parsing \" + prettyByte(headByte) + \" at \" + totalPos + \" (\" + pos + \" in the current buffer)\");\n }\n });\n });\n };\n Decoder.prototype.decodeArrayStream = function (stream) {\n return this.decodeMultiAsync(stream, true);\n };\n Decoder.prototype.decodeStream = function (stream) {\n return this.decodeMultiAsync(stream, false);\n };\n Decoder.prototype.decodeMultiAsync = function (stream, isArray) {\n return __asyncGenerator(this, arguments, function decodeMultiAsync_1() {\n var isArrayHeaderRequired, arrayItemsLeft, stream_2, stream_2_1, buffer, e_2, e_3_1;\n var e_3, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n isArrayHeaderRequired = isArray;\n arrayItemsLeft = -1;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 13, 14, 19]);\n stream_2 = __asyncValues(stream);\n _b.label = 2;\n case 2: return [4 /*yield*/, __await(stream_2.next())];\n case 3:\n if (!(stream_2_1 = _b.sent(), !stream_2_1.done)) return [3 /*break*/, 12];\n buffer = stream_2_1.value;\n if (isArray && arrayItemsLeft === 0) {\n throw this.createExtraByteError(this.totalPos);\n }\n this.appendBuffer(buffer);\n if (isArrayHeaderRequired) {\n arrayItemsLeft = this.readArraySize();\n isArrayHeaderRequired = false;\n this.complete();\n }\n _b.label = 4;\n case 4:\n _b.trys.push([4, 9, , 10]);\n _b.label = 5;\n case 5:\n if (!true) return [3 /*break*/, 8];\n return [4 /*yield*/, __await(this.doDecodeSync())];\n case 6: return [4 /*yield*/, _b.sent()];\n case 7:\n _b.sent();\n if (--arrayItemsLeft === 0) {\n return [3 /*break*/, 8];\n }\n return [3 /*break*/, 5];\n case 8: return [3 /*break*/, 10];\n case 9:\n e_2 = _b.sent();\n if (!(e_2 instanceof DataViewIndexOutOfBoundsError)) {\n throw e_2; // rethrow\n }\n return [3 /*break*/, 10];\n case 10:\n this.totalPos += this.pos;\n _b.label = 11;\n case 11: return [3 /*break*/, 2];\n case 12: return [3 /*break*/, 19];\n case 13:\n e_3_1 = _b.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 19];\n case 14:\n _b.trys.push([14, , 17, 18]);\n if (!(stream_2_1 && !stream_2_1.done && (_a = stream_2.return))) return [3 /*break*/, 16];\n return [4 /*yield*/, __await(_a.call(stream_2))];\n case 15:\n _b.sent();\n _b.label = 16;\n case 16: return [3 /*break*/, 18];\n case 17:\n if (e_3) throw e_3.error;\n return [7 /*endfinally*/];\n case 18: return [7 /*endfinally*/];\n case 19: return [2 /*return*/];\n }\n });\n });\n };\n Decoder.prototype.doDecodeSync = function () {\n DECODE: while (true) {\n var headByte = this.readHeadByte();\n var object = void 0;\n if (headByte >= 0xe0) {\n // negative fixint (111x xxxx) 0xe0 - 0xff\n object = headByte - 0x100;\n }\n else if (headByte < 0xc0) {\n if (headByte < 0x80) {\n // positive fixint (0xxx xxxx) 0x00 - 0x7f\n object = headByte;\n }\n else if (headByte < 0x90) {\n // fixmap (1000 xxxx) 0x80 - 0x8f\n var size = headByte - 0x80;\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte < 0xa0) {\n // fixarray (1001 xxxx) 0x90 - 0x9f\n var size = headByte - 0x90;\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else {\n // fixstr (101x xxxx) 0xa0 - 0xbf\n var byteLength = headByte - 0xa0;\n object = this.decodeUtf8String(byteLength, 0);\n }\n }\n else if (headByte === 0xc0) {\n // nil\n object = null;\n }\n else if (headByte === 0xc2) {\n // false\n object = false;\n }\n else if (headByte === 0xc3) {\n // true\n object = true;\n }\n else if (headByte === 0xca) {\n // float 32\n object = this.readF32();\n }\n else if (headByte === 0xcb) {\n // float 64\n object = this.readF64();\n }\n else if (headByte === 0xcc) {\n // uint 8\n object = this.readU8();\n }\n else if (headByte === 0xcd) {\n // uint 16\n object = this.readU16();\n }\n else if (headByte === 0xce) {\n // uint 32\n object = this.readU32();\n }\n else if (headByte === 0xcf) {\n // uint 64\n object = this.readU64();\n }\n else if (headByte === 0xd0) {\n // int 8\n object = this.readI8();\n }\n else if (headByte === 0xd1) {\n // int 16\n object = this.readI16();\n }\n else if (headByte === 0xd2) {\n // int 32\n object = this.readI32();\n }\n else if (headByte === 0xd3) {\n // int 64\n object = this.readI64();\n }\n else if (headByte === 0xd9) {\n // str 8\n var byteLength = this.lookU8();\n object = this.decodeUtf8String(byteLength, 1);\n }\n else if (headByte === 0xda) {\n // str 16\n var byteLength = this.lookU16();\n object = this.decodeUtf8String(byteLength, 2);\n }\n else if (headByte === 0xdb) {\n // str 32\n var byteLength = this.lookU32();\n object = this.decodeUtf8String(byteLength, 4);\n }\n else if (headByte === 0xdc) {\n // array 16\n var size = this.readU16();\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else if (headByte === 0xdd) {\n // array 32\n var size = this.readU32();\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else if (headByte === 0xde) {\n // map 16\n var size = this.readU16();\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte === 0xdf) {\n // map 32\n var size = this.readU32();\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte === 0xc4) {\n // bin 8\n var size = this.lookU8();\n object = this.decodeBinary(size, 1);\n }\n else if (headByte === 0xc5) {\n // bin 16\n var size = this.lookU16();\n object = this.decodeBinary(size, 2);\n }\n else if (headByte === 0xc6) {\n // bin 32\n var size = this.lookU32();\n object = this.decodeBinary(size, 4);\n }\n else if (headByte === 0xd4) {\n // fixext 1\n object = this.decodeExtension(1, 0);\n }\n else if (headByte === 0xd5) {\n // fixext 2\n object = this.decodeExtension(2, 0);\n }\n else if (headByte === 0xd6) {\n // fixext 4\n object = this.decodeExtension(4, 0);\n }\n else if (headByte === 0xd7) {\n // fixext 8\n object = this.decodeExtension(8, 0);\n }\n else if (headByte === 0xd8) {\n // fixext 16\n object = this.decodeExtension(16, 0);\n }\n else if (headByte === 0xc7) {\n // ext 8\n var size = this.lookU8();\n object = this.decodeExtension(size, 1);\n }\n else if (headByte === 0xc8) {\n // ext 16\n var size = this.lookU16();\n object = this.decodeExtension(size, 2);\n }\n else if (headByte === 0xc9) {\n // ext 32\n var size = this.lookU32();\n object = this.decodeExtension(size, 4);\n }\n else {\n throw new DecodeError(\"Unrecognized type byte: \" + prettyByte(headByte));\n }\n this.complete();\n var stack = this.stack;\n while (stack.length > 0) {\n // arrays and maps\n var state = stack[stack.length - 1];\n if (state.type === 0 /* ARRAY */) {\n state.array[state.position] = object;\n state.position++;\n if (state.position === state.size) {\n stack.pop();\n object = state.array;\n }\n else {\n continue DECODE;\n }\n }\n else if (state.type === 1 /* MAP_KEY */) {\n if (!isValidMapKeyType(object)) {\n throw new DecodeError(\"The type of key must be string or number but \" + typeof object);\n }\n if (object === \"__proto__\") {\n throw new DecodeError(\"The key __proto__ is not allowed\");\n }\n state.key = object;\n state.type = 2 /* MAP_VALUE */;\n continue DECODE;\n }\n else {\n // it must be `state.type === State.MAP_VALUE` here\n state.map[state.key] = object;\n state.readCount++;\n if (state.readCount === state.size) {\n stack.pop();\n object = state.map;\n }\n else {\n state.key = null;\n state.type = 1 /* MAP_KEY */;\n continue DECODE;\n }\n }\n }\n return object;\n }\n };\n Decoder.prototype.readHeadByte = function () {\n if (this.headByte === HEAD_BYTE_REQUIRED) {\n this.headByte = this.readU8();\n // console.log(\"headByte\", prettyByte(this.headByte));\n }\n return this.headByte;\n };\n Decoder.prototype.complete = function () {\n this.headByte = HEAD_BYTE_REQUIRED;\n };\n Decoder.prototype.readArraySize = function () {\n var headByte = this.readHeadByte();\n switch (headByte) {\n case 0xdc:\n return this.readU16();\n case 0xdd:\n return this.readU32();\n default: {\n if (headByte < 0xa0) {\n return headByte - 0x90;\n }\n else {\n throw new DecodeError(\"Unrecognized array type byte: \" + prettyByte(headByte));\n }\n }\n }\n };\n Decoder.prototype.pushMapState = function (size) {\n if (size > this.maxMapLength) {\n throw new DecodeError(\"Max length exceeded: map length (\" + size + \") > maxMapLengthLength (\" + this.maxMapLength + \")\");\n }\n this.stack.push({\n type: 1 /* MAP_KEY */,\n size: size,\n key: null,\n readCount: 0,\n map: {},\n });\n };\n Decoder.prototype.pushArrayState = function (size) {\n if (size > this.maxArrayLength) {\n throw new DecodeError(\"Max length exceeded: array length (\" + size + \") > maxArrayLength (\" + this.maxArrayLength + \")\");\n }\n this.stack.push({\n type: 0 /* ARRAY */,\n size: size,\n array: new Array(size),\n position: 0,\n });\n };\n Decoder.prototype.decodeUtf8String = function (byteLength, headerOffset) {\n var _a;\n if (byteLength > this.maxStrLength) {\n throw new DecodeError(\"Max length exceeded: UTF-8 byte length (\" + byteLength + \") > maxStrLength (\" + this.maxStrLength + \")\");\n }\n if (this.bytes.byteLength < this.pos + headerOffset + byteLength) {\n throw MORE_DATA;\n }\n var offset = this.pos + headerOffset;\n var object;\n if (this.stateIsMapKey() && ((_a = this.keyDecoder) === null || _a === void 0 ? void 0 : _a.canBeCached(byteLength))) {\n object = this.keyDecoder.decode(this.bytes, offset, byteLength);\n }\n else if (byteLength > TEXT_DECODER_THRESHOLD) {\n object = utf8DecodeTD(this.bytes, offset, byteLength);\n }\n else {\n object = utf8DecodeJs(this.bytes, offset, byteLength);\n }\n this.pos += headerOffset + byteLength;\n return object;\n };\n Decoder.prototype.stateIsMapKey = function () {\n if (this.stack.length > 0) {\n var state = this.stack[this.stack.length - 1];\n return state.type === 1 /* MAP_KEY */;\n }\n return false;\n };\n Decoder.prototype.decodeBinary = function (byteLength, headOffset) {\n if (byteLength > this.maxBinLength) {\n throw new DecodeError(\"Max length exceeded: bin length (\" + byteLength + \") > maxBinLength (\" + this.maxBinLength + \")\");\n }\n if (!this.hasRemaining(byteLength + headOffset)) {\n throw MORE_DATA;\n }\n var offset = this.pos + headOffset;\n var object = this.bytes.subarray(offset, offset + byteLength);\n this.pos += headOffset + byteLength;\n return object;\n };\n Decoder.prototype.decodeExtension = function (size, headOffset) {\n if (size > this.maxExtLength) {\n throw new DecodeError(\"Max length exceeded: ext length (\" + size + \") > maxExtLength (\" + this.maxExtLength + \")\");\n }\n var extType = this.view.getInt8(this.pos + headOffset);\n var data = this.decodeBinary(size, headOffset + 1 /* extType */);\n return this.extensionCodec.decode(data, extType, this.context);\n };\n Decoder.prototype.lookU8 = function () {\n return this.view.getUint8(this.pos);\n };\n Decoder.prototype.lookU16 = function () {\n return this.view.getUint16(this.pos);\n };\n Decoder.prototype.lookU32 = function () {\n return this.view.getUint32(this.pos);\n };\n Decoder.prototype.readU8 = function () {\n var value = this.view.getUint8(this.pos);\n this.pos++;\n return value;\n };\n Decoder.prototype.readI8 = function () {\n var value = this.view.getInt8(this.pos);\n this.pos++;\n return value;\n };\n Decoder.prototype.readU16 = function () {\n var value = this.view.getUint16(this.pos);\n this.pos += 2;\n return value;\n };\n Decoder.prototype.readI16 = function () {\n var value = this.view.getInt16(this.pos);\n this.pos += 2;\n return value;\n };\n Decoder.prototype.readU32 = function () {\n var value = this.view.getUint32(this.pos);\n this.pos += 4;\n return value;\n };\n Decoder.prototype.readI32 = function () {\n var value = this.view.getInt32(this.pos);\n this.pos += 4;\n return value;\n };\n Decoder.prototype.readU64 = function () {\n var value = getUint64(this.view, this.pos);\n this.pos += 8;\n return value;\n };\n Decoder.prototype.readI64 = function () {\n var value = getInt64(this.view, this.pos);\n this.pos += 8;\n return value;\n };\n Decoder.prototype.readF32 = function () {\n var value = this.view.getFloat32(this.pos);\n this.pos += 4;\n return value;\n };\n Decoder.prototype.readF64 = function () {\n var value = this.view.getFloat64(this.pos);\n this.pos += 8;\n return value;\n };\n return Decoder;\n}());\nexport { Decoder };\n//# sourceMappingURL=Decoder.mjs.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\r\n// Not exported from index.\r\n/** @private */\r\nexport class BinaryMessageFormat {\r\n\r\n // The length prefix of binary messages is encoded as VarInt. Read the comment in\r\n // the BinaryMessageParser.TryParseMessage for details.\r\n\r\n public static write(output: Uint8Array): ArrayBuffer {\r\n let size = output.byteLength || output.length;\r\n const lenBuffer = [];\r\n do {\r\n let sizePart = size & 0x7f;\r\n size = size >> 7;\r\n if (size > 0) {\r\n sizePart |= 0x80;\r\n }\r\n lenBuffer.push(sizePart);\r\n }\r\n while (size > 0);\r\n\r\n size = output.byteLength || output.length;\r\n\r\n const buffer = new Uint8Array(lenBuffer.length + size);\r\n buffer.set(lenBuffer, 0);\r\n buffer.set(output, lenBuffer.length);\r\n return buffer.buffer;\r\n }\r\n\r\n public static parse(input: ArrayBuffer): Uint8Array[] {\r\n const result: Uint8Array[] = [];\r\n const uint8Array = new Uint8Array(input);\r\n const maxLengthPrefixSize = 5;\r\n const numBitsToShift = [0, 7, 14, 21, 28 ];\r\n\r\n for (let offset = 0; offset < input.byteLength;) {\r\n let numBytes = 0;\r\n let size = 0;\r\n let byteRead;\r\n do {\r\n byteRead = uint8Array[offset + numBytes];\r\n size = size | ((byteRead & 0x7f) << (numBitsToShift[numBytes]));\r\n numBytes++;\r\n }\r\n while (numBytes < Math.min(maxLengthPrefixSize, input.byteLength - offset) && (byteRead & 0x80) !== 0);\r\n\r\n if ((byteRead & 0x80) !== 0 && numBytes < maxLengthPrefixSize) {\r\n throw new Error(\"Cannot read message size.\");\r\n }\r\n\r\n if (numBytes === maxLengthPrefixSize && byteRead > 7) {\r\n throw new Error(\"Messages bigger than 2GB are not supported.\");\r\n }\r\n\r\n if (uint8Array.byteLength >= (offset + numBytes + size)) {\r\n // IE does not support .slice() so use subarray\r\n result.push(uint8Array.slice\r\n ? uint8Array.slice(offset + numBytes, offset + numBytes + size)\r\n : uint8Array.subarray(offset + numBytes, offset + numBytes + size));\r\n } else {\r\n throw new Error(\"Incomplete message.\");\r\n }\r\n\r\n offset = offset + numBytes + size;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","// 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\r\nimport { Encoder, Decoder } from \"@msgpack/msgpack\";\r\n\r\nimport { MessagePackOptions } from \"./MessagePackOptions\";\r\n\r\nimport {\r\n CancelInvocationMessage, CompletionMessage, HubMessage, IHubProtocol, ILogger, InvocationMessage,\r\n LogLevel, MessageHeaders, MessageType, NullLogger, StreamInvocationMessage, StreamItemMessage, TransferFormat,\r\n} from \"@microsoft/signalr\";\r\n\r\nimport { BinaryMessageFormat } from \"./BinaryMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n\r\n// TypeDoc's @inheritDoc and @link don't work across modules :(\r\n\r\n// constant encoding of the ping message\r\n// see: https://github.com/aspnet/SignalR/blob/dev/specs/HubProtocol.md#ping-message-encoding-1\r\n// Don't use Uint8Array.from as IE does not support it\r\nconst SERIALIZED_PING_MESSAGE: Uint8Array = new Uint8Array([0x91, MessageType.Ping]);\r\n\r\n/** Implements the MessagePack Hub Protocol */\r\nexport class MessagePackHubProtocol implements IHubProtocol {\r\n /** The name of the protocol. This is used by SignalR to resolve the protocol between the client and server. */\r\n public readonly name: string = \"messagepack\";\r\n /** The version of the protocol. */\r\n public readonly version: number = 1;\r\n /** The TransferFormat of the protocol. */\r\n public readonly transferFormat: TransferFormat = TransferFormat.Binary;\r\n\r\n private readonly _errorResult = 1;\r\n private readonly _voidResult = 2;\r\n private readonly _nonVoidResult = 3;\r\n\r\n private readonly _encoder: Encoder;\r\n private readonly _decoder: Decoder;\r\n\r\n /**\r\n *\r\n * @param messagePackOptions MessagePack options passed to @msgpack/msgpack\r\n */\r\n constructor(messagePackOptions?: MessagePackOptions) {\r\n messagePackOptions = messagePackOptions || {};\r\n this._encoder = new Encoder(\r\n messagePackOptions.extensionCodec,\r\n messagePackOptions.context,\r\n messagePackOptions.maxDepth,\r\n messagePackOptions.initialBufferSize,\r\n messagePackOptions.sortKeys,\r\n messagePackOptions.forceFloat32,\r\n messagePackOptions.ignoreUndefined,\r\n messagePackOptions.forceIntegerToFloat,\r\n );\r\n\r\n this._decoder = new Decoder(\r\n messagePackOptions.extensionCodec,\r\n messagePackOptions.context,\r\n messagePackOptions.maxStrLength,\r\n messagePackOptions.maxBinLength,\r\n messagePackOptions.maxArrayLength,\r\n messagePackOptions.maxMapLength,\r\n messagePackOptions.maxExtLength,\r\n );\r\n }\r\n\r\n /** Creates an array of HubMessage objects from the specified serialized representation.\r\n *\r\n * @param {ArrayBuffer} input An ArrayBuffer 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 public parseMessages(input: ArrayBuffer, logger: ILogger): HubMessage[] {\r\n // The interface does allow \"string\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (!(isArrayBuffer(input))) {\r\n throw new Error(\"Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.\");\r\n }\r\n\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n\r\n const messages = BinaryMessageFormat.parse(input);\r\n\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = this._parseMessage(message, logger);\r\n // Can be null for an unknown message. Unknown message is logged in parseMessage\r\n if (parsedMessage) {\r\n hubMessages.push(parsedMessage);\r\n }\r\n }\r\n\r\n return hubMessages;\r\n }\r\n\r\n /** Writes the specified HubMessage to an ArrayBuffer and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {ArrayBuffer} An ArrayBuffer containing the serialized representation of the message.\r\n */\r\n public writeMessage(message: HubMessage): ArrayBuffer {\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n return this._writeInvocation(message as InvocationMessage);\r\n case MessageType.StreamInvocation:\r\n return this._writeStreamInvocation(message as StreamInvocationMessage);\r\n case MessageType.StreamItem:\r\n return this._writeStreamItem(message as StreamItemMessage);\r\n case MessageType.Completion:\r\n return this._writeCompletion(message as CompletionMessage);\r\n case MessageType.Ping:\r\n return BinaryMessageFormat.write(SERIALIZED_PING_MESSAGE);\r\n case MessageType.CancelInvocation:\r\n return this._writeCancelInvocation(message as CancelInvocationMessage);\r\n default:\r\n throw new Error(\"Invalid message type.\");\r\n }\r\n }\r\n\r\n private _parseMessage(input: Uint8Array, logger: ILogger): HubMessage | null {\r\n if (input.length === 0) {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n\r\n const properties = this._decoder.decode(input) as any;\r\n if (properties.length === 0 || !(properties instanceof Array)) {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n\r\n const messageType = properties[0] as MessageType;\r\n\r\n switch (messageType) {\r\n case MessageType.Invocation:\r\n return this._createInvocationMessage(this._readHeaders(properties), properties);\r\n case MessageType.StreamItem:\r\n return this._createStreamItemMessage(this._readHeaders(properties), properties);\r\n case MessageType.Completion:\r\n return this._createCompletionMessage(this._readHeaders(properties), properties);\r\n case MessageType.Ping:\r\n return this._createPingMessage(properties);\r\n case MessageType.Close:\r\n return this._createCloseMessage(properties);\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 '\" + messageType + \"' ignored.\");\r\n return null;\r\n }\r\n }\r\n\r\n private _createCloseMessage(properties: any[]): HubMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 2) {\r\n throw new Error(\"Invalid payload for Close message.\");\r\n }\r\n\r\n return {\r\n // Close messages have no headers.\r\n allowReconnect: properties.length >= 3 ? properties[2] : undefined,\r\n error: properties[1],\r\n type: MessageType.Close,\r\n } as HubMessage;\r\n }\r\n\r\n private _createPingMessage(properties: any[]): HubMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 1) {\r\n throw new Error(\"Invalid payload for Ping message.\");\r\n }\r\n\r\n return {\r\n // Ping messages have no headers.\r\n type: MessageType.Ping,\r\n } as HubMessage;\r\n }\r\n\r\n private _createInvocationMessage(headers: MessageHeaders, properties: any[]): InvocationMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 5) {\r\n throw new Error(\"Invalid payload for Invocation message.\");\r\n }\r\n\r\n const invocationId = properties[2] as string;\r\n if (invocationId) {\r\n return {\r\n arguments: properties[4],\r\n headers,\r\n invocationId,\r\n streamIds: [],\r\n target: properties[3] as string,\r\n type: MessageType.Invocation,\r\n };\r\n } else {\r\n return {\r\n arguments: properties[4],\r\n headers,\r\n streamIds: [],\r\n target: properties[3],\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n\r\n }\r\n\r\n private _createStreamItemMessage(headers: MessageHeaders, properties: any[]): StreamItemMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 4) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n\r\n return {\r\n headers,\r\n invocationId: properties[2],\r\n item: properties[3],\r\n type: MessageType.StreamItem,\r\n } as StreamItemMessage;\r\n }\r\n\r\n private _createCompletionMessage(headers: MessageHeaders, properties: any[]): CompletionMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 4) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n\r\n const resultKind = properties[3];\r\n\r\n if (resultKind !== this._voidResult && properties.length < 5) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n\r\n let error: string | undefined;\r\n let result: any;\r\n\r\n switch (resultKind) {\r\n case this._errorResult:\r\n error = properties[4];\r\n break;\r\n case this._nonVoidResult:\r\n result = properties[4];\r\n break;\r\n }\r\n\r\n const completionMessage: CompletionMessage = {\r\n error,\r\n headers,\r\n invocationId: properties[2],\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n\r\n return completionMessage;\r\n }\r\n\r\n private _writeInvocation(invocationMessage: InvocationMessage): ArrayBuffer {\r\n let payload: any;\r\n if (invocationMessage.streamIds) {\r\n payload = this._encoder.encode([MessageType.Invocation, invocationMessage.headers || {}, invocationMessage.invocationId || null,\r\n invocationMessage.target, invocationMessage.arguments, invocationMessage.streamIds]);\r\n } else {\r\n payload = this._encoder.encode([MessageType.Invocation, invocationMessage.headers || {}, invocationMessage.invocationId || null,\r\n invocationMessage.target, invocationMessage.arguments]);\r\n }\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private _writeStreamInvocation(streamInvocationMessage: StreamInvocationMessage): ArrayBuffer {\r\n let payload: any;\r\n if (streamInvocationMessage.streamIds) {\r\n payload = this._encoder.encode([MessageType.StreamInvocation, streamInvocationMessage.headers || {}, streamInvocationMessage.invocationId,\r\n streamInvocationMessage.target, streamInvocationMessage.arguments, streamInvocationMessage.streamIds]);\r\n } else {\r\n payload = this._encoder.encode([MessageType.StreamInvocation, streamInvocationMessage.headers || {}, streamInvocationMessage.invocationId,\r\n streamInvocationMessage.target, streamInvocationMessage.arguments]);\r\n }\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private _writeStreamItem(streamItemMessage: StreamItemMessage): ArrayBuffer {\r\n const payload = this._encoder.encode([MessageType.StreamItem, streamItemMessage.headers || {}, streamItemMessage.invocationId,\r\n streamItemMessage.item]);\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private _writeCompletion(completionMessage: CompletionMessage): ArrayBuffer {\r\n const resultKind = completionMessage.error ? this._errorResult : completionMessage.result ? this._nonVoidResult : this._voidResult;\r\n\r\n let payload: any;\r\n switch (resultKind) {\r\n case this._errorResult:\r\n payload = this._encoder.encode([MessageType.Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind, completionMessage.error]);\r\n break;\r\n case this._voidResult:\r\n payload = this._encoder.encode([MessageType.Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind]);\r\n break;\r\n case this._nonVoidResult:\r\n payload = this._encoder.encode([MessageType.Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind, completionMessage.result]);\r\n break;\r\n }\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private _writeCancelInvocation(cancelInvocationMessage: CancelInvocationMessage): ArrayBuffer {\r\n const payload = this._encoder.encode([MessageType.CancelInvocation, cancelInvocationMessage.headers || {}, cancelInvocationMessage.invocationId]);\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private _readHeaders(properties: any): MessageHeaders {\r\n const headers: MessageHeaders = properties[1] as MessageHeaders;\r\n if (typeof headers !== \"object\") {\r\n throw new Error(\"Invalid headers.\");\r\n }\r\n return headers;\r\n }\r\n}\r\n","// 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\r\n// Copied from signalr/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val: any): val is ArrayBuffer {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n","// 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\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR Message Pack protocol library. */\r\nexport const VERSION = \"0.0.0-DEV_BUILD\";\r\n\r\nexport { MessagePackHubProtocol } from \"./MessagePackHubProtocol\";\r\n\r\nexport { MessagePackOptions } from \"./MessagePackOptions\";\r\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.min.js b/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.min.js
index 0ffdc032..2fef5995 100644
--- a/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.min.js
+++ b/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.min.js
@@ -1,8 +1,2 @@
-(function webpackUniversalModuleDefinition(root,factory){if(typeof exports==="object"&&typeof module==="object")module.exports=factory(require("msgpack5"),require("signalR"));else if(typeof define==="function"&&define.amd)define(["msgpack5","signalR"],factory);else if(typeof exports==="object")exports["msgpack"]=factory(require("msgpack5"),require("signalR"));else root["signalR"]=root["signalR"]||{},root["signalR"]["protocols"]=root["signalR"]["protocols"]||{},root["signalR"]["protocols"]["msgpack"]=factory(root["msgpack5"],root["signalR"])})(window,function(__WEBPACK_EXTERNAL_MODULE__6__,__WEBPACK_EXTERNAL_MODULE__7__){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{enumerable:true,get:getter})}};__webpack_require__.r=function(exports){if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(exports,"__esModule",{value:true})};__webpack_require__.t=function(value,mode){if(mode&1)value=__webpack_require__(value);if(mode&8)return value;if(mode&4&&typeof value==="object"&&value&&value.__esModule)return value;var ns=Object.create(null);__webpack_require__.r(ns);Object.defineProperty(ns,"default",{enumerable:true,value:value});if(mode&2&&typeof value!="string")for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key]}.bind(null,key));return ns};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module["default"]}:function getModuleExports(){return module};__webpack_require__.d(getter,"a",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=0)}([function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);var _index__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(1);__webpack_require__.d(__webpack_exports__,"VERSION",function(){return _index__WEBPACK_IMPORTED_MODULE_0__["VERSION"]});__webpack_require__.d(__webpack_exports__,"MessagePackHubProtocol",function(){return _index__WEBPACK_IMPORTED_MODULE_0__["MessagePackHubProtocol"]})},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"VERSION",function(){return VERSION});var _MessagePackHubProtocol__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(2);__webpack_require__.d(__webpack_exports__,"MessagePackHubProtocol",function(){return _MessagePackHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessagePackHubProtocol"]});var VERSION="5.0.7"},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"MessagePackHubProtocol",function(){return MessagePackHubProtocol});var buffer__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(3);var buffer__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(buffer__WEBPACK_IMPORTED_MODULE_0__);var msgpack5__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(6);var msgpack5__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(msgpack5__WEBPACK_IMPORTED_MODULE_1__);var _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(7);var _microsoft_signalr__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__);var _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(8);var _Utils__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(9);var __assign=undefined&&undefined.__assign||Object.assign||function(t){for(var s,i=1,n=arguments.length;i=3?properties[2]:undefined,error:properties[1],type:_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Close}};MessagePackHubProtocol.prototype.createPingMessage=function(properties){if(properties.length<1){throw new Error("Invalid payload for Ping message.")}return{type:_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Ping}};MessagePackHubProtocol.prototype.createInvocationMessage=function(headers,properties){if(properties.length<5){throw new Error("Invalid payload for Invocation message.")}var invocationId=properties[2];if(invocationId){return{arguments:properties[4],headers:headers,invocationId:invocationId,streamIds:[],target:properties[3],type:_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Invocation}}else{return{arguments:properties[4],headers:headers,streamIds:[],target:properties[3],type:_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Invocation}}};MessagePackHubProtocol.prototype.createStreamItemMessage=function(headers,properties){if(properties.length<4){throw new Error("Invalid payload for StreamItem message.")}return{headers:headers,invocationId:properties[2],item:properties[3],type:_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].StreamItem}};MessagePackHubProtocol.prototype.createCompletionMessage=function(headers,properties){if(properties.length<4){throw new Error("Invalid payload for Completion message.")}var resultKind=properties[3];if(resultKind!==this.voidResult&&properties.length<5){throw new Error("Invalid payload for Completion message.")}var error;var result;switch(resultKind){case this.errorResult:error=properties[4];break;case this.nonVoidResult:result=properties[4];break}var completionMessage={error:error,headers:headers,invocationId:properties[2],result:result,type:_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Completion};return completionMessage};MessagePackHubProtocol.prototype.writeInvocation=function(invocationMessage){var msgpack=msgpack5__WEBPACK_IMPORTED_MODULE_1__(this.messagePackOptions);var payload;if(invocationMessage.streamIds){payload=msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Invocation,invocationMessage.headers||{},invocationMessage.invocationId||null,invocationMessage.target,invocationMessage.arguments,invocationMessage.streamIds])}else{payload=msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Invocation,invocationMessage.headers||{},invocationMessage.invocationId||null,invocationMessage.target,invocationMessage.arguments])}return _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].write(payload.slice())};MessagePackHubProtocol.prototype.writeStreamInvocation=function(streamInvocationMessage){var msgpack=msgpack5__WEBPACK_IMPORTED_MODULE_1__(this.messagePackOptions);var payload;if(streamInvocationMessage.streamIds){payload=msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].StreamInvocation,streamInvocationMessage.headers||{},streamInvocationMessage.invocationId,streamInvocationMessage.target,streamInvocationMessage.arguments,streamInvocationMessage.streamIds])}else{payload=msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].StreamInvocation,streamInvocationMessage.headers||{},streamInvocationMessage.invocationId,streamInvocationMessage.target,streamInvocationMessage.arguments])}return _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].write(payload.slice())};MessagePackHubProtocol.prototype.writeStreamItem=function(streamItemMessage){var msgpack=msgpack5__WEBPACK_IMPORTED_MODULE_1__(this.messagePackOptions);var payload=msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].StreamItem,streamItemMessage.headers||{},streamItemMessage.invocationId,streamItemMessage.item]);return _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].write(payload.slice())};MessagePackHubProtocol.prototype.writeCompletion=function(completionMessage){var msgpack=msgpack5__WEBPACK_IMPORTED_MODULE_1__(this.messagePackOptions);var resultKind=completionMessage.error?this.errorResult:completionMessage.result?this.nonVoidResult:this.voidResult;var payload;switch(resultKind){case this.errorResult:payload=msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Completion,completionMessage.headers||{},completionMessage.invocationId,resultKind,completionMessage.error]);break;case this.voidResult:payload=msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Completion,completionMessage.headers||{},completionMessage.invocationId,resultKind]);break;case this.nonVoidResult:payload=msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].Completion,completionMessage.headers||{},completionMessage.invocationId,resultKind,completionMessage.result]);break}return _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].write(payload.slice())};MessagePackHubProtocol.prototype.writeCancelInvocation=function(cancelInvocationMessage){var msgpack=msgpack5__WEBPACK_IMPORTED_MODULE_1__(this.messagePackOptions);var payload=msgpack.encode([_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__["MessageType"].CancelInvocation,cancelInvocationMessage.headers||{},cancelInvocationMessage.invocationId]);return _BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__["BinaryMessageFormat"].write(payload.slice())};MessagePackHubProtocol.prototype.readHeaders=function(properties){var headers=properties[1];if(typeof headers!=="object"){throw new Error("Invalid headers.")}return headers};return MessagePackHubProtocol}()},function(module,exports,__webpack_require__){"use strict";
-/*!
- * The buffer module from node.js, for the browser.
- *
- * @author Feross Aboukhadijeh
- * @license MIT
- */var base64=__webpack_require__(4);var ieee754=__webpack_require__(5);exports.Buffer=Buffer;exports.SlowBuffer=SlowBuffer;exports.INSPECT_MAX_BYTES=50;var K_MAX_LENGTH=2147483647;exports.kMaxLength=K_MAX_LENGTH;Buffer.TYPED_ARRAY_SUPPORT=typedArraySupport();if(!Buffer.TYPED_ARRAY_SUPPORT&&typeof console!=="undefined"&&typeof console.error==="function"){console.error("This browser lacks typed array (Uint8Array) support which is required by "+"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.")}function typedArraySupport(){try{var arr=new Uint8Array(1);arr.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}};return arr.foo()===42}catch(e){return false}}function createBuffer(length){if(length>K_MAX_LENGTH){throw new RangeError("Invalid typed array length")}var buf=new Uint8Array(length);buf.__proto__=Buffer.prototype;return buf}function Buffer(arg,encodingOrOffset,length){if(typeof arg==="number"){if(typeof encodingOrOffset==="string"){throw new Error("If encoding is specified then the first argument must be a string")}return allocUnsafe(arg)}return from(arg,encodingOrOffset,length)}if(typeof Symbol!=="undefined"&&Symbol.species&&Buffer[Symbol.species]===Buffer){Object.defineProperty(Buffer,Symbol.species,{value:null,configurable:true,enumerable:false,writable:false})}Buffer.poolSize=8192;function from(value,encodingOrOffset,length){if(typeof value==="number"){throw new TypeError('"value" argument must not be a number')}if(isArrayBuffer(value)){return fromArrayBuffer(value,encodingOrOffset,length)}if(typeof value==="string"){return fromString(value,encodingOrOffset)}return fromObject(value)}Buffer.from=function(value,encodingOrOffset,length){return from(value,encodingOrOffset,length)};Buffer.prototype.__proto__=Uint8Array.prototype;Buffer.__proto__=Uint8Array;function assertSize(size){if(typeof size!=="number"){throw new TypeError('"size" argument must be a number')}else if(size<0){throw new RangeError('"size" argument must not be negative')}}function alloc(size,fill,encoding){assertSize(size);if(size<=0){return createBuffer(size)}if(fill!==undefined){return typeof encoding==="string"?createBuffer(size).fill(fill,encoding):createBuffer(size).fill(fill)}return createBuffer(size)}Buffer.alloc=function(size,fill,encoding){return alloc(size,fill,encoding)};function allocUnsafe(size){assertSize(size);return createBuffer(size<0?0:checked(size)|0)}Buffer.allocUnsafe=function(size){return allocUnsafe(size)};Buffer.allocUnsafeSlow=function(size){return allocUnsafe(size)};function fromString(string,encoding){if(typeof encoding!=="string"||encoding===""){encoding="utf8"}if(!Buffer.isEncoding(encoding)){throw new TypeError('"encoding" must be a valid string encoding')}var length=byteLength(string,encoding)|0;var buf=createBuffer(length);var actual=buf.write(string,encoding);if(actual!==length){buf=buf.slice(0,actual)}return buf}function fromArrayLike(array){var length=array.length<0?0:checked(array.length)|0;var buf=createBuffer(length);for(var i=0;i=K_MAX_LENGTH){throw new RangeError("Attempt to allocate Buffer larger than maximum "+"size: 0x"+K_MAX_LENGTH.toString(16)+" bytes")}return length|0}function SlowBuffer(length){if(+length!=length){length=0}return Buffer.alloc(+length)}Buffer.isBuffer=function isBuffer(b){return b!=null&&b._isBuffer===true};Buffer.compare=function compare(a,b){if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError("Arguments must be Buffers")}if(a===b)return 0;var x=a.length;var y=b.length;for(var i=0,len=Math.min(x,y);i>>1;case"base64":return base64ToBytes(string).length;default:if(loweredCase)return utf8ToBytes(string).length;encoding=(""+encoding).toLowerCase();loweredCase=true}}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){var loweredCase=false;if(start===undefined||start<0){start=0}if(start>this.length){return""}if(end===undefined||end>this.length){end=this.length}if(end<=0){return""}end>>>=0;start>>>=0;if(end<=start){return""}if(!encoding)encoding="utf8";while(true){switch(encoding){case"hex":return hexSlice(this,start,end);case"utf8":case"utf-8":return utf8Slice(this,start,end);case"ascii":return asciiSlice(this,start,end);case"latin1":case"binary":return latin1Slice(this,start,end);case"base64":return base64Slice(this,start,end);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(encoding+"").toLowerCase();loweredCase=true}}}Buffer.prototype._isBuffer=true;function swap(b,n,m){var i=b[n];b[n]=b[m];b[m]=i}Buffer.prototype.swap16=function swap16(){var len=this.length;if(len%2!==0){throw new RangeError("Buffer size must be a multiple of 16-bits")}for(var i=0;i0){str=this.toString("hex",0,max).match(/.{2}/g).join(" ");if(this.length>max)str+=" ... "}return""};Buffer.prototype.compare=function compare(target,start,end,thisStart,thisEnd){if(!Buffer.isBuffer(target)){throw new TypeError("Argument must be a Buffer")}if(start===undefined){start=0}if(end===undefined){end=target?target.length:0}if(thisStart===undefined){thisStart=0}if(thisEnd===undefined){thisEnd=this.length}if(start<0||end>target.length||thisStart<0||thisEnd>this.length){throw new RangeError("out of range index")}if(thisStart>=thisEnd&&start>=end){return 0}if(thisStart>=thisEnd){return-1}if(start>=end){return 1}start>>>=0;end>>>=0;thisStart>>>=0;thisEnd>>>=0;if(this===target)return 0;var x=thisEnd-thisStart;var y=end-start;var len=Math.min(x,y);var thisCopy=this.slice(thisStart,thisEnd);var targetCopy=target.slice(start,end);for(var i=0;i2147483647){byteOffset=2147483647}else if(byteOffset<-2147483648){byteOffset=-2147483648}byteOffset=+byteOffset;if(numberIsNaN(byteOffset)){byteOffset=dir?0:buffer.length-1}if(byteOffset<0)byteOffset=buffer.length+byteOffset;if(byteOffset>=buffer.length){if(dir)return-1;else byteOffset=buffer.length-1}else if(byteOffset<0){if(dir)byteOffset=0;else return-1}if(typeof val==="string"){val=Buffer.from(val,encoding)}if(Buffer.isBuffer(val)){if(val.length===0){return-1}return arrayIndexOf(buffer,val,byteOffset,encoding,dir)}else if(typeof val==="number"){val=val&255;if(typeof Uint8Array.prototype.indexOf==="function"){if(dir){return Uint8Array.prototype.indexOf.call(buffer,val,byteOffset)}else{return Uint8Array.prototype.lastIndexOf.call(buffer,val,byteOffset)}}return arrayIndexOf(buffer,[val],byteOffset,encoding,dir)}throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(arr,val,byteOffset,encoding,dir){var indexSize=1;var arrLength=arr.length;var valLength=val.length;if(encoding!==undefined){encoding=String(encoding).toLowerCase();if(encoding==="ucs2"||encoding==="ucs-2"||encoding==="utf16le"||encoding==="utf-16le"){if(arr.length<2||val.length<2){return-1}indexSize=2;arrLength/=2;valLength/=2;byteOffset/=2}}function read(buf,i){if(indexSize===1){return buf[i]}else{return buf.readUInt16BE(i*indexSize)}}var i;if(dir){var foundIndex=-1;for(i=byteOffset;iarrLength)byteOffset=arrLength-valLength;for(i=byteOffset;i>=0;i--){var found=true;for(var j=0;jremaining){length=remaining}}var strLen=string.length;if(strLen%2!==0)throw new TypeError("Invalid hex string");if(length>strLen/2){length=strLen/2}for(var i=0;i>>0;if(isFinite(length)){length=length>>>0;if(encoding===undefined)encoding="utf8"}else{encoding=length;length=undefined}}else{throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported")}var remaining=this.length-offset;if(length===undefined||length>remaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError("Attempt to write outside buffer bounds")}if(!encoding)encoding="utf8";var loweredCase=false;for(;;){switch(encoding){case"hex":return hexWrite(this,string,offset,length);case"utf8":case"utf-8":return utf8Write(this,string,offset,length);case"ascii":return asciiWrite(this,string,offset,length);case"latin1":case"binary":return latin1Write(this,string,offset,length);case"base64":return base64Write(this,string,offset,length);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(""+encoding).toLowerCase();loweredCase=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);var res=[];var i=start;while(i239?4:firstByte>223?3:firstByte>191?2:1;if(i+bytesPerSequence<=end){var secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<128){codePoint=firstByte}break;case 2:secondByte=buf[i+1];if((secondByte&192)===128){tempCodePoint=(firstByte&31)<<6|secondByte&63;if(tempCodePoint>127){codePoint=tempCodePoint}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&192)===128&&(thirdByte&192)===128){tempCodePoint=(firstByte&15)<<12|(secondByte&63)<<6|thirdByte&63;if(tempCodePoint>2047&&(tempCodePoint<55296||tempCodePoint>57343)){codePoint=tempCodePoint}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&192)===128&&(thirdByte&192)===128&&(fourthByte&192)===128){tempCodePoint=(firstByte&15)<<18|(secondByte&63)<<12|(thirdByte&63)<<6|fourthByte&63;if(tempCodePoint>65535&&tempCodePoint<1114112){codePoint=tempCodePoint}}}}if(codePoint===null){codePoint=65533;bytesPerSequence=1}else if(codePoint>65535){codePoint-=65536;res.push(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}res.push(codePoint);i+=bytesPerSequence}return decodeCodePointsArray(res)}var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(codePoints){var len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints)}var res="";var i=0;while(ilen)end=len;var out="";for(var i=start;ilen){start=len}if(end<0){end+=len;if(end<0)end=0}else if(end>len){end=len}if(endlength)throw new RangeError("Trying to access beyond buffer length")}Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i>>0;byteLength=byteLength>>>0;if(!noAssert){checkOffset(offset,byteLength,this.length)}var val=this[offset+--byteLength];var mul=1;while(byteLength>0&&(mul*=256)){val+=this[offset+--byteLength]*mul}return val};Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);return this[offset]};Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8};Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1]};Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*16777216};Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*16777216+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3])};Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var i=byteLength;var mul=1;var val=this[offset+--i];while(i>0&&(mul*=256)){val+=this[offset+--i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readInt8=function readInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&128))return this[offset];return(255-this[offset]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset]|this[offset+1]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset+1]|this[offset]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3]};Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,false,52,8)};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError('"buffer" argument must be a Buffer instance');if(value>max||valuebuf.length)throw new RangeError("Index out of range")}Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}var mul=1;var i=0;this[offset]=value&255;while(++i>>0;byteLength=byteLength>>>0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}var i=byteLength-1;var mul=1;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,255,0);this[offset]=value&255;return offset+1};Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,65535,0);this[offset]=value&255;this[offset+1]=value>>>8;return offset+2};Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,65535,0);this[offset]=value>>>8;this[offset+1]=value&255;return offset+2};Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&255;return offset+4};Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255;return offset+4};Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=0;var mul=1;var sub=0;this[offset]=value&255;while(++i>0)-sub&255}return offset+byteLength};Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=byteLength-1;var mul=1;var sub=0;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){if(value<0&&sub===0&&this[offset+i+1]!==0){sub=1}this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,127,-128);if(value<0)value=255+value+1;this[offset]=value&255;return offset+1};Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);this[offset]=value&255;this[offset+1]=value>>>8;return offset+2};Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);this[offset]=value>>>8;this[offset+1]=value&255;return offset+2};Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);this[offset]=value&255;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24;return offset+4};Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(value<0)value=4294967295+value+1;this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255;return offset+4};function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError("Index out of range");if(offset<0)throw new RangeError("Index out of range")}function writeFloat(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,4,34028234663852886e22,-34028234663852886e22)}ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4}Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert)};Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert)};function writeDouble(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,8,17976931348623157e292,-17976931348623157e292)}ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert)};Buffer.prototype.copy=function copy(target,targetStart,start,end){if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end=this.length)throw new RangeError("sourceStart out of bounds");if(end<0)throw new RangeError("sourceEnd out of bounds");if(end>this.length)end=this.length;if(target.length-targetStart=0;--i){target[i+targetStart]=this[i+start]}}else if(len<1e3){for(i=0;i>>0;end=end===undefined?this.length:end>>>0;if(!val)val=0;var i;if(typeof val==="number"){for(i=start;i55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){if((units-=3)>-1)bytes.push(239,191,189);continue}else if(i+1===length){if((units-=3)>-1)bytes.push(239,191,189);continue}leadSurrogate=codePoint;continue}if(codePoint<56320){if((units-=3)>-1)bytes.push(239,191,189);leadSurrogate=codePoint;continue}codePoint=(leadSurrogate-55296<<10|codePoint-56320)+65536}else if(leadSurrogate){if((units-=3)>-1)bytes.push(239,191,189)}leadSurrogate=null;if(codePoint<128){if((units-=1)<0)break;bytes.push(codePoint)}else if(codePoint<2048){if((units-=2)<0)break;bytes.push(codePoint>>6|192,codePoint&63|128)}else if(codePoint<65536){if((units-=3)<0)break;bytes.push(codePoint>>12|224,codePoint>>6&63|128,codePoint&63|128)}else if(codePoint<1114112){if((units-=4)<0)break;bytes.push(codePoint>>18|240,codePoint>>12&63|128,codePoint>>6&63|128,codePoint&63|128)}else{throw new Error("Invalid code point")}}return bytes}function asciiToBytes(str){var byteArray=[];for(var i=0;i>8;lo=c%256;byteArray.push(lo);byteArray.push(hi)}return byteArray}function base64ToBytes(str){return base64.toByteArray(base64clean(str))}function blitBuffer(src,dst,offset,length){for(var i=0;i=dst.length||i>=src.length)break;dst[i+offset]=src[i]}return i}function isArrayBuffer(obj){return obj instanceof ArrayBuffer||obj!=null&&obj.constructor!=null&&obj.constructor.name==="ArrayBuffer"&&typeof obj.byteLength==="number"}function isArrayBufferView(obj){return typeof ArrayBuffer.isView==="function"&&ArrayBuffer.isView(obj)}function numberIsNaN(obj){return obj!==obj}},function(module,exports,__webpack_require__){"use strict";exports.byteLength=byteLength;exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=="undefined"?Uint8Array:Array;var code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i0){throw new Error("Invalid string. Length must be a multiple of 4")}return b64[len-2]==="="?2:b64[len-1]==="="?1:0}function byteLength(b64){return b64.length*3/4-placeHoldersCount(b64)}function toByteArray(b64){var i,l,tmp,placeHolders,arr;var len=b64.length;placeHolders=placeHoldersCount(b64);arr=new Arr(len*3/4-placeHolders);l=placeHolders>0?len-4:len;var L=0;for(i=0;i>16&255;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}if(placeHolders===2){tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4;arr[L++]=tmp&255}else if(placeHolders===1){tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}return arr}function tripletToBase64(num){return lookup[num>>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[num&63]}function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=start;ilen2?len2:i+maxChunkLength))}if(extraBytes===1){tmp=uint8[len-1];output+=lookup[tmp>>2];output+=lookup[tmp<<4&63];output+="=="}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];output+=lookup[tmp>>10];output+=lookup[tmp>>4&63];output+=lookup[tmp<<2&63];output+="="}parts.push(output);return parts.join("")}},function(module,exports){exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity}else{m=m+Math.pow(2,mLen);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2}if(e+eBias>=1){value+=rt/c}else{value+=rt*Math.pow(2,1-eBias)}if(value*c>=2){e++;c/=2}if(e+eBias>=eMax){m=0;e=eMax}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0}}for(;mLen>=8;buffer[offset+i]=m&255,i+=d,m/=256,mLen-=8){}e=e<0;buffer[offset+i]=e&255,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128}},function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__6__},function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__7__},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"BinaryMessageFormat",function(){return BinaryMessageFormat});var BinaryMessageFormat=function(){function BinaryMessageFormat(){}BinaryMessageFormat.write=function(output){var size=output.byteLength||output.length;var lenBuffer=[];do{var sizePart=size&127;size=size>>7;if(size>0){sizePart|=128}lenBuffer.push(sizePart)}while(size>0);size=output.byteLength||output.length;var buffer=new Uint8Array(lenBuffer.length+size);buffer.set(lenBuffer,0);buffer.set(output,lenBuffer.length);return buffer.buffer};BinaryMessageFormat.parse=function(input){var result=[];var uint8Array=new Uint8Array(input);var maxLengthPrefixSize=5;var numBitsToShift=[0,7,14,21,28];for(var offset=0;offset7){throw new Error("Messages bigger than 2GB are not supported.")}if(uint8Array.byteLength>=offset+numBytes+size){result.push(uint8Array.slice?uint8Array.slice(offset+numBytes,offset+numBytes+size):uint8Array.subarray(offset+numBytes,offset+numBytes+size))}else{throw new Error("Incomplete message.")}offset=offset+numBytes+size}return result};return BinaryMessageFormat}()},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"isArrayBuffer",function(){return isArrayBuffer});function isArrayBuffer(val){return val&&typeof ArrayBuffer!=="undefined"&&(val instanceof ArrayBuffer||val.constructor&&val.constructor.name==="ArrayBuffer")}}])});
+var e,t;e=self,t=function(e){return(()=>{var t=[,t=>{t.exports=e}],r={};function i(e){var n=r[e];if(void 0!==n)return n.exports;var s=r[e]={exports:{}};return t[e](s,s.exports,i),s.exports}i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"t",{value:!0})};var n={};return(()=>{i.r(n),i.d(n,{MessagePackHubProtocol:()=>_,VERSION:()=>j});var e=4294967295;function t(e,t,r){var i=Math.floor(r/4294967296),n=r;e.setUint32(t,i),e.setUint32(t+4,n)}function r(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var s=("undefined"==typeof process||"never"!==process.env.TEXT_ENCODING)&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function o(e){for(var t=e.length,r=0,i=0;i=55296&&n<=56319&&i65535&&(u-=65536,s.push(u>>>10&1023|55296),u=56320|1023&u),s.push(u)}else s.push(a);s.length>=4096&&(o+=String.fromCharCode.apply(String,s),s.length=0)}return s.length>0&&(o+=String.fromCharCode.apply(String,s)),o}var f,p=s?new TextDecoder:null,l=s?"undefined"!=typeof process&&"force"!==process.env.TEXT_DECODER?200:0:e,d=function(e,t){this.type=e,this.data=t},y=(f=function(e,t){return(f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}f(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),w=function(e){function t(r){var i=e.call(this,r)||this,n=Object.create(t.prototype);return Object.setPrototypeOf(i,n),Object.defineProperty(i,"name",{configurable:!0,enumerable:!1,value:t.name}),i}return y(t,e),t}(Error),g={type:-1,encode:function(e){var r,i,n,s;return e instanceof Date?function(e){var r,i=e.sec,n=e.nsec;if(i>=0&&n>=0&&i<=17179869183){if(0===n&&i<=4294967295){var s=new Uint8Array(4);return(r=new DataView(s.buffer)).setUint32(0,i),s}var o=i/4294967296,a=4294967295&i;return s=new Uint8Array(8),(r=new DataView(s.buffer)).setUint32(0,n<<2|3&o),r.setUint32(4,a),s}return s=new Uint8Array(12),(r=new DataView(s.buffer)).setUint32(0,n),t(r,4,i),s}((n=1e6*((r=e.getTime())-1e3*(i=Math.floor(r/1e3))),{sec:i+(s=Math.floor(n/1e9)),nsec:n-1e9*s})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var i=t.getUint32(0);return{sec:4294967296*(3&i)+t.getUint32(4),nsec:i>>>2};case 12:return{sec:r(t,4),nsec:t.getUint32(0)};default:throw new w("Unrecognized data size for timestamp (expected 4, 8, or 12): "+e.length)}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},v=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(g)}return e.prototype.register=function(e){var t=e.type,r=e.encode,i=e.decode;if(t>=0)this.encoders[t]=r,this.decoders[t]=i;else{var n=1+t;this.builtInEncoders[n]=r,this.builtInDecoders[n]=i}},e.prototype.tryToEncode=function(e,t){for(var r=0;rthis.maxDepth)throw new Error("Too deep objects in depth "+t);null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: "+e+" bytes in UTF-8");this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>h){var t=o(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),c(e,this.bytes,this.pos),this.pos+=t}else t=o(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,r){for(var i=e.length,n=r,s=0;s>6&31|192;else{if(o>=55296&&o<=56319&&s>12&15|224,t[n++]=o>>6&63|128):(t[n++]=o>>18&7|240,t[n++]=o>>12&63|128,t[n++]=o>>6&63|128)}t[n++]=63&o|128}else t[n++]=o}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var r=this.extensionCodec.tryToEncode(e,this.context);if(null!=r)this.encodeExtension(r);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: "+Object.prototype.toString.apply(e));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: "+t);this.writeU8(198),this.writeU32(t)}var r=m(e);this.writeU8a(r)},e.prototype.encodeArray=function(e,t){var r=e.length;if(r<16)this.writeU8(144+r);else if(r<65536)this.writeU8(220),this.writeU16(r);else{if(!(r<4294967296))throw new Error("Too large array: "+r);this.writeU8(221),this.writeU32(r)}for(var i=0,n=e;i0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,r){e:for(var i=0,n=this.caches[r-1];i=this.maxLengthPerKey?r[Math.random()*r.length|0]=i:r.push(i)},e.prototype.decode=function(e,t,r){var i=this.find(e,t,r);if(null!=i)return this.hit++,i;this.miss++;var n=u(e,t,r),s=Uint8Array.prototype.slice.call(e,t,t+r);return this.store(s,n),n},e}(),I=function(e,t){var r,i,n,s,o={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,i&&(n=2&s[0]?i.return:s[0]?i.throw||((n=i.return)&&n.call(i),0):i.next)&&!(n=n.call(i,s[1])).done)return n;switch(i=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,i=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((n=(n=o.trys).length>0&&n[n.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]1||a(e,t)}))})}function a(e,t){try{(r=n[e](t)).value instanceof E?Promise.resolve(r.value.v).then(h,c):u(s[0][2],r)}catch(e){u(s[0][3],e)}var r}function h(e){a("next",e)}function c(e){a("throw",e)}function u(e,t){e(t),s.shift(),s.length&&a(s[0][0],s[0][1])}},B=new DataView(new ArrayBuffer(0)),M=new Uint8Array(B.buffer),A=function(){try{B.getInt8(0)}catch(e){return e.constructor}throw new Error("never reached")}(),L=new A("Insufficient data"),k=new x,C=function(){function t(t,r,i,n,s,o,a,h){void 0===t&&(t=v.defaultCodec),void 0===r&&(r=void 0),void 0===i&&(i=e),void 0===n&&(n=e),void 0===s&&(s=e),void 0===o&&(o=e),void 0===a&&(a=e),void 0===h&&(h=k),this.extensionCodec=t,this.context=r,this.maxStrLength=i,this.maxBinLength=n,this.maxArrayLength=s,this.maxMapLength=o,this.maxExtLength=a,this.keyDecoder=h,this.totalPos=0,this.pos=0,this.view=B,this.bytes=M,this.headByte=-1,this.stack=[]}return t.prototype.reinitializeState=function(){this.totalPos=0,this.headByte=-1,this.stack.length=0},t.prototype.setBuffer=function(e){this.bytes=m(e),this.view=function(e){if(e instanceof ArrayBuffer)return new DataView(e);var t=m(e);return new DataView(t.buffer,t.byteOffset,t.byteLength)}(this.bytes),this.pos=0},t.prototype.appendBuffer=function(e){if(-1!==this.headByte||this.hasRemaining(1)){var t=this.bytes.subarray(this.pos),r=m(e),i=new Uint8Array(t.length+r.length);i.set(t),i.set(r,t.length),this.setBuffer(i)}else this.setBuffer(e)},t.prototype.hasRemaining=function(e){return this.view.byteLength-this.pos>=e},t.prototype.createExtraByteError=function(e){var t=this.view,r=this.pos;return new RangeError("Extra "+(t.byteLength-r)+" of "+t.byteLength+" byte(s) found at buffer["+e+"]")},t.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},t.prototype.decodeMulti=function(e){return I(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},t.prototype.decodeAsync=function(e){var t,r,i,n;return function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{h(i.next(e))}catch(e){s(e)}}function a(e){try{h(i.throw(e))}catch(e){s(e)}}function h(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,a)}h((i=i.apply(e,t||[])).next())}))}(this,void 0,void 0,(function(){var s,o,a,h,c,u,f,p;return I(this,(function(l){switch(l.label){case 0:s=!1,l.label=1;case 1:l.trys.push([1,6,7,12]),t=S(e),l.label=2;case 2:return[4,t.next()];case 3:if((r=l.sent()).done)return[3,5];if(a=r.value,s)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{o=this.doDecodeSync(),s=!0}catch(e){if(!(e instanceof A))throw e}this.totalPos+=this.pos,l.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return h=l.sent(),i={error:h},[3,12];case 7:return l.trys.push([7,,10,11]),r&&!r.done&&(n=t.return)?[4,n.call(t)]:[3,9];case 8:l.sent(),l.label=9;case 9:return[3,11];case 10:if(i)throw i.error;return[7];case 11:return[7];case 12:if(s){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,o]}throw u=(c=this).headByte,f=c.pos,p=c.totalPos,new RangeError("Insufficient data in parsing "+b(u)+" at "+p+" ("+f+" in the current buffer)")}}))}))},t.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},t.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},t.prototype.decodeMultiAsync=function(e,t){return T(this,arguments,(function(){var r,i,n,s,o,a,h,c,u;return I(this,(function(f){switch(f.label){case 0:r=t,i=-1,f.label=1;case 1:f.trys.push([1,13,14,19]),n=S(e),f.label=2;case 2:return[4,E(n.next())];case 3:if((s=f.sent()).done)return[3,12];if(o=s.value,t&&0===i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(o),r&&(i=this.readArraySize(),r=!1,this.complete()),f.label=4;case 4:f.trys.push([4,9,,10]),f.label=5;case 5:return[4,E(this.doDecodeSync())];case 6:return[4,f.sent()];case 7:return f.sent(),0==--i?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=f.sent())instanceof A))throw a;return[3,10];case 10:this.totalPos+=this.pos,f.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return h=f.sent(),c={error:h},[3,19];case 14:return f.trys.push([14,,17,18]),s&&!s.done&&(u=n.return)?[4,E(u.call(n))]:[3,16];case 15:f.sent(),f.label=16;case 16:return[3,18];case 17:if(c)throw c.error;return[7];case 18:return[7];case 19:return[2]}}))}))},t.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(i=e-128)){this.pushMapState(i),this.complete();continue e}t={}}else if(e<160){if(0!=(i=e-144)){this.pushArrayState(i),this.complete();continue e}t=[]}else{var r=e-160;t=this.decodeUtf8String(r,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)r=this.lookU8(),t=this.decodeUtf8String(r,1);else if(218===e)r=this.lookU16(),t=this.decodeUtf8String(r,2);else if(219===e)r=this.lookU32(),t=this.decodeUtf8String(r,4);else if(220===e){if(0!==(i=this.readU16())){this.pushArrayState(i),this.complete();continue e}t=[]}else if(221===e){if(0!==(i=this.readU32())){this.pushArrayState(i),this.complete();continue e}t=[]}else if(222===e){if(0!==(i=this.readU16())){this.pushMapState(i),this.complete();continue e}t={}}else if(223===e){if(0!==(i=this.readU32())){this.pushMapState(i),this.complete();continue e}t={}}else if(196===e){var i=this.lookU8();t=this.decodeBinary(i,1)}else if(197===e)i=this.lookU16(),t=this.decodeBinary(i,2);else if(198===e)i=this.lookU32(),t=this.decodeBinary(i,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)i=this.lookU8(),t=this.decodeExtension(i,1);else if(200===e)i=this.lookU16(),t=this.decodeExtension(i,2);else{if(201!==e)throw new w("Unrecognized type byte: "+b(e));i=this.lookU32(),t=this.decodeExtension(i,4)}this.complete();for(var n=this.stack;n.length>0;){var s=n[n.length-1];if(0===s.type){if(s.array[s.position]=t,s.position++,s.position!==s.size)continue e;n.pop(),t=s.array}else{if(1===s.type){if(void 0,"string"!=(o=typeof t)&&"number"!==o)throw new w("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new w("The key __proto__ is not allowed");s.key=t,s.type=2;continue e}if(s.map[s.key]=t,s.readCount++,s.readCount!==s.size){s.key=null,s.type=1;continue e}n.pop(),t=s.map}}return t}var o},t.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},t.prototype.complete=function(){this.headByte=-1},t.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new w("Unrecognized array type byte: "+b(e))}},t.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new w("Max length exceeded: map length ("+e+") > maxMapLengthLength ("+this.maxMapLength+")");this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},t.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new w("Max length exceeded: array length ("+e+") > maxArrayLength ("+this.maxArrayLength+")");this.stack.push({type:0,size:e,array:new Array(e),position:0})},t.prototype.decodeUtf8String=function(e,t){var r;if(e>this.maxStrLength)throw new w("Max length exceeded: UTF-8 byte length ("+e+") > maxStrLength ("+this.maxStrLength+")");if(this.bytes.byteLengthl?function(e,t,r){var i=e.subarray(t,t+r);return p.decode(i)}(this.bytes,n,e):u(this.bytes,n,e),this.pos+=t+e,i},t.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},t.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new w("Max length exceeded: bin length ("+e+") > maxBinLength ("+this.maxBinLength+")");if(!this.hasRemaining(e+t))throw L;var r=this.pos+t,i=this.bytes.subarray(r,r+e);return this.pos+=t+e,i},t.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new w("Max length exceeded: ext length ("+e+") > maxExtLength ("+this.maxExtLength+")");var r=this.view.getInt8(this.pos+t),i=this.decodeBinary(e,t+1);return this.extensionCodec.decode(i,r,this.context)},t.prototype.lookU8=function(){return this.view.getUint8(this.pos)},t.prototype.lookU16=function(){return this.view.getUint16(this.pos)},t.prototype.lookU32=function(){return this.view.getUint32(this.pos)},t.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},t.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},t.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},t.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},t.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},t.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},t.prototype.readU64=function(){var e,t,r=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,r},t.prototype.readI64=function(){var e=r(this.view,this.pos);return this.pos+=8,e},t.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},t.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},t}(),z=i(1);class D{static write(e){let t=e.byteLength||e.length;const r=[];do{let e=127&t;t>>=7,t>0&&(e|=128),r.push(e)}while(t>0);t=e.byteLength||e.length;const i=new Uint8Array(r.length+t);return i.set(r,0),i.set(e,r.length),i.buffer}static parse(e){const t=[],r=new Uint8Array(e),i=[0,7,14,21,28];for(let n=0;n7)throw new Error("Messages bigger than 2GB are not supported.");if(!(r.byteLength>=n+o+a))throw new Error("Incomplete message.");t.push(r.slice?r.slice(n+o,n+o+a):r.subarray(n+o,n+o+a)),n=n+o+a}return t}}const P=new Uint8Array([145,z.MessageType.Ping]);class _{constructor(e){this.name="messagepack",this.version=1,this.transferFormat=z.TransferFormat.Binary,this.i=1,this.h=2,this.u=3,e=e||{},this.l=new U(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this.p=new C(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(r=e)||"undefined"==typeof ArrayBuffer||!(r instanceof ArrayBuffer||r.constructor&&"ArrayBuffer"===r.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var r;null===t&&(t=z.NullLogger.instance);const i=D.parse(e),n=[];for(const e of i){const r=this.g(e,t);r&&n.push(r)}return n}writeMessage(e){switch(e.type){case z.MessageType.Invocation:return this.m(e);case z.MessageType.StreamInvocation:return this.A(e);case z.MessageType.StreamItem:return this.I(e);case z.MessageType.Completion:return this._(e);case z.MessageType.Ping:return D.write(P);case z.MessageType.CancelInvocation:return this.M(e);default:throw new Error("Invalid message type.")}}g(e,t){if(0===e.length)throw new Error("Invalid payload.");const r=this.p.decode(e);if(0===r.length||!(r instanceof Array))throw new Error("Invalid payload.");const i=r[0];switch(i){case z.MessageType.Invocation:return this.S(this.U(r),r);case z.MessageType.StreamItem:return this.j(this.U(r),r);case z.MessageType.Completion:return this.T(this.U(r),r);case z.MessageType.Ping:return this.D(r);case z.MessageType.Close:return this.k(r);default:return t.log(z.LogLevel.Information,"Unknown message type '"+i+"' ignored."),null}}k(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:z.MessageType.Close}}D(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:z.MessageType.Ping}}S(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const r=t[2];return r?{arguments:t[4],headers:e,invocationId:r,streamIds:[],target:t[3],type:z.MessageType.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:z.MessageType.Invocation}}j(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:z.MessageType.StreamItem}}T(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const r=t[3];if(r!==this.h&&t.length<5)throw new Error("Invalid payload for Completion message.");let i,n;switch(r){case this.i:i=t[4];break;case this.u:n=t[4]}return{error:i,headers:e,invocationId:t[2],result:n,type:z.MessageType.Completion}}m(e){let t;return t=e.streamIds?this.l.encode([z.MessageType.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this.l.encode([z.MessageType.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),D.write(t.slice())}A(e){let t;return t=e.streamIds?this.l.encode([z.MessageType.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this.l.encode([z.MessageType.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),D.write(t.slice())}I(e){const t=this.l.encode([z.MessageType.StreamItem,e.headers||{},e.invocationId,e.item]);return D.write(t.slice())}_(e){const t=e.error?this.i:e.result?this.u:this.h;let r;switch(t){case this.i:r=this.l.encode([z.MessageType.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this.h:r=this.l.encode([z.MessageType.Completion,e.headers||{},e.invocationId,t]);break;case this.u:r=this.l.encode([z.MessageType.Completion,e.headers||{},e.invocationId,t,e.result])}return D.write(r.slice())}M(e){const t=this.l.encode([z.MessageType.CancelInvocation,e.headers||{},e.invocationId]);return D.write(t.slice())}U(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const j="6.0.0"})(),n})()},"object"==typeof exports&&"object"==typeof module?module.exports=t(require("signalR")):"function"==typeof define&&define.amd?define(["signalR"],t):"object"==typeof exports?exports.msgpack=t(require("signalR")):(e.signalR=e.signalR||{},e.signalR.protocols=e.signalR.protocols||{},e.signalR.protocols.msgpack=t(e.signalR));
//# sourceMappingURL=signalr-protocol-msgpack.min.js.map
\ No newline at end of file
diff --git a/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.min.js.map b/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.min.js.map
index 64c220c2..e46d3e05 100644
--- a/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.min.js.map
+++ b/Server/wwwroot/lib/microsoft/signalr-protocol-msgpack/dist/browser/signalr-protocol-msgpack.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack://signalR.protocols.msgpack/webpack/universalModuleDefinition","webpack://signalR.protocols.msgpack/webpack/bootstrap","webpack://signalR.protocols.msgpack/src/browser-index.ts","webpack://signalR.protocols.msgpack/src/index.ts","webpack://signalR.protocols.msgpack/src/MessagePackHubProtocol.ts","webpack://signalR.protocols.msgpack/node_modules/buffer/index.js","webpack://signalR.protocols.msgpack/node_modules/base64-js/index.js","webpack://signalR.protocols.msgpack/node_modules/ieee754/index.js","webpack://signalR.protocols.msgpack/external \"msgpack5\"","webpack://signalR.protocols.msgpack/external \"signalR\"","webpack://signalR.protocols.msgpack/src/BinaryMessageFormat.ts","webpack://signalR.protocols.msgpack/src/Utils.ts"],"names":["webpackUniversalModuleDefinition","root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__6__","__WEBPACK_EXTERNAL_MODULE__7__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","getDefault","getModuleExports","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","_index__WEBPACK_IMPORTED_MODULE_0__","VERSION","_MessagePackHubProtocol__WEBPACK_IMPORTED_MODULE_0__","MessagePackHubProtocol","buffer__WEBPACK_IMPORTED_MODULE_0__","buffer__WEBPACK_IMPORTED_MODULE_0___default","msgpack5__WEBPACK_IMPORTED_MODULE_1__","msgpack5__WEBPACK_IMPORTED_MODULE_1___default","_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2__","_microsoft_signalr__WEBPACK_IMPORTED_MODULE_2___default","_BinaryMessageFormat__WEBPACK_IMPORTED_MODULE_3__","_Utils__WEBPACK_IMPORTED_MODULE_4__","SERIALIZED_PING_MESSAGE","Uint8Array","Ping","messagePackOptions","this","version","transferFormat","Binary","errorResult","voidResult","nonVoidResult","__assign","compatibilityMode","parseMessages","input","logger","Error","instance","messages","parse","hubMessages","_i","messages_1","length","message","parsedMessage","parseMessage","push","writeMessage","type","Invocation","writeInvocation","StreamInvocation","writeStreamInvocation","StreamItem","writeStreamItem","Completion","writeCompletion","write","CancelInvocation","writeCancelInvocation","msgpack","properties","decode","from","Array","messageType","createInvocationMessage","readHeaders","createStreamItemMessage","createCompletionMessage","createPingMessage","Close","createCloseMessage","log","Information","allowReconnect","undefined","error","headers","invocationId","arguments","streamIds","target","item","resultKind","result","completionMessage","invocationMessage","payload","encode","slice","streamInvocationMessage","streamItemMessage","cancelInvocationMessage","base64","ieee754","Buffer","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","kMaxLength","TYPED_ARRAY_SUPPORT","typedArraySupport","console","arr","__proto__","foo","e","createBuffer","RangeError","buf","arg","encodingOrOffset","allocUnsafe","species","configurable","writable","poolSize","TypeError","isArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","size","alloc","fill","encoding","checked","allocUnsafeSlow","string","isEncoding","byteLength","actual","fromArrayLike","array","byteOffset","obj","isBuffer","len","copy","isArrayBufferView","numberIsNaN","isArray","data","toString","b","_isBuffer","compare","a","x","y","Math","min","String","toLowerCase","concat","list","buffer","pos","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","swap16","swap32","swap64","apply","equals","inspect","str","max","match","join","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","val","dir","arrayIndexOf","indexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","includes","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","isFinite","toJSON","_arr","fromByteArray","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","toHex","bytes","newBuf","subarray","checkOffset","ext","readUIntLE","noAssert","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","littleEndian","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","set","code","charCodeAt","INVALID_BASE64_RE","base64clean","trim","replace","units","Infinity","leadSurrogate","byteArray","hi","lo","toByteArray","src","dst","ArrayBuffer","constructor","isView","lookup","revLookup","Arr","placeHoldersCount","b64","tmp","placeHolders","L","tripletToBase64","num","encodeChunk","uint8","output","extraBytes","parts","maxChunkLength","len2","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","isNaN","floor","LN2","BinaryMessageFormat","lenBuffer","sizePart","uint8Array","maxLengthPrefixSize","numBitsToShift","numBytes","byteRead"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"sources":["webpack://signalR.protocols.msgpack/webpack/universalModuleDefinition","webpack://signalR.protocols.msgpack/external \"signalR\"","webpack://signalR.protocols.msgpack/webpack/bootstrap","webpack://signalR.protocols.msgpack/webpack/runtime/define property getters","webpack://signalR.protocols.msgpack/webpack/runtime/hasOwnProperty shorthand","webpack://signalR.protocols.msgpack/webpack/runtime/make namespace object","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/utils/int.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/utils/utf8.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/DecodeError.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/ExtData.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/timestamp.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/ExtensionCodec.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/utils/typedArrays.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/Encoder.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/utils/prettyByte.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/CachedKeyDecoder.mjs","webpack://signalR.protocols.msgpack/node_modules/@msgpack/msgpack/dist.es5+esm/Decoder.mjs","webpack://signalR.protocols.msgpack/src/BinaryMessageFormat.ts","webpack://signalR.protocols.msgpack/src/MessagePackHubProtocol.ts","webpack://signalR.protocols.msgpack/src/Utils.ts","webpack://signalR.protocols.msgpack/src/index.ts"],"names":["root","factory","self","__WEBPACK_EXTERNAL_MODULE__1__","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","UINT32_MAX","setInt64","view","offset","high","Math","floor","low","setUint32","getInt64","getInt32","getUint32","TEXT_ENCODING_AVAILABLE","process","env","TEXT_ENCODING","TextEncoder","TextDecoder","utf8Count","str","strLength","length","byteLength","pos","charCodeAt","extra","sharedTextEncoder","TEXT_ENCODER_THRESHOLD","utf8EncodeTE","encodeInto","output","outputOffset","subarray","set","encode","utf8DecodeJs","bytes","inputOffset","end","units","result","byte1","push","byte2","byte3","unit","String","fromCharCode","apply","extendStatics","sharedTextDecoder","TEXT_DECODER_THRESHOLD","TEXT_DECODER","ExtData","type","data","this","__extends","b","setPrototypeOf","__proto__","Array","p","TypeError","__","constructor","create","DecodeError","_super","message","_this","proto","configurable","name","Error","timestampExtension","object","msec","sec","nsec","nsecInSec","Date","_a","rv","Uint8Array","DataView","buffer","secHigh","secLow","getTime","decode","timeSpec","byteOffset","nsec30AndSecHigh2","ExtensionCodec","builtInEncoders","builtInDecoders","encoders","decoders","register","index","tryToEncode","context","i","encodeExt","decodeExt","defaultCodec","ensureUint8Array","ArrayBuffer","isView","from","Encoder","extensionCodec","maxDepth","initialBufferSize","sortKeys","forceFloat32","ignoreUndefined","forceIntegerToFloat","undefined","getUint8Array","reinitializeState","doEncode","depth","encodeNil","encodeBoolean","encodeNumber","encodeString","encodeObject","ensureBufferSizeToWrite","sizeToWrite","requiredSize","resizeBuffer","newSize","newBuffer","newBytes","newView","writeU8","Number","isSafeInteger","writeU16","writeU32","writeU64","writeI8","writeI16","writeI32","writeI64","writeF32","writeF64","writeStringHeader","ext","encodeExtension","isArray","encodeArray","encodeBinary","toString","encodeMap","size","writeU8a","_i","object_1","item","countWithoutUndefined","keys","count","keys_1","sort","keys_2","setUint8","values","setInt8","setUint16","setInt16","setInt32","setFloat32","setFloat64","prettyByte","byte","abs","padStart","CachedKeyDecoder","maxKeyLength","maxLengthPerKey","hit","miss","caches","canBeCached","find","FIND_CHUNK","records_1","record","recordBytes","j","store","records","random","cachedValue","slicedCopyOfBytes","slice","__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","iterator","n","v","op","done","pop","e","__asyncValues","asyncIterator","m","__values","Promise","resolve","reject","then","__await","__asyncGenerator","_arguments","generator","q","a","resume","fulfill","settle","shift","EMPTY_VIEW","EMPTY_BYTES","DataViewIndexOutOfBoundsError","getInt8","MORE_DATA","sharedCachedKeyDecoder","Decoder","maxStrLength","maxBinLength","maxArrayLength","maxMapLength","maxExtLength","keyDecoder","totalPos","headByte","stack","setBuffer","bufferView","appendBuffer","hasRemaining","remainingData","newData","createExtraByteError","posToShow","RangeError","doDecodeSync","decodeMulti","decodeAsync","stream","stream_1","stream_1_1","e_1","P","fulfilled","step","rejected","__awaiter","decoded","e_1_1","_b","_c","error","decodeArrayStream","decodeMultiAsync","decodeStream","arguments","isArrayHeaderRequired","arrayItemsLeft","stream_2","stream_2_1","e_2","e_3_1","e_3","readArraySize","complete","DECODE","readHeadByte","pushMapState","pushArrayState","decodeUtf8String","readF32","readF64","readU8","readU16","readU32","readU64","readI8","readI16","readI32","readI64","lookU8","lookU16","lookU32","decodeBinary","decodeExtension","state","array","position","keyType","map","readCount","headerOffset","stateIsMapKey","stringBytes","headOffset","extType","getUint8","getUint16","getInt16","getFloat32","getFloat64","BinaryMessageFormat","[object Object]","lenBuffer","sizePart","input","uint8Array","numBitsToShift","byteRead","numBytes","min","SERIALIZED_PING_MESSAGE","O","MessageType","Ping","MessagePackHubProtocol","messagePackOptions","version","transferFormat","TransferFormat","Binary","_errorResult","_voidResult","_nonVoidResult","_encoder","_decoder","logger","val","NullLogger","instance","messages","parse","hubMessages","parsedMessage","_parseMessage","Invocation","_writeInvocation","StreamInvocation","_writeStreamInvocation","StreamItem","_writeStreamItem","Completion","_writeCompletion","write","CancelInvocation","_writeCancelInvocation","properties","messageType","_createInvocationMessage","_readHeaders","_createStreamItemMessage","_createCompletionMessage","_createPingMessage","Close","_createCloseMessage","log","LogLevel","Information","allowReconnect","headers","invocationId","streamIds","target","resultKind","invocationMessage","payload","streamInvocationMessage","streamItemMessage","completionMessage","cancelInvocationMessage","VERSION","require","define","amd","msgpack","signalR","protocols"],"mappings":"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","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"signalR\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"signalR\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"msgpack\"] = factory(require(\"signalR\"));\n\telse\n\t\troot[\"signalR\"] = root[\"signalR\"] || {}, root[\"signalR\"][\"protocols\"] = root[\"signalR\"][\"protocols\"] || {}, root[\"signalR\"][\"protocols\"][\"msgpack\"] = factory(root[\"signalR\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__1__) {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Integer Utility\nexport var UINT32_MAX = 4294967295;\n// DataView extension to handle int64 / uint64,\n// where the actual range is 53-bits integer (a.k.a. safe integer)\nexport function setUint64(view, offset, value) {\n var high = value / 4294967296;\n var low = value; // high bits are truncated by DataView\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nexport function setInt64(view, offset, value) {\n var high = Math.floor(value / 4294967296);\n var low = value; // high bits are truncated by DataView\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nexport function getInt64(view, offset) {\n var high = view.getInt32(offset);\n var low = view.getUint32(offset + 4);\n return high * 4294967296 + low;\n}\nexport function getUint64(view, offset) {\n var high = view.getUint32(offset);\n var low = view.getUint32(offset + 4);\n return high * 4294967296 + low;\n}\n//# sourceMappingURL=int.mjs.map","import { UINT32_MAX } from \"./int.mjs\";\nvar TEXT_ENCODING_AVAILABLE = (typeof process === \"undefined\" || process.env[\"TEXT_ENCODING\"] !== \"never\") &&\n typeof TextEncoder !== \"undefined\" &&\n typeof TextDecoder !== \"undefined\";\nexport function utf8Count(str) {\n var strLength = str.length;\n var byteLength = 0;\n var pos = 0;\n while (pos < strLength) {\n var value = str.charCodeAt(pos++);\n if ((value & 0xffffff80) === 0) {\n // 1-byte\n byteLength++;\n continue;\n }\n else if ((value & 0xfffff800) === 0) {\n // 2-bytes\n byteLength += 2;\n }\n else {\n // handle surrogate pair\n if (value >= 0xd800 && value <= 0xdbff) {\n // high surrogate\n if (pos < strLength) {\n var extra = str.charCodeAt(pos);\n if ((extra & 0xfc00) === 0xdc00) {\n ++pos;\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n }\n }\n }\n if ((value & 0xffff0000) === 0) {\n // 3-byte\n byteLength += 3;\n }\n else {\n // 4-byte\n byteLength += 4;\n }\n }\n }\n return byteLength;\n}\nexport function utf8EncodeJs(str, output, outputOffset) {\n var strLength = str.length;\n var offset = outputOffset;\n var pos = 0;\n while (pos < strLength) {\n var value = str.charCodeAt(pos++);\n if ((value & 0xffffff80) === 0) {\n // 1-byte\n output[offset++] = value;\n continue;\n }\n else if ((value & 0xfffff800) === 0) {\n // 2-bytes\n output[offset++] = ((value >> 6) & 0x1f) | 0xc0;\n }\n else {\n // handle surrogate pair\n if (value >= 0xd800 && value <= 0xdbff) {\n // high surrogate\n if (pos < strLength) {\n var extra = str.charCodeAt(pos);\n if ((extra & 0xfc00) === 0xdc00) {\n ++pos;\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n }\n }\n }\n if ((value & 0xffff0000) === 0) {\n // 3-byte\n output[offset++] = ((value >> 12) & 0x0f) | 0xe0;\n output[offset++] = ((value >> 6) & 0x3f) | 0x80;\n }\n else {\n // 4-byte\n output[offset++] = ((value >> 18) & 0x07) | 0xf0;\n output[offset++] = ((value >> 12) & 0x3f) | 0x80;\n output[offset++] = ((value >> 6) & 0x3f) | 0x80;\n }\n }\n output[offset++] = (value & 0x3f) | 0x80;\n }\n}\nvar sharedTextEncoder = TEXT_ENCODING_AVAILABLE ? new TextEncoder() : undefined;\nexport var TEXT_ENCODER_THRESHOLD = !TEXT_ENCODING_AVAILABLE\n ? UINT32_MAX\n : typeof process !== \"undefined\" && process.env[\"TEXT_ENCODING\"] !== \"force\"\n ? 200\n : 0;\nfunction utf8EncodeTEencode(str, output, outputOffset) {\n output.set(sharedTextEncoder.encode(str), outputOffset);\n}\nfunction utf8EncodeTEencodeInto(str, output, outputOffset) {\n sharedTextEncoder.encodeInto(str, output.subarray(outputOffset));\n}\nexport var utf8EncodeTE = (sharedTextEncoder === null || sharedTextEncoder === void 0 ? void 0 : sharedTextEncoder.encodeInto) ? utf8EncodeTEencodeInto : utf8EncodeTEencode;\nvar CHUNK_SIZE = 4096;\nexport function utf8DecodeJs(bytes, inputOffset, byteLength) {\n var offset = inputOffset;\n var end = offset + byteLength;\n var units = [];\n var result = \"\";\n while (offset < end) {\n var byte1 = bytes[offset++];\n if ((byte1 & 0x80) === 0) {\n // 1 byte\n units.push(byte1);\n }\n else if ((byte1 & 0xe0) === 0xc0) {\n // 2 bytes\n var byte2 = bytes[offset++] & 0x3f;\n units.push(((byte1 & 0x1f) << 6) | byte2);\n }\n else if ((byte1 & 0xf0) === 0xe0) {\n // 3 bytes\n var byte2 = bytes[offset++] & 0x3f;\n var byte3 = bytes[offset++] & 0x3f;\n units.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3);\n }\n else if ((byte1 & 0xf8) === 0xf0) {\n // 4 bytes\n var byte2 = bytes[offset++] & 0x3f;\n var byte3 = bytes[offset++] & 0x3f;\n var byte4 = bytes[offset++] & 0x3f;\n var unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;\n if (unit > 0xffff) {\n unit -= 0x10000;\n units.push(((unit >>> 10) & 0x3ff) | 0xd800);\n unit = 0xdc00 | (unit & 0x3ff);\n }\n units.push(unit);\n }\n else {\n units.push(byte1);\n }\n if (units.length >= CHUNK_SIZE) {\n result += String.fromCharCode.apply(String, units);\n units.length = 0;\n }\n }\n if (units.length > 0) {\n result += String.fromCharCode.apply(String, units);\n }\n return result;\n}\nvar sharedTextDecoder = TEXT_ENCODING_AVAILABLE ? new TextDecoder() : null;\nexport var TEXT_DECODER_THRESHOLD = !TEXT_ENCODING_AVAILABLE\n ? UINT32_MAX\n : typeof process !== \"undefined\" && process.env[\"TEXT_DECODER\"] !== \"force\"\n ? 200\n : 0;\nexport function utf8DecodeTD(bytes, inputOffset, byteLength) {\n var stringBytes = bytes.subarray(inputOffset, inputOffset + byteLength);\n return sharedTextDecoder.decode(stringBytes);\n}\n//# sourceMappingURL=utf8.mjs.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar DecodeError = /** @class */ (function (_super) {\n __extends(DecodeError, _super);\n function DecodeError(message) {\n var _this = _super.call(this, message) || this;\n // fix the prototype chain in a cross-platform way\n var proto = Object.create(DecodeError.prototype);\n Object.setPrototypeOf(_this, proto);\n Object.defineProperty(_this, \"name\", {\n configurable: true,\n enumerable: false,\n value: DecodeError.name,\n });\n return _this;\n }\n return DecodeError;\n}(Error));\nexport { DecodeError };\n//# sourceMappingURL=DecodeError.mjs.map","/**\n * ExtData is used to handle Extension Types that are not registered to ExtensionCodec.\n */\nvar ExtData = /** @class */ (function () {\n function ExtData(type, data) {\n this.type = type;\n this.data = data;\n }\n return ExtData;\n}());\nexport { ExtData };\n//# sourceMappingURL=ExtData.mjs.map","// https://github.com/msgpack/msgpack/blob/master/spec.md#timestamp-extension-type\nimport { DecodeError } from \"./DecodeError.mjs\";\nimport { getInt64, setInt64 } from \"./utils/int.mjs\";\nexport var EXT_TIMESTAMP = -1;\nvar TIMESTAMP32_MAX_SEC = 0x100000000 - 1; // 32-bit unsigned int\nvar TIMESTAMP64_MAX_SEC = 0x400000000 - 1; // 34-bit unsigned int\nexport function encodeTimeSpecToTimestamp(_a) {\n var sec = _a.sec, nsec = _a.nsec;\n if (sec >= 0 && nsec >= 0 && sec <= TIMESTAMP64_MAX_SEC) {\n // Here sec >= 0 && nsec >= 0\n if (nsec === 0 && sec <= TIMESTAMP32_MAX_SEC) {\n // timestamp 32 = { sec32 (unsigned) }\n var rv = new Uint8Array(4);\n var view = new DataView(rv.buffer);\n view.setUint32(0, sec);\n return rv;\n }\n else {\n // timestamp 64 = { nsec30 (unsigned), sec34 (unsigned) }\n var secHigh = sec / 0x100000000;\n var secLow = sec & 0xffffffff;\n var rv = new Uint8Array(8);\n var view = new DataView(rv.buffer);\n // nsec30 | secHigh2\n view.setUint32(0, (nsec << 2) | (secHigh & 0x3));\n // secLow32\n view.setUint32(4, secLow);\n return rv;\n }\n }\n else {\n // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }\n var rv = new Uint8Array(12);\n var view = new DataView(rv.buffer);\n view.setUint32(0, nsec);\n setInt64(view, 4, sec);\n return rv;\n }\n}\nexport function encodeDateToTimeSpec(date) {\n var msec = date.getTime();\n var sec = Math.floor(msec / 1e3);\n var nsec = (msec - sec * 1e3) * 1e6;\n // Normalizes { sec, nsec } to ensure nsec is unsigned.\n var nsecInSec = Math.floor(nsec / 1e9);\n return {\n sec: sec + nsecInSec,\n nsec: nsec - nsecInSec * 1e9,\n };\n}\nexport function encodeTimestampExtension(object) {\n if (object instanceof Date) {\n var timeSpec = encodeDateToTimeSpec(object);\n return encodeTimeSpecToTimestamp(timeSpec);\n }\n else {\n return null;\n }\n}\nexport function decodeTimestampToTimeSpec(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n // data may be 32, 64, or 96 bits\n switch (data.byteLength) {\n case 4: {\n // timestamp 32 = { sec32 }\n var sec = view.getUint32(0);\n var nsec = 0;\n return { sec: sec, nsec: nsec };\n }\n case 8: {\n // timestamp 64 = { nsec30, sec34 }\n var nsec30AndSecHigh2 = view.getUint32(0);\n var secLow32 = view.getUint32(4);\n var sec = (nsec30AndSecHigh2 & 0x3) * 0x100000000 + secLow32;\n var nsec = nsec30AndSecHigh2 >>> 2;\n return { sec: sec, nsec: nsec };\n }\n case 12: {\n // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }\n var sec = getInt64(view, 4);\n var nsec = view.getUint32(0);\n return { sec: sec, nsec: nsec };\n }\n default:\n throw new DecodeError(\"Unrecognized data size for timestamp (expected 4, 8, or 12): \" + data.length);\n }\n}\nexport function decodeTimestampExtension(data) {\n var timeSpec = decodeTimestampToTimeSpec(data);\n return new Date(timeSpec.sec * 1e3 + timeSpec.nsec / 1e6);\n}\nexport var timestampExtension = {\n type: EXT_TIMESTAMP,\n encode: encodeTimestampExtension,\n decode: decodeTimestampExtension,\n};\n//# sourceMappingURL=timestamp.mjs.map","// ExtensionCodec to handle MessagePack extensions\nimport { ExtData } from \"./ExtData.mjs\";\nimport { timestampExtension } from \"./timestamp.mjs\";\nvar ExtensionCodec = /** @class */ (function () {\n function ExtensionCodec() {\n // built-in extensions\n this.builtInEncoders = [];\n this.builtInDecoders = [];\n // custom extensions\n this.encoders = [];\n this.decoders = [];\n this.register(timestampExtension);\n }\n ExtensionCodec.prototype.register = function (_a) {\n var type = _a.type, encode = _a.encode, decode = _a.decode;\n if (type >= 0) {\n // custom extensions\n this.encoders[type] = encode;\n this.decoders[type] = decode;\n }\n else {\n // built-in extensions\n var index = 1 + type;\n this.builtInEncoders[index] = encode;\n this.builtInDecoders[index] = decode;\n }\n };\n ExtensionCodec.prototype.tryToEncode = function (object, context) {\n // built-in extensions\n for (var i = 0; i < this.builtInEncoders.length; i++) {\n var encodeExt = this.builtInEncoders[i];\n if (encodeExt != null) {\n var data = encodeExt(object, context);\n if (data != null) {\n var type = -1 - i;\n return new ExtData(type, data);\n }\n }\n }\n // custom extensions\n for (var i = 0; i < this.encoders.length; i++) {\n var encodeExt = this.encoders[i];\n if (encodeExt != null) {\n var data = encodeExt(object, context);\n if (data != null) {\n var type = i;\n return new ExtData(type, data);\n }\n }\n }\n if (object instanceof ExtData) {\n // to keep ExtData as is\n return object;\n }\n return null;\n };\n ExtensionCodec.prototype.decode = function (data, type, context) {\n var decodeExt = type < 0 ? this.builtInDecoders[-1 - type] : this.decoders[type];\n if (decodeExt) {\n return decodeExt(data, type, context);\n }\n else {\n // decode() does not fail, returns ExtData instead.\n return new ExtData(type, data);\n }\n };\n ExtensionCodec.defaultCodec = new ExtensionCodec();\n return ExtensionCodec;\n}());\nexport { ExtensionCodec };\n//# sourceMappingURL=ExtensionCodec.mjs.map","export function ensureUint8Array(buffer) {\n if (buffer instanceof Uint8Array) {\n return buffer;\n }\n else if (ArrayBuffer.isView(buffer)) {\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n else if (buffer instanceof ArrayBuffer) {\n return new Uint8Array(buffer);\n }\n else {\n // ArrayLike\n return Uint8Array.from(buffer);\n }\n}\nexport function createDataView(buffer) {\n if (buffer instanceof ArrayBuffer) {\n return new DataView(buffer);\n }\n var bufferView = ensureUint8Array(buffer);\n return new DataView(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\n}\n//# sourceMappingURL=typedArrays.mjs.map","import { utf8EncodeJs, utf8Count, TEXT_ENCODER_THRESHOLD, utf8EncodeTE } from \"./utils/utf8.mjs\";\nimport { ExtensionCodec } from \"./ExtensionCodec.mjs\";\nimport { setInt64, setUint64 } from \"./utils/int.mjs\";\nimport { ensureUint8Array } from \"./utils/typedArrays.mjs\";\nexport var DEFAULT_MAX_DEPTH = 100;\nexport var DEFAULT_INITIAL_BUFFER_SIZE = 2048;\nvar Encoder = /** @class */ (function () {\n function Encoder(extensionCodec, context, maxDepth, initialBufferSize, sortKeys, forceFloat32, ignoreUndefined, forceIntegerToFloat) {\n if (extensionCodec === void 0) { extensionCodec = ExtensionCodec.defaultCodec; }\n if (context === void 0) { context = undefined; }\n if (maxDepth === void 0) { maxDepth = DEFAULT_MAX_DEPTH; }\n if (initialBufferSize === void 0) { initialBufferSize = DEFAULT_INITIAL_BUFFER_SIZE; }\n if (sortKeys === void 0) { sortKeys = false; }\n if (forceFloat32 === void 0) { forceFloat32 = false; }\n if (ignoreUndefined === void 0) { ignoreUndefined = false; }\n if (forceIntegerToFloat === void 0) { forceIntegerToFloat = false; }\n this.extensionCodec = extensionCodec;\n this.context = context;\n this.maxDepth = maxDepth;\n this.initialBufferSize = initialBufferSize;\n this.sortKeys = sortKeys;\n this.forceFloat32 = forceFloat32;\n this.ignoreUndefined = ignoreUndefined;\n this.forceIntegerToFloat = forceIntegerToFloat;\n this.pos = 0;\n this.view = new DataView(new ArrayBuffer(this.initialBufferSize));\n this.bytes = new Uint8Array(this.view.buffer);\n }\n Encoder.prototype.getUint8Array = function () {\n return this.bytes.subarray(0, this.pos);\n };\n Encoder.prototype.reinitializeState = function () {\n this.pos = 0;\n };\n Encoder.prototype.encode = function (object) {\n this.reinitializeState();\n this.doEncode(object, 1);\n return this.getUint8Array();\n };\n Encoder.prototype.doEncode = function (object, depth) {\n if (depth > this.maxDepth) {\n throw new Error(\"Too deep objects in depth \" + depth);\n }\n if (object == null) {\n this.encodeNil();\n }\n else if (typeof object === \"boolean\") {\n this.encodeBoolean(object);\n }\n else if (typeof object === \"number\") {\n this.encodeNumber(object);\n }\n else if (typeof object === \"string\") {\n this.encodeString(object);\n }\n else {\n this.encodeObject(object, depth);\n }\n };\n Encoder.prototype.ensureBufferSizeToWrite = function (sizeToWrite) {\n var requiredSize = this.pos + sizeToWrite;\n if (this.view.byteLength < requiredSize) {\n this.resizeBuffer(requiredSize * 2);\n }\n };\n Encoder.prototype.resizeBuffer = function (newSize) {\n var newBuffer = new ArrayBuffer(newSize);\n var newBytes = new Uint8Array(newBuffer);\n var newView = new DataView(newBuffer);\n newBytes.set(this.bytes);\n this.view = newView;\n this.bytes = newBytes;\n };\n Encoder.prototype.encodeNil = function () {\n this.writeU8(0xc0);\n };\n Encoder.prototype.encodeBoolean = function (object) {\n if (object === false) {\n this.writeU8(0xc2);\n }\n else {\n this.writeU8(0xc3);\n }\n };\n Encoder.prototype.encodeNumber = function (object) {\n if (Number.isSafeInteger(object) && !this.forceIntegerToFloat) {\n if (object >= 0) {\n if (object < 0x80) {\n // positive fixint\n this.writeU8(object);\n }\n else if (object < 0x100) {\n // uint 8\n this.writeU8(0xcc);\n this.writeU8(object);\n }\n else if (object < 0x10000) {\n // uint 16\n this.writeU8(0xcd);\n this.writeU16(object);\n }\n else if (object < 0x100000000) {\n // uint 32\n this.writeU8(0xce);\n this.writeU32(object);\n }\n else {\n // uint 64\n this.writeU8(0xcf);\n this.writeU64(object);\n }\n }\n else {\n if (object >= -0x20) {\n // negative fixint\n this.writeU8(0xe0 | (object + 0x20));\n }\n else if (object >= -0x80) {\n // int 8\n this.writeU8(0xd0);\n this.writeI8(object);\n }\n else if (object >= -0x8000) {\n // int 16\n this.writeU8(0xd1);\n this.writeI16(object);\n }\n else if (object >= -0x80000000) {\n // int 32\n this.writeU8(0xd2);\n this.writeI32(object);\n }\n else {\n // int 64\n this.writeU8(0xd3);\n this.writeI64(object);\n }\n }\n }\n else {\n // non-integer numbers\n if (this.forceFloat32) {\n // float 32\n this.writeU8(0xca);\n this.writeF32(object);\n }\n else {\n // float 64\n this.writeU8(0xcb);\n this.writeF64(object);\n }\n }\n };\n Encoder.prototype.writeStringHeader = function (byteLength) {\n if (byteLength < 32) {\n // fixstr\n this.writeU8(0xa0 + byteLength);\n }\n else if (byteLength < 0x100) {\n // str 8\n this.writeU8(0xd9);\n this.writeU8(byteLength);\n }\n else if (byteLength < 0x10000) {\n // str 16\n this.writeU8(0xda);\n this.writeU16(byteLength);\n }\n else if (byteLength < 0x100000000) {\n // str 32\n this.writeU8(0xdb);\n this.writeU32(byteLength);\n }\n else {\n throw new Error(\"Too long string: \" + byteLength + \" bytes in UTF-8\");\n }\n };\n Encoder.prototype.encodeString = function (object) {\n var maxHeaderSize = 1 + 4;\n var strLength = object.length;\n if (strLength > TEXT_ENCODER_THRESHOLD) {\n var byteLength = utf8Count(object);\n this.ensureBufferSizeToWrite(maxHeaderSize + byteLength);\n this.writeStringHeader(byteLength);\n utf8EncodeTE(object, this.bytes, this.pos);\n this.pos += byteLength;\n }\n else {\n var byteLength = utf8Count(object);\n this.ensureBufferSizeToWrite(maxHeaderSize + byteLength);\n this.writeStringHeader(byteLength);\n utf8EncodeJs(object, this.bytes, this.pos);\n this.pos += byteLength;\n }\n };\n Encoder.prototype.encodeObject = function (object, depth) {\n // try to encode objects with custom codec first of non-primitives\n var ext = this.extensionCodec.tryToEncode(object, this.context);\n if (ext != null) {\n this.encodeExtension(ext);\n }\n else if (Array.isArray(object)) {\n this.encodeArray(object, depth);\n }\n else if (ArrayBuffer.isView(object)) {\n this.encodeBinary(object);\n }\n else if (typeof object === \"object\") {\n this.encodeMap(object, depth);\n }\n else {\n // symbol, function and other special object come here unless extensionCodec handles them.\n throw new Error(\"Unrecognized object: \" + Object.prototype.toString.apply(object));\n }\n };\n Encoder.prototype.encodeBinary = function (object) {\n var size = object.byteLength;\n if (size < 0x100) {\n // bin 8\n this.writeU8(0xc4);\n this.writeU8(size);\n }\n else if (size < 0x10000) {\n // bin 16\n this.writeU8(0xc5);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // bin 32\n this.writeU8(0xc6);\n this.writeU32(size);\n }\n else {\n throw new Error(\"Too large binary: \" + size);\n }\n var bytes = ensureUint8Array(object);\n this.writeU8a(bytes);\n };\n Encoder.prototype.encodeArray = function (object, depth) {\n var size = object.length;\n if (size < 16) {\n // fixarray\n this.writeU8(0x90 + size);\n }\n else if (size < 0x10000) {\n // array 16\n this.writeU8(0xdc);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // array 32\n this.writeU8(0xdd);\n this.writeU32(size);\n }\n else {\n throw new Error(\"Too large array: \" + size);\n }\n for (var _i = 0, object_1 = object; _i < object_1.length; _i++) {\n var item = object_1[_i];\n this.doEncode(item, depth + 1);\n }\n };\n Encoder.prototype.countWithoutUndefined = function (object, keys) {\n var count = 0;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (object[key] !== undefined) {\n count++;\n }\n }\n return count;\n };\n Encoder.prototype.encodeMap = function (object, depth) {\n var keys = Object.keys(object);\n if (this.sortKeys) {\n keys.sort();\n }\n var size = this.ignoreUndefined ? this.countWithoutUndefined(object, keys) : keys.length;\n if (size < 16) {\n // fixmap\n this.writeU8(0x80 + size);\n }\n else if (size < 0x10000) {\n // map 16\n this.writeU8(0xde);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // map 32\n this.writeU8(0xdf);\n this.writeU32(size);\n }\n else {\n throw new Error(\"Too large map object: \" + size);\n }\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var value = object[key];\n if (!(this.ignoreUndefined && value === undefined)) {\n this.encodeString(key);\n this.doEncode(value, depth + 1);\n }\n }\n };\n Encoder.prototype.encodeExtension = function (ext) {\n var size = ext.data.length;\n if (size === 1) {\n // fixext 1\n this.writeU8(0xd4);\n }\n else if (size === 2) {\n // fixext 2\n this.writeU8(0xd5);\n }\n else if (size === 4) {\n // fixext 4\n this.writeU8(0xd6);\n }\n else if (size === 8) {\n // fixext 8\n this.writeU8(0xd7);\n }\n else if (size === 16) {\n // fixext 16\n this.writeU8(0xd8);\n }\n else if (size < 0x100) {\n // ext 8\n this.writeU8(0xc7);\n this.writeU8(size);\n }\n else if (size < 0x10000) {\n // ext 16\n this.writeU8(0xc8);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // ext 32\n this.writeU8(0xc9);\n this.writeU32(size);\n }\n else {\n throw new Error(\"Too large extension object: \" + size);\n }\n this.writeI8(ext.type);\n this.writeU8a(ext.data);\n };\n Encoder.prototype.writeU8 = function (value) {\n this.ensureBufferSizeToWrite(1);\n this.view.setUint8(this.pos, value);\n this.pos++;\n };\n Encoder.prototype.writeU8a = function (values) {\n var size = values.length;\n this.ensureBufferSizeToWrite(size);\n this.bytes.set(values, this.pos);\n this.pos += size;\n };\n Encoder.prototype.writeI8 = function (value) {\n this.ensureBufferSizeToWrite(1);\n this.view.setInt8(this.pos, value);\n this.pos++;\n };\n Encoder.prototype.writeU16 = function (value) {\n this.ensureBufferSizeToWrite(2);\n this.view.setUint16(this.pos, value);\n this.pos += 2;\n };\n Encoder.prototype.writeI16 = function (value) {\n this.ensureBufferSizeToWrite(2);\n this.view.setInt16(this.pos, value);\n this.pos += 2;\n };\n Encoder.prototype.writeU32 = function (value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setUint32(this.pos, value);\n this.pos += 4;\n };\n Encoder.prototype.writeI32 = function (value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setInt32(this.pos, value);\n this.pos += 4;\n };\n Encoder.prototype.writeF32 = function (value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setFloat32(this.pos, value);\n this.pos += 4;\n };\n Encoder.prototype.writeF64 = function (value) {\n this.ensureBufferSizeToWrite(8);\n this.view.setFloat64(this.pos, value);\n this.pos += 8;\n };\n Encoder.prototype.writeU64 = function (value) {\n this.ensureBufferSizeToWrite(8);\n setUint64(this.view, this.pos, value);\n this.pos += 8;\n };\n Encoder.prototype.writeI64 = function (value) {\n this.ensureBufferSizeToWrite(8);\n setInt64(this.view, this.pos, value);\n this.pos += 8;\n };\n return Encoder;\n}());\nexport { Encoder };\n//# sourceMappingURL=Encoder.mjs.map","export function prettyByte(byte) {\n return (byte < 0 ? \"-\" : \"\") + \"0x\" + Math.abs(byte).toString(16).padStart(2, \"0\");\n}\n//# sourceMappingURL=prettyByte.mjs.map","import { utf8DecodeJs } from \"./utils/utf8.mjs\";\nvar DEFAULT_MAX_KEY_LENGTH = 16;\nvar DEFAULT_MAX_LENGTH_PER_KEY = 16;\nvar CachedKeyDecoder = /** @class */ (function () {\n function CachedKeyDecoder(maxKeyLength, maxLengthPerKey) {\n if (maxKeyLength === void 0) { maxKeyLength = DEFAULT_MAX_KEY_LENGTH; }\n if (maxLengthPerKey === void 0) { maxLengthPerKey = DEFAULT_MAX_LENGTH_PER_KEY; }\n this.maxKeyLength = maxKeyLength;\n this.maxLengthPerKey = maxLengthPerKey;\n this.hit = 0;\n this.miss = 0;\n // avoid `new Array(N)`, which makes a sparse array,\n // because a sparse array is typically slower than a non-sparse array.\n this.caches = [];\n for (var i = 0; i < this.maxKeyLength; i++) {\n this.caches.push([]);\n }\n }\n CachedKeyDecoder.prototype.canBeCached = function (byteLength) {\n return byteLength > 0 && byteLength <= this.maxKeyLength;\n };\n CachedKeyDecoder.prototype.find = function (bytes, inputOffset, byteLength) {\n var records = this.caches[byteLength - 1];\n FIND_CHUNK: for (var _i = 0, records_1 = records; _i < records_1.length; _i++) {\n var record = records_1[_i];\n var recordBytes = record.bytes;\n for (var j = 0; j < byteLength; j++) {\n if (recordBytes[j] !== bytes[inputOffset + j]) {\n continue FIND_CHUNK;\n }\n }\n return record.str;\n }\n return null;\n };\n CachedKeyDecoder.prototype.store = function (bytes, value) {\n var records = this.caches[bytes.length - 1];\n var record = { bytes: bytes, str: value };\n if (records.length >= this.maxLengthPerKey) {\n // `records` are full!\n // Set `record` to an arbitrary position.\n records[(Math.random() * records.length) | 0] = record;\n }\n else {\n records.push(record);\n }\n };\n CachedKeyDecoder.prototype.decode = function (bytes, inputOffset, byteLength) {\n var cachedValue = this.find(bytes, inputOffset, byteLength);\n if (cachedValue != null) {\n this.hit++;\n return cachedValue;\n }\n this.miss++;\n var str = utf8DecodeJs(bytes, inputOffset, byteLength);\n // Ensure to copy a slice of bytes because the byte may be NodeJS Buffer and Buffer#slice() returns a reference to its internal ArrayBuffer.\n var slicedCopyOfBytes = Uint8Array.prototype.slice.call(bytes, inputOffset, inputOffset + byteLength);\n this.store(slicedCopyOfBytes, str);\n return str;\n };\n return CachedKeyDecoder;\n}());\nexport { CachedKeyDecoder };\n//# sourceMappingURL=CachedKeyDecoder.mjs.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nimport { prettyByte } from \"./utils/prettyByte.mjs\";\nimport { ExtensionCodec } from \"./ExtensionCodec.mjs\";\nimport { getInt64, getUint64, UINT32_MAX } from \"./utils/int.mjs\";\nimport { utf8DecodeJs, TEXT_DECODER_THRESHOLD, utf8DecodeTD } from \"./utils/utf8.mjs\";\nimport { createDataView, ensureUint8Array } from \"./utils/typedArrays.mjs\";\nimport { CachedKeyDecoder } from \"./CachedKeyDecoder.mjs\";\nimport { DecodeError } from \"./DecodeError.mjs\";\nvar isValidMapKeyType = function (key) {\n var keyType = typeof key;\n return keyType === \"string\" || keyType === \"number\";\n};\nvar HEAD_BYTE_REQUIRED = -1;\nvar EMPTY_VIEW = new DataView(new ArrayBuffer(0));\nvar EMPTY_BYTES = new Uint8Array(EMPTY_VIEW.buffer);\n// IE11: Hack to support IE11.\n// IE11: Drop this hack and just use RangeError when IE11 is obsolete.\nexport var DataViewIndexOutOfBoundsError = (function () {\n try {\n // IE11: The spec says it should throw RangeError,\n // IE11: but in IE11 it throws TypeError.\n EMPTY_VIEW.getInt8(0);\n }\n catch (e) {\n return e.constructor;\n }\n throw new Error(\"never reached\");\n})();\nvar MORE_DATA = new DataViewIndexOutOfBoundsError(\"Insufficient data\");\nvar sharedCachedKeyDecoder = new CachedKeyDecoder();\nvar Decoder = /** @class */ (function () {\n function Decoder(extensionCodec, context, maxStrLength, maxBinLength, maxArrayLength, maxMapLength, maxExtLength, keyDecoder) {\n if (extensionCodec === void 0) { extensionCodec = ExtensionCodec.defaultCodec; }\n if (context === void 0) { context = undefined; }\n if (maxStrLength === void 0) { maxStrLength = UINT32_MAX; }\n if (maxBinLength === void 0) { maxBinLength = UINT32_MAX; }\n if (maxArrayLength === void 0) { maxArrayLength = UINT32_MAX; }\n if (maxMapLength === void 0) { maxMapLength = UINT32_MAX; }\n if (maxExtLength === void 0) { maxExtLength = UINT32_MAX; }\n if (keyDecoder === void 0) { keyDecoder = sharedCachedKeyDecoder; }\n this.extensionCodec = extensionCodec;\n this.context = context;\n this.maxStrLength = maxStrLength;\n this.maxBinLength = maxBinLength;\n this.maxArrayLength = maxArrayLength;\n this.maxMapLength = maxMapLength;\n this.maxExtLength = maxExtLength;\n this.keyDecoder = keyDecoder;\n this.totalPos = 0;\n this.pos = 0;\n this.view = EMPTY_VIEW;\n this.bytes = EMPTY_BYTES;\n this.headByte = HEAD_BYTE_REQUIRED;\n this.stack = [];\n }\n Decoder.prototype.reinitializeState = function () {\n this.totalPos = 0;\n this.headByte = HEAD_BYTE_REQUIRED;\n this.stack.length = 0;\n // view, bytes, and pos will be re-initialized in setBuffer()\n };\n Decoder.prototype.setBuffer = function (buffer) {\n this.bytes = ensureUint8Array(buffer);\n this.view = createDataView(this.bytes);\n this.pos = 0;\n };\n Decoder.prototype.appendBuffer = function (buffer) {\n if (this.headByte === HEAD_BYTE_REQUIRED && !this.hasRemaining(1)) {\n this.setBuffer(buffer);\n }\n else {\n var remainingData = this.bytes.subarray(this.pos);\n var newData = ensureUint8Array(buffer);\n // concat remainingData + newData\n var newBuffer = new Uint8Array(remainingData.length + newData.length);\n newBuffer.set(remainingData);\n newBuffer.set(newData, remainingData.length);\n this.setBuffer(newBuffer);\n }\n };\n Decoder.prototype.hasRemaining = function (size) {\n return this.view.byteLength - this.pos >= size;\n };\n Decoder.prototype.createExtraByteError = function (posToShow) {\n var _a = this, view = _a.view, pos = _a.pos;\n return new RangeError(\"Extra \" + (view.byteLength - pos) + \" of \" + view.byteLength + \" byte(s) found at buffer[\" + posToShow + \"]\");\n };\n /**\n * @throws {DecodeError}\n * @throws {RangeError}\n */\n Decoder.prototype.decode = function (buffer) {\n this.reinitializeState();\n this.setBuffer(buffer);\n var object = this.doDecodeSync();\n if (this.hasRemaining(1)) {\n throw this.createExtraByteError(this.pos);\n }\n return object;\n };\n Decoder.prototype.decodeMulti = function (buffer) {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.reinitializeState();\n this.setBuffer(buffer);\n _a.label = 1;\n case 1:\n if (!this.hasRemaining(1)) return [3 /*break*/, 3];\n return [4 /*yield*/, this.doDecodeSync()];\n case 2:\n _a.sent();\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/];\n }\n });\n };\n Decoder.prototype.decodeAsync = function (stream) {\n var stream_1, stream_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function () {\n var decoded, object, buffer, e_1_1, _b, headByte, pos, totalPos;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n decoded = false;\n _c.label = 1;\n case 1:\n _c.trys.push([1, 6, 7, 12]);\n stream_1 = __asyncValues(stream);\n _c.label = 2;\n case 2: return [4 /*yield*/, stream_1.next()];\n case 3:\n if (!(stream_1_1 = _c.sent(), !stream_1_1.done)) return [3 /*break*/, 5];\n buffer = stream_1_1.value;\n if (decoded) {\n throw this.createExtraByteError(this.totalPos);\n }\n this.appendBuffer(buffer);\n try {\n object = this.doDecodeSync();\n decoded = true;\n }\n catch (e) {\n if (!(e instanceof DataViewIndexOutOfBoundsError)) {\n throw e; // rethrow\n }\n // fallthrough\n }\n this.totalPos += this.pos;\n _c.label = 4;\n case 4: return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 12];\n case 6:\n e_1_1 = _c.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 12];\n case 7:\n _c.trys.push([7, , 10, 11]);\n if (!(stream_1_1 && !stream_1_1.done && (_a = stream_1.return))) return [3 /*break*/, 9];\n return [4 /*yield*/, _a.call(stream_1)];\n case 8:\n _c.sent();\n _c.label = 9;\n case 9: return [3 /*break*/, 11];\n case 10:\n if (e_1) throw e_1.error;\n return [7 /*endfinally*/];\n case 11: return [7 /*endfinally*/];\n case 12:\n if (decoded) {\n if (this.hasRemaining(1)) {\n throw this.createExtraByteError(this.totalPos);\n }\n return [2 /*return*/, object];\n }\n _b = this, headByte = _b.headByte, pos = _b.pos, totalPos = _b.totalPos;\n throw new RangeError(\"Insufficient data in parsing \" + prettyByte(headByte) + \" at \" + totalPos + \" (\" + pos + \" in the current buffer)\");\n }\n });\n });\n };\n Decoder.prototype.decodeArrayStream = function (stream) {\n return this.decodeMultiAsync(stream, true);\n };\n Decoder.prototype.decodeStream = function (stream) {\n return this.decodeMultiAsync(stream, false);\n };\n Decoder.prototype.decodeMultiAsync = function (stream, isArray) {\n return __asyncGenerator(this, arguments, function decodeMultiAsync_1() {\n var isArrayHeaderRequired, arrayItemsLeft, stream_2, stream_2_1, buffer, e_2, e_3_1;\n var e_3, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n isArrayHeaderRequired = isArray;\n arrayItemsLeft = -1;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 13, 14, 19]);\n stream_2 = __asyncValues(stream);\n _b.label = 2;\n case 2: return [4 /*yield*/, __await(stream_2.next())];\n case 3:\n if (!(stream_2_1 = _b.sent(), !stream_2_1.done)) return [3 /*break*/, 12];\n buffer = stream_2_1.value;\n if (isArray && arrayItemsLeft === 0) {\n throw this.createExtraByteError(this.totalPos);\n }\n this.appendBuffer(buffer);\n if (isArrayHeaderRequired) {\n arrayItemsLeft = this.readArraySize();\n isArrayHeaderRequired = false;\n this.complete();\n }\n _b.label = 4;\n case 4:\n _b.trys.push([4, 9, , 10]);\n _b.label = 5;\n case 5:\n if (!true) return [3 /*break*/, 8];\n return [4 /*yield*/, __await(this.doDecodeSync())];\n case 6: return [4 /*yield*/, _b.sent()];\n case 7:\n _b.sent();\n if (--arrayItemsLeft === 0) {\n return [3 /*break*/, 8];\n }\n return [3 /*break*/, 5];\n case 8: return [3 /*break*/, 10];\n case 9:\n e_2 = _b.sent();\n if (!(e_2 instanceof DataViewIndexOutOfBoundsError)) {\n throw e_2; // rethrow\n }\n return [3 /*break*/, 10];\n case 10:\n this.totalPos += this.pos;\n _b.label = 11;\n case 11: return [3 /*break*/, 2];\n case 12: return [3 /*break*/, 19];\n case 13:\n e_3_1 = _b.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 19];\n case 14:\n _b.trys.push([14, , 17, 18]);\n if (!(stream_2_1 && !stream_2_1.done && (_a = stream_2.return))) return [3 /*break*/, 16];\n return [4 /*yield*/, __await(_a.call(stream_2))];\n case 15:\n _b.sent();\n _b.label = 16;\n case 16: return [3 /*break*/, 18];\n case 17:\n if (e_3) throw e_3.error;\n return [7 /*endfinally*/];\n case 18: return [7 /*endfinally*/];\n case 19: return [2 /*return*/];\n }\n });\n });\n };\n Decoder.prototype.doDecodeSync = function () {\n DECODE: while (true) {\n var headByte = this.readHeadByte();\n var object = void 0;\n if (headByte >= 0xe0) {\n // negative fixint (111x xxxx) 0xe0 - 0xff\n object = headByte - 0x100;\n }\n else if (headByte < 0xc0) {\n if (headByte < 0x80) {\n // positive fixint (0xxx xxxx) 0x00 - 0x7f\n object = headByte;\n }\n else if (headByte < 0x90) {\n // fixmap (1000 xxxx) 0x80 - 0x8f\n var size = headByte - 0x80;\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte < 0xa0) {\n // fixarray (1001 xxxx) 0x90 - 0x9f\n var size = headByte - 0x90;\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else {\n // fixstr (101x xxxx) 0xa0 - 0xbf\n var byteLength = headByte - 0xa0;\n object = this.decodeUtf8String(byteLength, 0);\n }\n }\n else if (headByte === 0xc0) {\n // nil\n object = null;\n }\n else if (headByte === 0xc2) {\n // false\n object = false;\n }\n else if (headByte === 0xc3) {\n // true\n object = true;\n }\n else if (headByte === 0xca) {\n // float 32\n object = this.readF32();\n }\n else if (headByte === 0xcb) {\n // float 64\n object = this.readF64();\n }\n else if (headByte === 0xcc) {\n // uint 8\n object = this.readU8();\n }\n else if (headByte === 0xcd) {\n // uint 16\n object = this.readU16();\n }\n else if (headByte === 0xce) {\n // uint 32\n object = this.readU32();\n }\n else if (headByte === 0xcf) {\n // uint 64\n object = this.readU64();\n }\n else if (headByte === 0xd0) {\n // int 8\n object = this.readI8();\n }\n else if (headByte === 0xd1) {\n // int 16\n object = this.readI16();\n }\n else if (headByte === 0xd2) {\n // int 32\n object = this.readI32();\n }\n else if (headByte === 0xd3) {\n // int 64\n object = this.readI64();\n }\n else if (headByte === 0xd9) {\n // str 8\n var byteLength = this.lookU8();\n object = this.decodeUtf8String(byteLength, 1);\n }\n else if (headByte === 0xda) {\n // str 16\n var byteLength = this.lookU16();\n object = this.decodeUtf8String(byteLength, 2);\n }\n else if (headByte === 0xdb) {\n // str 32\n var byteLength = this.lookU32();\n object = this.decodeUtf8String(byteLength, 4);\n }\n else if (headByte === 0xdc) {\n // array 16\n var size = this.readU16();\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else if (headByte === 0xdd) {\n // array 32\n var size = this.readU32();\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else if (headByte === 0xde) {\n // map 16\n var size = this.readU16();\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte === 0xdf) {\n // map 32\n var size = this.readU32();\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte === 0xc4) {\n // bin 8\n var size = this.lookU8();\n object = this.decodeBinary(size, 1);\n }\n else if (headByte === 0xc5) {\n // bin 16\n var size = this.lookU16();\n object = this.decodeBinary(size, 2);\n }\n else if (headByte === 0xc6) {\n // bin 32\n var size = this.lookU32();\n object = this.decodeBinary(size, 4);\n }\n else if (headByte === 0xd4) {\n // fixext 1\n object = this.decodeExtension(1, 0);\n }\n else if (headByte === 0xd5) {\n // fixext 2\n object = this.decodeExtension(2, 0);\n }\n else if (headByte === 0xd6) {\n // fixext 4\n object = this.decodeExtension(4, 0);\n }\n else if (headByte === 0xd7) {\n // fixext 8\n object = this.decodeExtension(8, 0);\n }\n else if (headByte === 0xd8) {\n // fixext 16\n object = this.decodeExtension(16, 0);\n }\n else if (headByte === 0xc7) {\n // ext 8\n var size = this.lookU8();\n object = this.decodeExtension(size, 1);\n }\n else if (headByte === 0xc8) {\n // ext 16\n var size = this.lookU16();\n object = this.decodeExtension(size, 2);\n }\n else if (headByte === 0xc9) {\n // ext 32\n var size = this.lookU32();\n object = this.decodeExtension(size, 4);\n }\n else {\n throw new DecodeError(\"Unrecognized type byte: \" + prettyByte(headByte));\n }\n this.complete();\n var stack = this.stack;\n while (stack.length > 0) {\n // arrays and maps\n var state = stack[stack.length - 1];\n if (state.type === 0 /* ARRAY */) {\n state.array[state.position] = object;\n state.position++;\n if (state.position === state.size) {\n stack.pop();\n object = state.array;\n }\n else {\n continue DECODE;\n }\n }\n else if (state.type === 1 /* MAP_KEY */) {\n if (!isValidMapKeyType(object)) {\n throw new DecodeError(\"The type of key must be string or number but \" + typeof object);\n }\n if (object === \"__proto__\") {\n throw new DecodeError(\"The key __proto__ is not allowed\");\n }\n state.key = object;\n state.type = 2 /* MAP_VALUE */;\n continue DECODE;\n }\n else {\n // it must be `state.type === State.MAP_VALUE` here\n state.map[state.key] = object;\n state.readCount++;\n if (state.readCount === state.size) {\n stack.pop();\n object = state.map;\n }\n else {\n state.key = null;\n state.type = 1 /* MAP_KEY */;\n continue DECODE;\n }\n }\n }\n return object;\n }\n };\n Decoder.prototype.readHeadByte = function () {\n if (this.headByte === HEAD_BYTE_REQUIRED) {\n this.headByte = this.readU8();\n // console.log(\"headByte\", prettyByte(this.headByte));\n }\n return this.headByte;\n };\n Decoder.prototype.complete = function () {\n this.headByte = HEAD_BYTE_REQUIRED;\n };\n Decoder.prototype.readArraySize = function () {\n var headByte = this.readHeadByte();\n switch (headByte) {\n case 0xdc:\n return this.readU16();\n case 0xdd:\n return this.readU32();\n default: {\n if (headByte < 0xa0) {\n return headByte - 0x90;\n }\n else {\n throw new DecodeError(\"Unrecognized array type byte: \" + prettyByte(headByte));\n }\n }\n }\n };\n Decoder.prototype.pushMapState = function (size) {\n if (size > this.maxMapLength) {\n throw new DecodeError(\"Max length exceeded: map length (\" + size + \") > maxMapLengthLength (\" + this.maxMapLength + \")\");\n }\n this.stack.push({\n type: 1 /* MAP_KEY */,\n size: size,\n key: null,\n readCount: 0,\n map: {},\n });\n };\n Decoder.prototype.pushArrayState = function (size) {\n if (size > this.maxArrayLength) {\n throw new DecodeError(\"Max length exceeded: array length (\" + size + \") > maxArrayLength (\" + this.maxArrayLength + \")\");\n }\n this.stack.push({\n type: 0 /* ARRAY */,\n size: size,\n array: new Array(size),\n position: 0,\n });\n };\n Decoder.prototype.decodeUtf8String = function (byteLength, headerOffset) {\n var _a;\n if (byteLength > this.maxStrLength) {\n throw new DecodeError(\"Max length exceeded: UTF-8 byte length (\" + byteLength + \") > maxStrLength (\" + this.maxStrLength + \")\");\n }\n if (this.bytes.byteLength < this.pos + headerOffset + byteLength) {\n throw MORE_DATA;\n }\n var offset = this.pos + headerOffset;\n var object;\n if (this.stateIsMapKey() && ((_a = this.keyDecoder) === null || _a === void 0 ? void 0 : _a.canBeCached(byteLength))) {\n object = this.keyDecoder.decode(this.bytes, offset, byteLength);\n }\n else if (byteLength > TEXT_DECODER_THRESHOLD) {\n object = utf8DecodeTD(this.bytes, offset, byteLength);\n }\n else {\n object = utf8DecodeJs(this.bytes, offset, byteLength);\n }\n this.pos += headerOffset + byteLength;\n return object;\n };\n Decoder.prototype.stateIsMapKey = function () {\n if (this.stack.length > 0) {\n var state = this.stack[this.stack.length - 1];\n return state.type === 1 /* MAP_KEY */;\n }\n return false;\n };\n Decoder.prototype.decodeBinary = function (byteLength, headOffset) {\n if (byteLength > this.maxBinLength) {\n throw new DecodeError(\"Max length exceeded: bin length (\" + byteLength + \") > maxBinLength (\" + this.maxBinLength + \")\");\n }\n if (!this.hasRemaining(byteLength + headOffset)) {\n throw MORE_DATA;\n }\n var offset = this.pos + headOffset;\n var object = this.bytes.subarray(offset, offset + byteLength);\n this.pos += headOffset + byteLength;\n return object;\n };\n Decoder.prototype.decodeExtension = function (size, headOffset) {\n if (size > this.maxExtLength) {\n throw new DecodeError(\"Max length exceeded: ext length (\" + size + \") > maxExtLength (\" + this.maxExtLength + \")\");\n }\n var extType = this.view.getInt8(this.pos + headOffset);\n var data = this.decodeBinary(size, headOffset + 1 /* extType */);\n return this.extensionCodec.decode(data, extType, this.context);\n };\n Decoder.prototype.lookU8 = function () {\n return this.view.getUint8(this.pos);\n };\n Decoder.prototype.lookU16 = function () {\n return this.view.getUint16(this.pos);\n };\n Decoder.prototype.lookU32 = function () {\n return this.view.getUint32(this.pos);\n };\n Decoder.prototype.readU8 = function () {\n var value = this.view.getUint8(this.pos);\n this.pos++;\n return value;\n };\n Decoder.prototype.readI8 = function () {\n var value = this.view.getInt8(this.pos);\n this.pos++;\n return value;\n };\n Decoder.prototype.readU16 = function () {\n var value = this.view.getUint16(this.pos);\n this.pos += 2;\n return value;\n };\n Decoder.prototype.readI16 = function () {\n var value = this.view.getInt16(this.pos);\n this.pos += 2;\n return value;\n };\n Decoder.prototype.readU32 = function () {\n var value = this.view.getUint32(this.pos);\n this.pos += 4;\n return value;\n };\n Decoder.prototype.readI32 = function () {\n var value = this.view.getInt32(this.pos);\n this.pos += 4;\n return value;\n };\n Decoder.prototype.readU64 = function () {\n var value = getUint64(this.view, this.pos);\n this.pos += 8;\n return value;\n };\n Decoder.prototype.readI64 = function () {\n var value = getInt64(this.view, this.pos);\n this.pos += 8;\n return value;\n };\n Decoder.prototype.readF32 = function () {\n var value = this.view.getFloat32(this.pos);\n this.pos += 4;\n return value;\n };\n Decoder.prototype.readF64 = function () {\n var value = this.view.getFloat64(this.pos);\n this.pos += 8;\n return value;\n };\n return Decoder;\n}());\nexport { Decoder };\n//# sourceMappingURL=Decoder.mjs.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\r\n// Not exported from index.\r\n/** @private */\r\nexport class BinaryMessageFormat {\r\n\r\n // The length prefix of binary messages is encoded as VarInt. Read the comment in\r\n // the BinaryMessageParser.TryParseMessage for details.\r\n\r\n public static write(output: Uint8Array): ArrayBuffer {\r\n let size = output.byteLength || output.length;\r\n const lenBuffer = [];\r\n do {\r\n let sizePart = size & 0x7f;\r\n size = size >> 7;\r\n if (size > 0) {\r\n sizePart |= 0x80;\r\n }\r\n lenBuffer.push(sizePart);\r\n }\r\n while (size > 0);\r\n\r\n size = output.byteLength || output.length;\r\n\r\n const buffer = new Uint8Array(lenBuffer.length + size);\r\n buffer.set(lenBuffer, 0);\r\n buffer.set(output, lenBuffer.length);\r\n return buffer.buffer;\r\n }\r\n\r\n public static parse(input: ArrayBuffer): Uint8Array[] {\r\n const result: Uint8Array[] = [];\r\n const uint8Array = new Uint8Array(input);\r\n const maxLengthPrefixSize = 5;\r\n const numBitsToShift = [0, 7, 14, 21, 28 ];\r\n\r\n for (let offset = 0; offset < input.byteLength;) {\r\n let numBytes = 0;\r\n let size = 0;\r\n let byteRead;\r\n do {\r\n byteRead = uint8Array[offset + numBytes];\r\n size = size | ((byteRead & 0x7f) << (numBitsToShift[numBytes]));\r\n numBytes++;\r\n }\r\n while (numBytes < Math.min(maxLengthPrefixSize, input.byteLength - offset) && (byteRead & 0x80) !== 0);\r\n\r\n if ((byteRead & 0x80) !== 0 && numBytes < maxLengthPrefixSize) {\r\n throw new Error(\"Cannot read message size.\");\r\n }\r\n\r\n if (numBytes === maxLengthPrefixSize && byteRead > 7) {\r\n throw new Error(\"Messages bigger than 2GB are not supported.\");\r\n }\r\n\r\n if (uint8Array.byteLength >= (offset + numBytes + size)) {\r\n // IE does not support .slice() so use subarray\r\n result.push(uint8Array.slice\r\n ? uint8Array.slice(offset + numBytes, offset + numBytes + size)\r\n : uint8Array.subarray(offset + numBytes, offset + numBytes + size));\r\n } else {\r\n throw new Error(\"Incomplete message.\");\r\n }\r\n\r\n offset = offset + numBytes + size;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","// 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\r\nimport { Encoder, Decoder } from \"@msgpack/msgpack\";\r\n\r\nimport { MessagePackOptions } from \"./MessagePackOptions\";\r\n\r\nimport {\r\n CancelInvocationMessage, CompletionMessage, HubMessage, IHubProtocol, ILogger, InvocationMessage,\r\n LogLevel, MessageHeaders, MessageType, NullLogger, StreamInvocationMessage, StreamItemMessage, TransferFormat,\r\n} from \"@microsoft/signalr\";\r\n\r\nimport { BinaryMessageFormat } from \"./BinaryMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n\r\n// TypeDoc's @inheritDoc and @link don't work across modules :(\r\n\r\n// constant encoding of the ping message\r\n// see: https://github.com/aspnet/SignalR/blob/dev/specs/HubProtocol.md#ping-message-encoding-1\r\n// Don't use Uint8Array.from as IE does not support it\r\nconst SERIALIZED_PING_MESSAGE: Uint8Array = new Uint8Array([0x91, MessageType.Ping]);\r\n\r\n/** Implements the MessagePack Hub Protocol */\r\nexport class MessagePackHubProtocol implements IHubProtocol {\r\n /** The name of the protocol. This is used by SignalR to resolve the protocol between the client and server. */\r\n public readonly name: string = \"messagepack\";\r\n /** The version of the protocol. */\r\n public readonly version: number = 1;\r\n /** The TransferFormat of the protocol. */\r\n public readonly transferFormat: TransferFormat = TransferFormat.Binary;\r\n\r\n private readonly _errorResult = 1;\r\n private readonly _voidResult = 2;\r\n private readonly _nonVoidResult = 3;\r\n\r\n private readonly _encoder: Encoder;\r\n private readonly _decoder: Decoder;\r\n\r\n /**\r\n *\r\n * @param messagePackOptions MessagePack options passed to @msgpack/msgpack\r\n */\r\n constructor(messagePackOptions?: MessagePackOptions) {\r\n messagePackOptions = messagePackOptions || {};\r\n this._encoder = new Encoder(\r\n messagePackOptions.extensionCodec,\r\n messagePackOptions.context,\r\n messagePackOptions.maxDepth,\r\n messagePackOptions.initialBufferSize,\r\n messagePackOptions.sortKeys,\r\n messagePackOptions.forceFloat32,\r\n messagePackOptions.ignoreUndefined,\r\n messagePackOptions.forceIntegerToFloat,\r\n );\r\n\r\n this._decoder = new Decoder(\r\n messagePackOptions.extensionCodec,\r\n messagePackOptions.context,\r\n messagePackOptions.maxStrLength,\r\n messagePackOptions.maxBinLength,\r\n messagePackOptions.maxArrayLength,\r\n messagePackOptions.maxMapLength,\r\n messagePackOptions.maxExtLength,\r\n );\r\n }\r\n\r\n /** Creates an array of HubMessage objects from the specified serialized representation.\r\n *\r\n * @param {ArrayBuffer} input An ArrayBuffer 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 public parseMessages(input: ArrayBuffer, logger: ILogger): HubMessage[] {\r\n // The interface does allow \"string\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (!(isArrayBuffer(input))) {\r\n throw new Error(\"Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.\");\r\n }\r\n\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n\r\n const messages = BinaryMessageFormat.parse(input);\r\n\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = this._parseMessage(message, logger);\r\n // Can be null for an unknown message. Unknown message is logged in parseMessage\r\n if (parsedMessage) {\r\n hubMessages.push(parsedMessage);\r\n }\r\n }\r\n\r\n return hubMessages;\r\n }\r\n\r\n /** Writes the specified HubMessage to an ArrayBuffer and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {ArrayBuffer} An ArrayBuffer containing the serialized representation of the message.\r\n */\r\n public writeMessage(message: HubMessage): ArrayBuffer {\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n return this._writeInvocation(message as InvocationMessage);\r\n case MessageType.StreamInvocation:\r\n return this._writeStreamInvocation(message as StreamInvocationMessage);\r\n case MessageType.StreamItem:\r\n return this._writeStreamItem(message as StreamItemMessage);\r\n case MessageType.Completion:\r\n return this._writeCompletion(message as CompletionMessage);\r\n case MessageType.Ping:\r\n return BinaryMessageFormat.write(SERIALIZED_PING_MESSAGE);\r\n case MessageType.CancelInvocation:\r\n return this._writeCancelInvocation(message as CancelInvocationMessage);\r\n default:\r\n throw new Error(\"Invalid message type.\");\r\n }\r\n }\r\n\r\n private _parseMessage(input: Uint8Array, logger: ILogger): HubMessage | null {\r\n if (input.length === 0) {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n\r\n const properties = this._decoder.decode(input) as any;\r\n if (properties.length === 0 || !(properties instanceof Array)) {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n\r\n const messageType = properties[0] as MessageType;\r\n\r\n switch (messageType) {\r\n case MessageType.Invocation:\r\n return this._createInvocationMessage(this._readHeaders(properties), properties);\r\n case MessageType.StreamItem:\r\n return this._createStreamItemMessage(this._readHeaders(properties), properties);\r\n case MessageType.Completion:\r\n return this._createCompletionMessage(this._readHeaders(properties), properties);\r\n case MessageType.Ping:\r\n return this._createPingMessage(properties);\r\n case MessageType.Close:\r\n return this._createCloseMessage(properties);\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 '\" + messageType + \"' ignored.\");\r\n return null;\r\n }\r\n }\r\n\r\n private _createCloseMessage(properties: any[]): HubMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 2) {\r\n throw new Error(\"Invalid payload for Close message.\");\r\n }\r\n\r\n return {\r\n // Close messages have no headers.\r\n allowReconnect: properties.length >= 3 ? properties[2] : undefined,\r\n error: properties[1],\r\n type: MessageType.Close,\r\n } as HubMessage;\r\n }\r\n\r\n private _createPingMessage(properties: any[]): HubMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 1) {\r\n throw new Error(\"Invalid payload for Ping message.\");\r\n }\r\n\r\n return {\r\n // Ping messages have no headers.\r\n type: MessageType.Ping,\r\n } as HubMessage;\r\n }\r\n\r\n private _createInvocationMessage(headers: MessageHeaders, properties: any[]): InvocationMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 5) {\r\n throw new Error(\"Invalid payload for Invocation message.\");\r\n }\r\n\r\n const invocationId = properties[2] as string;\r\n if (invocationId) {\r\n return {\r\n arguments: properties[4],\r\n headers,\r\n invocationId,\r\n streamIds: [],\r\n target: properties[3] as string,\r\n type: MessageType.Invocation,\r\n };\r\n } else {\r\n return {\r\n arguments: properties[4],\r\n headers,\r\n streamIds: [],\r\n target: properties[3],\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n\r\n }\r\n\r\n private _createStreamItemMessage(headers: MessageHeaders, properties: any[]): StreamItemMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 4) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n\r\n return {\r\n headers,\r\n invocationId: properties[2],\r\n item: properties[3],\r\n type: MessageType.StreamItem,\r\n } as StreamItemMessage;\r\n }\r\n\r\n private _createCompletionMessage(headers: MessageHeaders, properties: any[]): CompletionMessage {\r\n // check minimum length to allow protocol to add items to the end of objects in future releases\r\n if (properties.length < 4) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n\r\n const resultKind = properties[3];\r\n\r\n if (resultKind !== this._voidResult && properties.length < 5) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n\r\n let error: string | undefined;\r\n let result: any;\r\n\r\n switch (resultKind) {\r\n case this._errorResult:\r\n error = properties[4];\r\n break;\r\n case this._nonVoidResult:\r\n result = properties[4];\r\n break;\r\n }\r\n\r\n const completionMessage: CompletionMessage = {\r\n error,\r\n headers,\r\n invocationId: properties[2],\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n\r\n return completionMessage;\r\n }\r\n\r\n private _writeInvocation(invocationMessage: InvocationMessage): ArrayBuffer {\r\n let payload: any;\r\n if (invocationMessage.streamIds) {\r\n payload = this._encoder.encode([MessageType.Invocation, invocationMessage.headers || {}, invocationMessage.invocationId || null,\r\n invocationMessage.target, invocationMessage.arguments, invocationMessage.streamIds]);\r\n } else {\r\n payload = this._encoder.encode([MessageType.Invocation, invocationMessage.headers || {}, invocationMessage.invocationId || null,\r\n invocationMessage.target, invocationMessage.arguments]);\r\n }\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private _writeStreamInvocation(streamInvocationMessage: StreamInvocationMessage): ArrayBuffer {\r\n let payload: any;\r\n if (streamInvocationMessage.streamIds) {\r\n payload = this._encoder.encode([MessageType.StreamInvocation, streamInvocationMessage.headers || {}, streamInvocationMessage.invocationId,\r\n streamInvocationMessage.target, streamInvocationMessage.arguments, streamInvocationMessage.streamIds]);\r\n } else {\r\n payload = this._encoder.encode([MessageType.StreamInvocation, streamInvocationMessage.headers || {}, streamInvocationMessage.invocationId,\r\n streamInvocationMessage.target, streamInvocationMessage.arguments]);\r\n }\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private _writeStreamItem(streamItemMessage: StreamItemMessage): ArrayBuffer {\r\n const payload = this._encoder.encode([MessageType.StreamItem, streamItemMessage.headers || {}, streamItemMessage.invocationId,\r\n streamItemMessage.item]);\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private _writeCompletion(completionMessage: CompletionMessage): ArrayBuffer {\r\n const resultKind = completionMessage.error ? this._errorResult : completionMessage.result ? this._nonVoidResult : this._voidResult;\r\n\r\n let payload: any;\r\n switch (resultKind) {\r\n case this._errorResult:\r\n payload = this._encoder.encode([MessageType.Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind, completionMessage.error]);\r\n break;\r\n case this._voidResult:\r\n payload = this._encoder.encode([MessageType.Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind]);\r\n break;\r\n case this._nonVoidResult:\r\n payload = this._encoder.encode([MessageType.Completion, completionMessage.headers || {}, completionMessage.invocationId, resultKind, completionMessage.result]);\r\n break;\r\n }\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private _writeCancelInvocation(cancelInvocationMessage: CancelInvocationMessage): ArrayBuffer {\r\n const payload = this._encoder.encode([MessageType.CancelInvocation, cancelInvocationMessage.headers || {}, cancelInvocationMessage.invocationId]);\r\n\r\n return BinaryMessageFormat.write(payload.slice());\r\n }\r\n\r\n private _readHeaders(properties: any): MessageHeaders {\r\n const headers: MessageHeaders = properties[1] as MessageHeaders;\r\n if (typeof headers !== \"object\") {\r\n throw new Error(\"Invalid headers.\");\r\n }\r\n return headers;\r\n }\r\n}\r\n","// 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\r\n// Copied from signalr/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val: any): val is ArrayBuffer {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n","// 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\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR Message Pack protocol library. */\r\nexport const VERSION = \"0.0.0-DEV_BUILD\";\r\n\r\nexport { MessagePackHubProtocol } from \"./MessagePackHubProtocol\";\r\n\r\nexport { MessagePackOptions } from \"./MessagePackOptions\";\r\n"]}
\ No newline at end of file
diff --git a/Server/wwwroot/src/RemoteControl/MessageSender.js b/Server/wwwroot/src/RemoteControl/MessageSender.js
index b102f104..480d72e5 100644
--- a/Server/wwwroot/src/RemoteControl/MessageSender.js
+++ b/Server/wwwroot/src/RemoteControl/MessageSender.js
@@ -106,13 +106,15 @@ export class MessageSender {
return ViewerApp.RtcSession.DataChannel && ViewerApp.RtcSession.DataChannel.readyState == "open";
}
SendToAgent(rtcSend, websocketSend) {
- var _a;
if (ViewerApp.RtcSession.DataChannel && ViewerApp.RtcSession.DataChannel.readyState == "open") {
rtcSend();
}
- else if ((_a = ViewerApp.ViewerHubConnection.Connection) === null || _a === void 0 ? void 0 : _a.connectionStarted) {
+ else if (ViewerApp.ViewerHubConnection.Connection) {
websocketSend();
}
+ else {
+ console.warn("No connection available.");
+ }
}
async SendToAgentAsync(rtcSend, websocketSend) {
if (this.IsWebRtcAvailable()) {
diff --git a/Server/wwwroot/src/RemoteControl/MessageSender.js.map b/Server/wwwroot/src/RemoteControl/MessageSender.js.map
index 2eb2f0b0..0c4ec8dd 100644
--- a/Server/wwwroot/src/RemoteControl/MessageSender.js.map
+++ b/Server/wwwroot/src/RemoteControl/MessageSender.js.map
@@ -1 +1 @@
-{"version":3,"file":"MessageSender.js","sourceRoot":"","sources":["MessageSender.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"MessageSender.js","sourceRoot":"","sources":["MessageSender.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/Server/wwwroot/src/RemoteControl/MessageSender.ts b/Server/wwwroot/src/RemoteControl/MessageSender.ts
index a2f4917e..01e64645 100644
--- a/Server/wwwroot/src/RemoteControl/MessageSender.ts
+++ b/Server/wwwroot/src/RemoteControl/MessageSender.ts
@@ -158,9 +158,12 @@ export class MessageSender {
if (ViewerApp.RtcSession.DataChannel && ViewerApp.RtcSession.DataChannel.readyState == "open") {
rtcSend();
}
- else if (ViewerApp.ViewerHubConnection.Connection?.connectionStarted) {
+ else if (ViewerApp.ViewerHubConnection.Connection) {
websocketSend();
}
+ else {
+ console.warn("No connection available.");
+ }
}
private async SendToAgentAsync(rtcSend: () => Promise, websocketSend: () => Promise) {
diff --git a/Server/wwwroot/src/RemoteControl/Models/HubConnection.ts b/Server/wwwroot/src/RemoteControl/Models/HubConnection.ts
index 45cb8e89..7ca583d3 100644
--- a/Server/wwwroot/src/RemoteControl/Models/HubConnection.ts
+++ b/Server/wwwroot/src/RemoteControl/Models/HubConnection.ts
@@ -1,7 +1,7 @@
export type HubConnection = {
start: () => Promise;
+ onclose: (callback: () => any) => any;
connectionStarted: boolean;
- closedCallbacks: any[];
invoke: (...rest) => any;
stop: () => any;
}
diff --git a/Server/wwwroot/src/RemoteControl/RtcSession.js b/Server/wwwroot/src/RemoteControl/RtcSession.js
index 0a3ecc69..86955712 100644
--- a/Server/wwwroot/src/RemoteControl/RtcSession.js
+++ b/Server/wwwroot/src/RemoteControl/RtcSession.js
@@ -28,7 +28,7 @@ export class RtcSession {
UI.VideoScreenViewer.setAttribute("hidden", "hidden");
};
this.DataChannel.onerror = (ev) => {
- console.log("Data channel error.", ev.error);
+ console.log("Data channel error.", ev);
UI.ConnectionP2PIcon.style.display = "none";
UI.ConnectionRelayedIcon.style.display = "unset";
UI.StreamVideoButton.setAttribute("hidden", "hidden");
diff --git a/Server/wwwroot/src/RemoteControl/RtcSession.js.map b/Server/wwwroot/src/RemoteControl/RtcSession.js.map
index 05387337..bae9b7c5 100644
--- a/Server/wwwroot/src/RemoteControl/RtcSession.js.map
+++ b/Server/wwwroot/src/RemoteControl/RtcSession.js.map
@@ -1 +1 @@
-{"version":3,"file":"RtcSession.js","sourceRoot":"","sources":["RtcSession.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"RtcSession.js","sourceRoot":"","sources":["RtcSession.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/Server/wwwroot/src/RemoteControl/RtcSession.ts b/Server/wwwroot/src/RemoteControl/RtcSession.ts
index 9d919412..949ad019 100644
--- a/Server/wwwroot/src/RemoteControl/RtcSession.ts
+++ b/Server/wwwroot/src/RemoteControl/RtcSession.ts
@@ -34,7 +34,7 @@ export class RtcSession {
UI.VideoScreenViewer.setAttribute("hidden", "hidden");
};
this.DataChannel.onerror = (ev) => {
- console.log("Data channel error.", ev.error);
+ console.log("Data channel error.", ev);
UI.ConnectionP2PIcon.style.display = "none";
UI.ConnectionRelayedIcon.style.display = "unset";
diff --git a/Server/wwwroot/src/RemoteControl/ViewerHubConnection.js b/Server/wwwroot/src/RemoteControl/ViewerHubConnection.js
index 1f845e8b..99f27cff 100644
--- a/Server/wwwroot/src/RemoteControl/ViewerHubConnection.js
+++ b/Server/wwwroot/src/RemoteControl/ViewerHubConnection.js
@@ -23,7 +23,7 @@ export class ViewerHubConnection {
UI.StatusMessage.innerHTML = `Connection error: ${err.message}`;
UI.ToggleConnectUI(true);
});
- this.Connection.closedCallbacks.push((ev) => {
+ this.Connection.onclose(() => {
UI.ToggleConnectUI(true);
});
ViewerApp.ClipboardWatcher.WatchClipboard();
diff --git a/Server/wwwroot/src/RemoteControl/ViewerHubConnection.js.map b/Server/wwwroot/src/RemoteControl/ViewerHubConnection.js.map
index 6d4fbd80..77ac2a64 100644
--- a/Server/wwwroot/src/RemoteControl/ViewerHubConnection.js.map
+++ b/Server/wwwroot/src/RemoteControl/ViewerHubConnection.js.map
@@ -1 +1 @@
-{"version":3,"file":"ViewerHubConnection.js","sourceRoot":"","sources":["ViewerHubConnection.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"ViewerHubConnection.js","sourceRoot":"","sources":["ViewerHubConnection.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/Server/wwwroot/src/RemoteControl/ViewerHubConnection.ts b/Server/wwwroot/src/RemoteControl/ViewerHubConnection.ts
index c86b28f2..da4dca3a 100644
--- a/Server/wwwroot/src/RemoteControl/ViewerHubConnection.ts
+++ b/Server/wwwroot/src/RemoteControl/ViewerHubConnection.ts
@@ -35,7 +35,8 @@ export class ViewerHubConnection {
UI.StatusMessage.innerHTML = `Connection error: ${err.message}`;
UI.ToggleConnectUI(true);
});
- this.Connection.closedCallbacks.push((ev) => {
+
+ this.Connection.onclose(() => {
UI.ToggleConnectUI(true);
});
diff --git a/Shared/Shared.csproj b/Shared/Shared.csproj
index f1698e10..02041ecd 100644
--- a/Shared/Shared.csproj
+++ b/Shared/Shared.csproj
@@ -1,7 +1,7 @@
- net5.0
+ net6.0
true
Remotely_Shared
AnyCPU;x64;x86
@@ -10,10 +10,10 @@
-
+
-
+
diff --git a/Tests.LoadTester/Tests.LoadTester.csproj b/Tests.LoadTester/Tests.LoadTester.csproj
index 6619863e..d306c8f8 100644
--- a/Tests.LoadTester/Tests.LoadTester.csproj
+++ b/Tests.LoadTester/Tests.LoadTester.csproj
@@ -2,13 +2,13 @@
Exe
- net5.0-windows
+ net6.0-windows
Remotely.Tests.LoadTester
Remotely.Tests.LoadTester
-
+
diff --git a/Tests/IoCActivator.cs b/Tests/IoCActivator.cs
index 00ad6077..67a8427f 100644
--- a/Tests/IoCActivator.cs
+++ b/Tests/IoCActivator.cs
@@ -3,7 +3,9 @@ using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Primitives;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Remotely.Agent.Interfaces;
using Remotely.Agent.Services;
@@ -13,6 +15,8 @@ using Remotely.Server.Services;
using Remotely.Shared.Models;
using Remotely.Shared.Utilities;
using System;
+using System.Collections.Generic;
+using System.Configuration;
namespace Remotely.Tests
{
@@ -28,7 +32,14 @@ namespace Remotely.Tests
{
builder = WebHost.CreateDefaultBuilder()
.UseStartup()
- .CaptureStartupErrors(true);
+ .CaptureStartupErrors(true)
+ .ConfigureAppConfiguration(config =>
+ {
+ config.AddInMemoryCollection(new Dictionary()
+ {
+ ["ApplicationOptions:DBProvider"] = "InMemory"
+ });
+ });
builder.Build();
}
@@ -46,13 +57,7 @@ namespace Remotely.Tests
{
public void ConfigureServices(IServiceCollection services)
{
- services.AddDbContextFactory(options =>
- {
- options.UseInMemoryDatabase("Remotely");
- });
-
- services.AddScoped(p =>
- p.GetRequiredService>().CreateDbContext());
+ services.AddDbContext();
services.AddIdentity(options => options.Stores.MaxLengthForKeys = 128)
.AddEntityFrameworkStores()
@@ -80,5 +85,4 @@ namespace Remotely.Tests
}
}
-
}
diff --git a/Tests/TestData.cs b/Tests/TestData.cs
index 8b743434..8f27718f 100644
--- a/Tests/TestData.cs
+++ b/Tests/TestData.cs
@@ -65,6 +65,11 @@ namespace Remotely.Tests
dbContext.DeviceGroups.RemoveRange(dbContext.DeviceGroups.ToList());
dbContext.Users.RemoveRange(dbContext.Users.ToList());
dbContext.Organizations.RemoveRange(dbContext.Organizations.ToList());
+ dbContext.Alerts.RemoveRange(dbContext.Alerts.ToList());
+ dbContext.ScriptResults.RemoveRange(dbContext.ScriptResults.ToList());
+ dbContext.ScriptRuns.RemoveRange(dbContext.ScriptRuns.ToList());
+ dbContext.ScriptSchedules.RemoveRange(dbContext.ScriptSchedules.ToList());
+ dbContext.SavedScripts.RemoveRange(dbContext.SavedScripts.ToList());
dbContext.SaveChanges();
}
diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj
index e754d163..607ee583 100644
--- a/Tests/Tests.csproj
+++ b/Tests/Tests.csproj
@@ -1,7 +1,7 @@
- net5.0-windows
+ net6.0-windows
false
@@ -23,12 +23,12 @@
-
-
-
+
+
+
-
-
+
+
diff --git a/Utilities/Publish.ps1 b/Utilities/Publish.ps1
index ea183974..74c7a584 100644
--- a/Utilities/Publish.ps1
+++ b/Utilities/Publish.ps1
@@ -107,25 +107,25 @@ else {
# Clear publish folders.
-if ((Test-Path -Path "$Root\Agent\bin\Release\net5.0\win10-x64\publish") -eq $true) {
- Get-ChildItem -Path "$Root\Agent\bin\Release\net5.0\win10-x64\publish" | Remove-Item -Force -Recurse
+if ((Test-Path -Path "$Root\Agent\bin\Release\net6.0\win10-x64\publish") -eq $true) {
+ Get-ChildItem -Path "$Root\Agent\bin\Release\net6.0\win10-x64\publish" | Remove-Item -Force -Recurse
}
-if ((Test-Path -Path "$Root\Agent\bin\Release\net5.0\win10-x86\publish" ) -eq $true) {
- Get-ChildItem -Path "$Root\Agent\bin\Release\net5.0\win10-x86\publish" | Remove-Item -Force -Recurse
+if ((Test-Path -Path "$Root\Agent\bin\Release\net6.0\win10-x86\publish" ) -eq $true) {
+ Get-ChildItem -Path "$Root\Agent\bin\Release\net6.0\win10-x86\publish" | Remove-Item -Force -Recurse
}
-if ((Test-Path -Path "$Root\Agent\bin\Release\net5.0\linux-x64\publish") -eq $true) {
- Get-ChildItem -Path "$Root\Agent\bin\Release\net5.0\linux-x64\publish" | Remove-Item -Force -Recurse
+if ((Test-Path -Path "$Root\Agent\bin\Release\net6.0\linux-x64\publish") -eq $true) {
+ Get-ChildItem -Path "$Root\Agent\bin\Release\net6.0\linux-x64\publish" | Remove-Item -Force -Recurse
}
# Publish Core clients.
-dotnet publish /p:Version=$CurrentVersion /p:FileVersion=$CurrentVersion --runtime win10-x64 --configuration Release --output "$Root\Agent\bin\Release\net5.0\win10-x64\publish" "$Root\Agent"
-dotnet publish /p:Version=$CurrentVersion /p:FileVersion=$CurrentVersion --runtime linux-x64 --configuration Release --output "$Root\Agent\bin\Release\net5.0\linux-x64\publish" "$Root\Agent"
-dotnet publish /p:Version=$CurrentVersion /p:FileVersion=$CurrentVersion --runtime win10-x86 --configuration Release --output "$Root\Agent\bin\Release\net5.0\win10-x86\publish" "$Root\Agent"
+dotnet publish /p:Version=$CurrentVersion /p:FileVersion=$CurrentVersion --runtime win10-x64 --self-contained --configuration Release --output "$Root\Agent\bin\Release\net6.0\win10-x64\publish" "$Root\Agent"
+dotnet publish /p:Version=$CurrentVersion /p:FileVersion=$CurrentVersion --runtime linux-x64 --self-contained --configuration Release --output "$Root\Agent\bin\Release\net6.0\linux-x64\publish" "$Root\Agent"
+dotnet publish /p:Version=$CurrentVersion /p:FileVersion=$CurrentVersion --runtime win10-x86 --self-contained --configuration Release --output "$Root\Agent\bin\Release\net6.0\win10-x86\publish" "$Root\Agent"
-New-Item -Path "$Root\Agent\bin\Release\net5.0\win10-x64\publish\Desktop\" -ItemType Directory -Force
-New-Item -Path "$Root\Agent\bin\Release\net5.0\win10-x86\publish\Desktop\" -ItemType Directory -Force
-New-Item -Path "$Root\Agent\bin\Release\net5.0\linux-x64\publish\Desktop\" -ItemType Directory -Force
+New-Item -Path "$Root\Agent\bin\Release\net6.0\win10-x64\publish\Desktop\" -ItemType Directory -Force
+New-Item -Path "$Root\Agent\bin\Release\net6.0\win10-x86\publish\Desktop\" -ItemType Directory -Force
+New-Item -Path "$Root\Agent\bin\Release\net6.0\linux-x64\publish\Desktop\" -ItemType Directory -Force
# Publish Linux ScreenCaster
@@ -168,21 +168,21 @@ if ($SignAssemblies) {
}
# Compress Core clients.
-$PublishDir = "$Root\Agent\bin\Release\net5.0\win10-x64\publish"
+$PublishDir = "$Root\Agent\bin\Release\net6.0\win10-x64\publish"
Compress-Archive -Path "$PublishDir\*" -DestinationPath "$PublishDir\Remotely-Win10-x64.zip" -Force
while ((Test-Path -Path "$PublishDir\Remotely-Win10-x64.zip") -eq $false){
Start-Sleep -Seconds 1
}
Move-Item -Path "$PublishDir\Remotely-Win10-x64.zip" -Destination "$Root\Server\wwwroot\Content\Remotely-Win10-x64.zip" -Force
-$PublishDir = "$Root\Agent\bin\Release\net5.0\win10-x86\publish"
+$PublishDir = "$Root\Agent\bin\Release\net6.0\win10-x86\publish"
Compress-Archive -Path "$PublishDir\*" -DestinationPath "$PublishDir\Remotely-Win10-x86.zip" -Force
while ((Test-Path -Path "$PublishDir\Remotely-Win10-x86.zip") -eq $false){
Start-Sleep -Seconds 1
}
Move-Item -Path "$PublishDir\Remotely-Win10-x86.zip" -Destination "$Root\Server\wwwroot\Content\Remotely-Win10-x86.zip" -Force
-$PublishDir = "$Root\Agent\bin\Release\net5.0\linux-x64\publish"
+$PublishDir = "$Root\Agent\bin\Release\net6.0\linux-x64\publish"
Compress-Archive -Path "$PublishDir\*" -DestinationPath "$PublishDir\Remotely-Linux.zip" -Force
while ((Test-Path -Path "$PublishDir\Remotely-Linux.zip") -eq $false){
Start-Sleep -Seconds 1
@@ -196,7 +196,7 @@ if ($RID.Length -gt 0 -and $OutDir.Length -gt 0) {
New-Item -Path $OutDir -ItemType Directory
}
- dotnet publish /p:Version=$CurrentVersion /p:FileVersion=$CurrentVersion --runtime $RID --configuration Release --output $OutDir "$Root\Server\"
+ dotnet publish /p:Version=$CurrentVersion /p:FileVersion=$CurrentVersion --runtime $RID --self-contained --configuration Release --output $OutDir "$Root\Server\"
}
else {
Write-Host "`nSkipping server deployment. Params -outdir and -rid not specified." -ForegroundColor DarkYellow