diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6f841d731..4952c8c19 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -21,7 +21,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
- dotnet-version: 6.0.x
+ dotnet-version: 7.0.x
- name: Restore Dotnet tools
run: dotnet tool restore
@@ -36,7 +36,7 @@ jobs:
working-directory: src/
- name: Generate Open API documentation
- run: dotnet swagger tofile --output ./swagger.json AzureIoTHub.Portal.Server/bin/Debug/net6.0/AzureIoTHub.Portal.Server.dll v1
+ run: dotnet swagger tofile --output ./swagger.json AzureIoTHub.Portal.Server/bin/Debug/net7.0/AzureIoTHub.Portal.Server.dll v1
working-directory: src/
# Upload swagger docs to GitHub
@@ -47,7 +47,7 @@ jobs:
path: ./src/swagger.json
- name: Run unit tests
- run: dotnet test --no-build --verbosity normal --logger trx --collect:"XPlat Code Coverage" /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura AzureIoTHub.Portal.Tests.Unit/AzureIoTHub.Portal.Tests.Unit.csproj
+ run: dotnet test --no-build --verbosity normal --logger trx --collect:"XPlat Code Coverage" AzureIoTHub.Portal.sln
working-directory: src/
# Upload test results as artifact
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 3e76a4599..d778b1639 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -35,7 +35,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
- dotnet-version: 6.0.x
+ dotnet-version: 7.0.x
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
diff --git a/src/AzureIoTHub.Portal.Client/AzureIoTHub.Portal.Client.csproj b/src/AzureIoTHub.Portal.Client/AzureIoTHub.Portal.Client.csproj
index 5e8069e5a..940e1ecb9 100644
--- a/src/AzureIoTHub.Portal.Client/AzureIoTHub.Portal.Client.csproj
+++ b/src/AzureIoTHub.Portal.Client/AzureIoTHub.Portal.Client.csproj
@@ -1,63 +1,45 @@
- net6.0
+ net7.0
+ enable
+ enable
-
-
- $(NoWarn)
-
-
-
- $(NoWarn)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
-
+
+
+
+
+
+
diff --git a/src/AzureIoTHub.Portal.Client/Program.cs b/src/AzureIoTHub.Portal.Client/Program.cs
index 876b0bc62..6c358e56d 100644
--- a/src/AzureIoTHub.Portal.Client/Program.cs
+++ b/src/AzureIoTHub.Portal.Client/Program.cs
@@ -1,119 +1,105 @@
// Copyright (c) CGI France. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-namespace AzureIoTHub.Portal.Client
+using System.Net.Http.Json;
+using AzureIoTHub.Portal.Client;
+using AzureIoTHub.Portal.Client.Handlers;
+using AzureIoTHub.Portal.Client.Services;
+using AzureIoTHub.Portal.Models.v10;
+using AzureIoTHub.Portal.Settings;
+using Blazored.LocalStorage;
+using Blazored.Modal;
+using Microsoft.AspNetCore.Components.Web;
+using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
+using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
+using MudBlazor;
+using MudBlazor.Services;
+using Tewr.Blazor.FileReader;
+using Toolbelt.Blazor.Extensions.DependencyInjection;
+
+var builder = WebAssemblyHostBuilder.CreateDefault(args);
+
+builder.RootComponents.Add("#app");
+builder.RootComponents.Add("head::after");
+
+_ = builder.Services.AddTransient();
+
+_ = builder.Services.AddHttpClient("api", (sp, client) =>
{
- using System;
- using System.Net.Http;
- using System.Net.Http.Json;
- using System.Threading.Tasks;
- using Services;
- using AzureIoTHub.Portal.Models.v10;
- using Settings;
- using Blazored.LocalStorage;
- using Blazored.Modal;
- using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
- using Handlers;
- using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
- using Microsoft.Extensions.DependencyInjection;
- using MudBlazor;
- using MudBlazor.Services;
- using Tewr.Blazor.FileReader;
- using Toolbelt.Blazor.Extensions.DependencyInjection;
-
- public static class Program
- {
- public static async Task Main(string[] args)
- {
- var builder = WebAssemblyHostBuilder.CreateDefault(args);
- builder.RootComponents.Add("#app");
-
- _ = builder.Services.AddTransient();
-
- _ = builder.Services.AddHttpClient("api", (sp, client) =>
- {
- client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress);
- client.DefaultRequestHeaders.Add("X-Version", "1.0");
- _ = client.EnableIntercept(sp);
- }).AddHttpMessageHandler()
- .AddHttpMessageHandler();
-
- _ = builder.Services.AddFileReaderService(o => o.UseWasmSharedBuffer = true);
-
- // Supply HttpClient instances that include access tokens when making requests to the server project
- _ = builder.Services.AddScoped(sp => sp.GetRequiredService().CreateClient("api"))
- .AddScoped();
-
- _ = builder.Services.AddBlazoredLocalStorage();
- _ = builder.Services.AddBlazoredModal();
- _ = builder.Services.AddMudServices(config =>
- {
- config.SnackbarConfiguration.PositionClass = Defaults.Classes.Position.BottomLeft;
- config.SnackbarConfiguration.PreventDuplicates = false;
- });
-
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddSingleton();
- _ = builder.Services.AddSingleton();
-
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
- _ = builder.Services.AddScoped();
-
- await ConfigureOidc(builder);
- await ConfigurePortalSettings(builder);
-
- // Enable loading bar
- builder.Services.AddLoadingBar(options =>
- {
- options.LoadingBarColor = "#D3E24A";
- });
- _ = builder.UseLoadingBar();
-
- await builder.Build().RunAsync();
- }
-
- private static async Task ConfigureOidc(WebAssemblyHostBuilder builder)
- {
- using var httpClient = new HttpClient() { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) };
- var settings = await httpClient.GetFromJsonAsync("api/settings/oidc");
-
- _ = builder.Services.AddOidcAuthentication(options =>
- {
- options.ProviderOptions.Authority = settings.Authority;
- options.ProviderOptions.MetadataUrl = settings.MetadataUrl.ToString();
- options.ProviderOptions.ClientId = settings.ClientId;
-
- options.ProviderOptions.DefaultScopes.Add(settings.Scope);
- options.ProviderOptions.ResponseType = "code";
- });
-
- _ = builder.Services.Configure(opts =>
- {
- opts.ClientId = settings.ClientId;
- opts.MetadataUrl = settings.MetadataUrl;
- opts.Authority = settings.Authority;
- opts.Scope = settings.Scope;
- });
- }
-
- private static async Task ConfigurePortalSettings(WebAssemblyHostBuilder builder)
- {
- using var httpClient = new HttpClient() { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) };
- var settings = await httpClient.GetFromJsonAsync("api/settings/portal");
-
- _ = builder.Services.AddSingleton(settings);
- }
-
- }
+ client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress);
+ client.DefaultRequestHeaders.Add("X-Version", "1.0");
+}).AddHttpMessageHandler()
+ .AddHttpMessageHandler();
+
+_ = builder.Services.AddScoped(sp => sp.GetRequiredService().CreateClient("api"));
+
+using var httpClient = new HttpClient() { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) };
+var settings = await httpClient.GetFromJsonAsync("api/settings/oidc");
+
+_ = builder.Services.Configure(opts =>
+{
+ opts.ClientId = settings.ClientId;
+ opts.MetadataUrl = settings.MetadataUrl;
+ opts.Authority = settings.Authority;
+ opts.Scope = settings.Scope;
+});
+
+builder.Services.AddOidcAuthentication(options =>
+{
+ options.ProviderOptions.Authority = settings.Authority;
+ options.ProviderOptions.MetadataUrl = settings.MetadataUrl.ToString();
+ options.ProviderOptions.ClientId = settings.ClientId;
+ options.ProviderOptions.ResponseType = "code";
+
+ options.ProviderOptions.DefaultScopes.Add(settings.Scope);
+});
+
+builder.Services.AddApiAuthorization();
+
+_ = builder.Services.AddFileReaderService(o => o.UseWasmSharedBuffer = true);
+
+_ = builder.Services.AddBlazoredLocalStorage();
+_ = builder.Services.AddBlazoredModal();
+_ = builder.Services.AddMudServices(config =>
+{
+ config.SnackbarConfiguration.PositionClass = Defaults.Classes.Position.BottomLeft;
+ config.SnackbarConfiguration.PreventDuplicates = false;
+});
+
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddSingleton();
+_ = builder.Services.AddSingleton();
+
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+_ = builder.Services.AddScoped();
+
+await ConfigurePortalSettings(builder);
+
+// Enable loading bar
+builder.Services.AddLoadingBar(options =>
+{
+ options.LoadingBarColor = "#D3E24A";
+});
+_ = builder.UseLoadingBar();
+
+await builder.Build().RunAsync();
+
+static async Task ConfigurePortalSettings(WebAssemblyHostBuilder builder)
+{
+ using var httpClient = new HttpClient() { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) };
+ var settings = await httpClient.GetFromJsonAsync("api/settings/portal");
+
+ _ = builder.Services.AddSingleton(settings);
}
diff --git a/src/AzureIoTHub.Portal.Client/Shared/MainLayout.razor b/src/AzureIoTHub.Portal.Client/Shared/MainLayout.razor
index fe5f4e77d..114ecb62d 100644
--- a/src/AzureIoTHub.Portal.Client/Shared/MainLayout.razor
+++ b/src/AzureIoTHub.Portal.Client/Shared/MainLayout.razor
@@ -1,7 +1,6 @@
@inherits LayoutComponentBase
@using AzureIoTHub.Portal.Models.v10
-@using Microsoft.AspNetCore.Components.Web.Extensions.Head
@inject PortalSettings Portal
@inject ILayoutService LayoutService
@@ -12,7 +11,7 @@
-
+@Portal.PortalName
diff --git a/src/AzureIoTHub.Portal.Client/Shared/RedirectToLogin.razor b/src/AzureIoTHub.Portal.Client/Shared/RedirectToLogin.razor
index 62db7206e..bd1d66924 100644
--- a/src/AzureIoTHub.Portal.Client/Shared/RedirectToLogin.razor
+++ b/src/AzureIoTHub.Portal.Client/Shared/RedirectToLogin.razor
@@ -1,8 +1,14 @@
@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
+@using Microsoft.Extensions.Options;
+
+@inject IOptionsSnapshot> Options
+
@code {
protected override void OnInitialized()
{
- Navigation.NavigateTo($"authentication/login?returnUrl={Uri.EscapeDataString(Navigation.Uri)}");
+ Navigation.NavigateToLogin(Options.Get(
+ Microsoft.Extensions.Options.Options.DefaultName)
+ .AuthenticationPaths.LogInPath);
}
}
diff --git a/src/AzureIoTHub.Portal.Client/assets/babel.config.json b/src/AzureIoTHub.Portal.Client/assets/babel.config.json
deleted file mode 100644
index d4b96717c..000000000
--- a/src/AzureIoTHub.Portal.Client/assets/babel.config.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "presets": [
- [
- "@babel/preset-env",
- { "targets": { "node": true } }
- ]
- ]
-}
diff --git a/src/AzureIoTHub.Portal.Client/assets/package-lock.json b/src/AzureIoTHub.Portal.Client/assets/package-lock.json
deleted file mode 100644
index b011759ba..000000000
--- a/src/AzureIoTHub.Portal.Client/assets/package-lock.json
+++ /dev/null
@@ -1,2307 +0,0 @@
-{
- "requires": true,
- "lockfileVersion": 1,
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
- "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
- "dev": true
- },
- "@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- }
- }
- },
- "@discoveryjs/json-ext": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
- "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
- "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.1.1",
- "espree": "^7.3.0",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.2.1",
- "js-yaml": "^3.13.1",
- "minimatch": "^3.0.4",
- "strip-json-comments": "^3.1.1"
- },
- "dependencies": {
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- }
- }
- },
- "@humanwhocodes/config-array": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
- "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.0",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
- }
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
- },
- "@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true
- },
- "@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true
- },
- "@jridgewell/source-map": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
- "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
- "dev": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
- "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/eslint": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz",
- "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==",
- "dev": true,
- "requires": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
- "@types/eslint-scope": {
- "version": "3.7.4",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
- "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
- "dev": true,
- "requires": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
- "@types/estree": {
- "version": "0.0.51",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
- "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
- "dev": true
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
- "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
- "dev": true
- },
- "@types/node": {
- "version": "18.6.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz",
- "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz",
- "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==",
- "dev": true,
- "requires": {
- "@typescript-eslint/experimental-utils": "4.33.0",
- "@typescript-eslint/scope-manager": "4.33.0",
- "debug": "^4.3.1",
- "functional-red-black-tree": "^1.0.1",
- "ignore": "^5.1.8",
- "regexpp": "^3.1.0",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/experimental-utils": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz",
- "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.7",
- "@typescript-eslint/scope-manager": "4.33.0",
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/typescript-estree": "4.33.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^3.0.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz",
- "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "4.33.0",
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/typescript-estree": "4.33.0",
- "debug": "^4.3.1"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz",
- "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/visitor-keys": "4.33.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz",
- "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz",
- "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/visitor-keys": "4.33.0",
- "debug": "^4.3.1",
- "globby": "^11.0.3",
- "is-glob": "^4.0.1",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz",
- "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.33.0",
- "eslint-visitor-keys": "^2.0.0"
- }
- },
- "@webassemblyjs/ast": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
- "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
- "dev": true,
- "requires": {
- "@webassemblyjs/helper-numbers": "1.11.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
- }
- },
- "@webassemblyjs/floating-point-hex-parser": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
- "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
- "dev": true
- },
- "@webassemblyjs/helper-api-error": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
- "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
- "dev": true
- },
- "@webassemblyjs/helper-buffer": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
- "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
- "dev": true
- },
- "@webassemblyjs/helper-numbers": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
- "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
- "dev": true,
- "requires": {
- "@webassemblyjs/floating-point-hex-parser": "1.11.1",
- "@webassemblyjs/helper-api-error": "1.11.1",
- "@xtuc/long": "4.2.2"
- }
- },
- "@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
- "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
- "dev": true
- },
- "@webassemblyjs/helper-wasm-section": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
- "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.1",
- "@webassemblyjs/helper-buffer": "1.11.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
- "@webassemblyjs/wasm-gen": "1.11.1"
- }
- },
- "@webassemblyjs/ieee754": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
- "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
- "dev": true,
- "requires": {
- "@xtuc/ieee754": "^1.2.0"
- }
- },
- "@webassemblyjs/leb128": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
- "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
- "dev": true,
- "requires": {
- "@xtuc/long": "4.2.2"
- }
- },
- "@webassemblyjs/utf8": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
- "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
- "dev": true
- },
- "@webassemblyjs/wasm-edit": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
- "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.1",
- "@webassemblyjs/helper-buffer": "1.11.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
- "@webassemblyjs/helper-wasm-section": "1.11.1",
- "@webassemblyjs/wasm-gen": "1.11.1",
- "@webassemblyjs/wasm-opt": "1.11.1",
- "@webassemblyjs/wasm-parser": "1.11.1",
- "@webassemblyjs/wast-printer": "1.11.1"
- }
- },
- "@webassemblyjs/wasm-gen": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
- "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
- "@webassemblyjs/ieee754": "1.11.1",
- "@webassemblyjs/leb128": "1.11.1",
- "@webassemblyjs/utf8": "1.11.1"
- }
- },
- "@webassemblyjs/wasm-opt": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
- "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.1",
- "@webassemblyjs/helper-buffer": "1.11.1",
- "@webassemblyjs/wasm-gen": "1.11.1",
- "@webassemblyjs/wasm-parser": "1.11.1"
- }
- },
- "@webassemblyjs/wasm-parser": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
- "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.1",
- "@webassemblyjs/helper-api-error": "1.11.1",
- "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
- "@webassemblyjs/ieee754": "1.11.1",
- "@webassemblyjs/leb128": "1.11.1",
- "@webassemblyjs/utf8": "1.11.1"
- }
- },
- "@webassemblyjs/wast-printer": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
- "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.11.1",
- "@xtuc/long": "4.2.2"
- }
- },
- "@webpack-cli/configtest": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz",
- "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==",
- "dev": true
- },
- "@webpack-cli/info": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz",
- "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==",
- "dev": true,
- "requires": {
- "envinfo": "^7.7.3"
- }
- },
- "@webpack-cli/serve": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz",
- "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==",
- "dev": true
- },
- "@xtuc/ieee754": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "dev": true
- },
- "@xtuc/long": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "dev": true
- },
- "acorn": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
- "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
- "dev": true
- },
- "acorn-import-assertions": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
- "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true
- },
- "ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
- "dev": true
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true
- },
- "astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browserslist": {
- "version": "4.21.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
- "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001370",
- "electron-to-chromium": "^1.4.202",
- "node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.5"
- }
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "caniuse-lite": {
- "version": "1.0.30001375",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001375.tgz",
- "integrity": "sha512-kWIMkNzLYxSvnjy0hL8w1NOaWNr2rn39RTAVyIwcw8juu60bZDWiF1/loOYANzjtJmy6qPgNmn38ro5Pygagdw==",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "chrome-trace-event": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
- "dev": true
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "colorette": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
- "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
- "dev": true
- },
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "core-js": {
- "version": "3.24.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.24.1.tgz",
- "integrity": "sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg=="
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "crypto-js": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
- "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "electron-to-chromium": {
- "version": "1.4.213",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.213.tgz",
- "integrity": "sha512-+3DbGHGOCHTVB/Ms63bGqbyC1b8y7Fk86+7ltssB8NQrZtSCvZG6eooSl9U2Q0yw++fL2DpHKOdTU0NVEkFObg==",
- "dev": true
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "enhanced-resolve": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
- "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- }
- },
- "enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
- "dev": true,
- "requires": {
- "ansi-colors": "^4.1.1"
- }
- },
- "envinfo": {
- "version": "7.8.1",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
- "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
- "dev": true
- },
- "es-module-lexer": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
- "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
- "dev": true
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true
- },
- "eslint": {
- "version": "7.32.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
- "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.3",
- "@humanwhocodes/config-array": "^0.5.0",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "enquirer": "^2.3.5",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^2.0.0",
- "espree": "^7.3.1",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.1.2",
- "globals": "^13.6.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "progress": "^2.0.0",
- "regexpp": "^3.1.0",
- "semver": "^7.2.1",
- "strip-ansi": "^6.0.0",
- "strip-json-comments": "^3.1.0",
- "table": "^6.0.9",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "dependencies": {
- "eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- }
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^2.0.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true
- },
- "espree": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
- "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
- "dev": true,
- "requires": {
- "acorn": "^7.4.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^1.3.0"
- },
- "dependencies": {
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true
- },
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.11",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
- "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "fastest-levenshtein": {
- "version": "1.0.16",
- "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
- "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
- "dev": true
- },
- "fastq": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
- "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
- "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
- "dev": true
- },
- "fp-ts": {
- "version": "2.12.2",
- "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.12.2.tgz",
- "integrity": "sha512-v8J7ud+nTkP5Zz17GhpCsY19wiRbB9miuj61nBcCJyDpu52zs9Z4O7OLDfYoKFQMJ9EsSZA7W1vRgC1d3jy5qw==",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "glob-to-regexp": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true
- },
- "globals": {
- "version": "13.17.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
- "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.10",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
- "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
- "dev": true
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "import-local": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
- "dev": true,
- "requires": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "inspectpack": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/inspectpack/-/inspectpack-4.7.1.tgz",
- "integrity": "sha512-XoDJbKSM9I2KA+8+OLFJHm8m4NM2pMEgsDD2hze6swVfynEed9ngCx36mRR+otzOsskwnxIZWXjI23FTW1uHqA==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "fp-ts": "^2.6.1",
- "io-ts": "^2.2.13",
- "io-ts-reporters": "^1.2.2",
- "pify": "^5.0.0",
- "semver-compare": "^1.0.0",
- "yargs": "^16.2.0"
- }
- },
- "interpret": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
- "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
- "dev": true
- },
- "io-ts": {
- "version": "2.2.17",
- "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-2.2.17.tgz",
- "integrity": "sha512-RkQY06h6rRyADVEI46OCAUYTP2p18Vdtz9Movi19Mmj7SJ1NhN/yGyW7CxlcBVxh95WKg2YSbTmcUPqqeLuhXw==",
- "dev": true
- },
- "io-ts-reporters": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/io-ts-reporters/-/io-ts-reporters-1.2.2.tgz",
- "integrity": "sha512-igASwWWkDY757OutNcM6zTtdJf/eTZYkoe2ymsX2qpm5bKZLo74FJYjsCtMQOEdY7dRHLLEulCyFQwdN69GBCg==",
- "dev": true
- },
- "is-core-module": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
- "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
- "dev": true
- },
- "jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
- "dev": true,
- "requires": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "loader-runner": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
- "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
- "dev": true
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "lodash.truncate": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
- },
- "node-releases": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
- "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
- "dev": true
- },
- "oidc-client": {
- "version": "1.11.5",
- "resolved": "https://registry.npmjs.org/oidc-client/-/oidc-client-1.11.5.tgz",
- "integrity": "sha512-LcKrKC8Av0m/KD/4EFmo9Sg8fSQ+WFJWBrmtWd+tZkNn3WT/sQG3REmPANE9tzzhbjW6VkTNy4xhAXCfPApAOg==",
- "requires": {
- "acorn": "^7.4.1",
- "base64-js": "^1.5.1",
- "core-js": "^3.8.3",
- "crypto-js": "^4.0.0",
- "serialize-javascript": "^4.0.0"
- },
- "dependencies": {
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
- },
- "serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
- "requires": {
- "randombytes": "^2.1.0"
- }
- }
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- },
- "picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
- },
- "pify": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz",
- "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==",
- "dev": true
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- }
- },
- "prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true
- },
- "progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true
- },
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "rechoir": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
- "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
- "dev": true,
- "requires": {
- "resolve": "^1.9.0"
- }
- },
- "regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true
- },
- "require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true
- },
- "resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "dev": true,
- "requires": {
- "resolve-from": "^5.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true
- }
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- },
- "schema-utils": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
- "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.8",
- "ajv": "^6.12.5",
- "ajv-keywords": "^3.5.2"
- }
- },
- "semver": {
- "version": "7.3.7",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
- "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "semver-compare": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
- "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
- "dev": true
- },
- "serialize-javascript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "shallow-clone": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.2"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- }
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true
- },
- "table": {
- "version": "6.8.0",
- "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz",
- "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==",
- "dev": true,
- "requires": {
- "ajv": "^8.0.1",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1"
- },
- "dependencies": {
- "ajv": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
- "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- }
- },
- "json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- }
- }
- },
- "tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
- "dev": true
- },
- "terser": {
- "version": "5.14.2",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
- "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
- "dev": true,
- "requires": {
- "@jridgewell/source-map": "^0.3.2",
- "acorn": "^8.5.0",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- },
- "dependencies": {
- "acorn": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
- "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
- "dev": true
- }
- }
- },
- "terser-webpack-plugin": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz",
- "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==",
- "dev": true,
- "requires": {
- "@jridgewell/trace-mapping": "^0.3.7",
- "jest-worker": "^27.4.5",
- "schema-utils": "^3.1.1",
- "serialize-javascript": "^6.0.0",
- "terser": "^5.7.2"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "ts-loader": {
- "version": "9.3.1",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz",
- "integrity": "sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "enhanced-resolve": "^5.0.0",
- "micromatch": "^4.0.0",
- "semver": "^7.3.4"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true
- },
- "typescript": {
- "version": "4.7.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
- "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
- "dev": true
- },
- "update-browserslist-db": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz",
- "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==",
- "dev": true,
- "requires": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "v8-compile-cache": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
- },
- "watchpack": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
- "dev": true,
- "requires": {
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.1.2"
- }
- },
- "webpack": {
- "version": "5.74.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz",
- "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==",
- "dev": true,
- "requires": {
- "@types/eslint-scope": "^3.7.3",
- "@types/estree": "^0.0.51",
- "@webassemblyjs/ast": "1.11.1",
- "@webassemblyjs/wasm-edit": "1.11.1",
- "@webassemblyjs/wasm-parser": "1.11.1",
- "acorn": "^8.7.1",
- "acorn-import-assertions": "^1.7.6",
- "browserslist": "^4.14.5",
- "chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.10.0",
- "es-module-lexer": "^0.9.0",
- "eslint-scope": "5.1.1",
- "events": "^3.2.0",
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.9",
- "json-parse-even-better-errors": "^2.3.1",
- "loader-runner": "^4.2.0",
- "mime-types": "^2.1.27",
- "neo-async": "^2.6.2",
- "schema-utils": "^3.1.0",
- "tapable": "^2.1.1",
- "terser-webpack-plugin": "^5.1.3",
- "watchpack": "^2.4.0",
- "webpack-sources": "^3.2.3"
- },
- "dependencies": {
- "acorn": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
- "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
- "dev": true
- }
- }
- },
- "webpack-cli": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz",
- "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==",
- "dev": true,
- "requires": {
- "@discoveryjs/json-ext": "^0.5.0",
- "@webpack-cli/configtest": "^1.2.0",
- "@webpack-cli/info": "^1.5.0",
- "@webpack-cli/serve": "^1.7.0",
- "colorette": "^2.0.14",
- "commander": "^7.0.0",
- "cross-spawn": "^7.0.3",
- "fastest-levenshtein": "^1.0.12",
- "import-local": "^3.0.2",
- "interpret": "^2.2.0",
- "rechoir": "^0.7.0",
- "webpack-merge": "^5.7.3"
- },
- "dependencies": {
- "commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "dev": true
- }
- }
- },
- "webpack-merge": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
- "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==",
- "dev": true,
- "requires": {
- "clone-deep": "^4.0.1",
- "wildcard": "^2.0.0"
- }
- },
- "webpack-sources": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
- "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
- "dev": true
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "wildcard": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
- "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
- "dev": true
- },
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dev": true,
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- }
- },
- "yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true
- }
- }
-}
diff --git a/src/AzureIoTHub.Portal.Client/assets/package.json b/src/AzureIoTHub.Portal.Client/assets/package.json
deleted file mode 100644
index 542ab0716..000000000
--- a/src/AzureIoTHub.Portal.Client/assets/package.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "private": true,
- "scripts": {
- "preclean": "yarn install --mutex network --frozen-lockfile",
- "clean": "node node_modules/rimraf/bin.js ./dist/Debug ./dist/Release",
- "prebuild": "yarn run clean && yarn install --mutex network --frozen-lockfile",
- "build": "yarn run build:debug && yarn run build:production",
- "build:Debug": "node node_modules/webpack-cli/bin/cli.js --mode development --config ./webpack.config.js",
- "build:Release": "node node_modules/webpack-cli/bin/cli.js --mode production --config ./webpack.config.js"
- },
- "devDependencies": {
- "@typescript-eslint/eslint-plugin": "^4.29.3",
- "@typescript-eslint/parser": "^4.29.3",
- "acorn": "^8.8.0",
- "eslint": "^7.32.0",
- "inspectpack": "^4.7.1",
- "ts-loader": "^9.2.5",
- "typescript": "^4.4.2",
- "webpack": "5.74.0",
- "webpack-cli": "^4.10.0"
- },
- "dependencies": {
- "oidc-client": "1.11.5"
- }
-}
diff --git a/src/AzureIoTHub.Portal.Client/assets/src/AuthenticationService.js b/src/AzureIoTHub.Portal.Client/assets/src/AuthenticationService.js
deleted file mode 100644
index 12692320f..000000000
--- a/src/AzureIoTHub.Portal.Client/assets/src/AuthenticationService.js
+++ /dev/null
@@ -1,331 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.AuthenticationService = exports.AuthenticationResultStatus = exports.AccessTokenResultStatus = void 0;
-const oidc_client_1 = require("oidc-client");
-oidc_client_1.Log.level = oidc_client_1.Log.DEBUG;
-oidc_client_1.Log.logger = console;
-function isApiAuthorizationSettings(settings) {
- return settings.hasOwnProperty('configurationEndpoint');
-}
-var AccessTokenResultStatus;
-(function (AccessTokenResultStatus) {
- AccessTokenResultStatus["Success"] = "success";
- AccessTokenResultStatus["RequiresRedirect"] = "requiresRedirect";
-})(AccessTokenResultStatus = exports.AccessTokenResultStatus || (exports.AccessTokenResultStatus = {}));
-var AuthenticationResultStatus;
-(function (AuthenticationResultStatus) {
- AuthenticationResultStatus["Redirect"] = "redirect";
- AuthenticationResultStatus["Success"] = "success";
- AuthenticationResultStatus["Failure"] = "failure";
- AuthenticationResultStatus["OperationCompleted"] = "operationCompleted";
-})(AuthenticationResultStatus = exports.AuthenticationResultStatus || (exports.AuthenticationResultStatus = {}));
-;
-class OidcAuthorizeService {
- constructor(userManager) {
- this._userManager = userManager;
- }
- async trySilentSignIn() {
- if (!this._intialSilentSignIn) {
- this._intialSilentSignIn = (async () => {
- try {
- await this._userManager.signinSilent();
- }
- catch (e) {
- // It is ok to swallow the exception here.
- // The user might not be logged in and in that case it
- // is expected for signinSilent to fail and throw
- }
- })();
- }
- return this._intialSilentSignIn;
- }
- async getUser() {
- if (window.parent === window && !window.opener && !window.frameElement && this._userManager.settings.redirect_uri &&
- !location.href.startsWith(this._userManager.settings.redirect_uri)) {
- // If we are not inside a hidden iframe, try authenticating silently.
- await AuthenticationService.instance.trySilentSignIn();
- }
- const user = await this._userManager.getUser();
- return user && user.profile;
- }
- async getAccessToken(request) {
- const user = await this._userManager.getUser();
- if (hasValidAccessToken(user) && hasAllScopes(request, user.scopes)) {
- return {
- status: AccessTokenResultStatus.Success,
- token: {
- grantedScopes: user.scopes,
- expires: getExpiration(user.expires_in),
- value: user.access_token
- }
- };
- }
- else {
- try {
- const parameters = request && request.scopes ?
- { scope: request.scopes.join(' ') } : undefined;
- const newUser = await this._userManager.signinSilent(parameters);
- return {
- status: AccessTokenResultStatus.Success,
- token: {
- grantedScopes: newUser.scopes,
- expires: getExpiration(newUser.expires_in),
- value: newUser.access_token
- }
- };
- }
- catch (e) {
- return {
- status: AccessTokenResultStatus.RequiresRedirect
- };
- }
- }
- function hasValidAccessToken(user) {
- return !!(user && user.access_token && !user.expired && user.scopes);
- }
- function getExpiration(expiresIn) {
- const now = new Date();
- now.setTime(now.getTime() + expiresIn * 1000);
- return now;
- }
- function hasAllScopes(request, currentScopes) {
- const set = new Set(currentScopes);
- if (request && request.scopes) {
- for (const current of request.scopes) {
- if (!set.has(current)) {
- return false;
- }
- }
- }
- return true;
- }
- }
- async signIn(state) {
- try {
- await this._userManager.clearStaleState();
- await this._userManager.signinSilent(this.createArguments());
- return this.success(state);
- }
- catch (silentError) {
- try {
- await this._userManager.clearStaleState();
- await this._userManager.signinRedirect(this.createArguments(state));
- return this.redirect();
- }
- catch (redirectError) {
- return this.error(this.getExceptionMessage(redirectError));
- }
- }
- }
- async completeSignIn(url) {
- const requiresLogin = await this.loginRequired(url);
- const stateExists = await this.stateExists(url);
- try {
- const user = await this._userManager.signinCallback(url);
- if (window.self !== window.top) {
- return this.operationCompleted();
- }
- else {
- return this.success(user && user.state);
- }
- }
- catch (error) {
- if (requiresLogin || window.self !== window.top || !stateExists) {
- return this.operationCompleted();
- }
- return this.error('There was an error signing in.');
- }
- }
- async signOut(state) {
- try {
- if (!(await this._userManager.metadataService.getEndSessionEndpoint())) {
- await this._userManager.removeUser();
- return this.success(state);
- }
- await this._userManager.signoutRedirect(this.createArguments(state));
- return this.redirect();
- }
- catch (redirectSignOutError) {
- return this.error(this.getExceptionMessage(redirectSignOutError));
- }
- }
- async completeSignOut(url) {
- try {
- if (await this.stateExists(url)) {
- const response = await this._userManager.signoutCallback(url);
- return this.success(response && response.state);
- }
- else {
- return this.operationCompleted();
- }
- }
- catch (error) {
- return this.error(this.getExceptionMessage(error));
- }
- }
- getExceptionMessage(error) {
- if (isOidcError(error)) {
- return error.error_description;
- }
- else if (isRegularError(error)) {
- return error.message;
- }
- else {
- return error.toString();
- }
- function isOidcError(error) {
- return error && error.error_description;
- }
- function isRegularError(error) {
- return error && error.message;
- }
- }
- async stateExists(url) {
- const stateParam = new URLSearchParams(new URL(url).search).get('state');
- if (stateParam && this._userManager.settings.stateStore) {
- return await this._userManager.settings.stateStore.get(stateParam);
- }
- else {
- return undefined;
- }
- }
- async loginRequired(url) {
- const errorParameter = new URLSearchParams(new URL(url).search).get('error');
- if (errorParameter && this._userManager.settings.stateStore) {
- const error = await this._userManager.settings.stateStore.get(errorParameter);
- return error === 'login_required';
- }
- else {
- return false;
- }
- }
- createArguments(state) {
- return { useReplaceToNavigate: true, data: state };
- }
- error(message) {
- return { status: AuthenticationResultStatus.Failure, errorMessage: message };
- }
- success(state) {
- return { status: AuthenticationResultStatus.Success, state };
- }
- redirect() {
- return { status: AuthenticationResultStatus.Redirect };
- }
- operationCompleted() {
- return { status: AuthenticationResultStatus.OperationCompleted };
- }
-}
-class AuthenticationService {
- static init(settings) {
- // Multiple initializations can start concurrently and we want to avoid that.
- // In order to do so, we create an initialization promise and the first call to init
- // tries to initialize the app and sets up a promise other calls can await on.
- if (!AuthenticationService._initialized) {
- AuthenticationService._initialized = AuthenticationService.initializeCore(Object.assign({}, {
- loadUserInfo: false
- }, settings));
- }
- return AuthenticationService._initialized;
- }
- static handleCallback() {
- return AuthenticationService.initializeCore();
- }
- static async initializeCore(settings) {
- const finalSettings = settings || AuthenticationService.resolveCachedSettings();
- if (!settings && finalSettings) {
- const userManager = AuthenticationService.createUserManagerCore(finalSettings);
- if (window.parent !== window && !window.opener && (window.frameElement && userManager.settings.redirect_uri &&
- location.href.startsWith(userManager.settings.redirect_uri))) {
- // If we are inside a hidden iframe, try completing the sign in early.
- // This prevents loading the blazor app inside a hidden iframe, which speeds up the authentication operations
- // and avoids wasting resources (CPU and memory from bootstrapping the Blazor app)
- AuthenticationService.instance = new OidcAuthorizeService(userManager);
- // This makes sure that if the blazor app has time to load inside the hidden iframe,
- // it is not able to perform another auth operation until this operation has completed.
- AuthenticationService._initialized = (async () => {
- await AuthenticationService.instance.completeSignIn(location.href);
- return;
- })();
- }
- }
- else if (settings) {
- const userManager = await AuthenticationService.createUserManager(settings);
- AuthenticationService.instance = new OidcAuthorizeService(userManager);
- }
- else {
- // HandleCallback gets called unconditionally, so we do nothing for normal paths.
- // Cached settings are only used on handling the redirect_uri path and if the settings are not there
- // the app will fallback to the default logic for handling the redirect.
- }
- }
- static resolveCachedSettings() {
- const cachedSettings = window.sessionStorage.getItem(`${AuthenticationService._infrastructureKey}.CachedAuthSettings`);
- return cachedSettings ? JSON.parse(cachedSettings) : undefined;
- }
- static getUser() {
- return AuthenticationService.instance.getUser();
- }
- static getAccessToken(options) {
- return AuthenticationService.instance.getAccessToken(options);
- }
- static signIn(state) {
- return AuthenticationService.instance.signIn(state);
- }
- static async completeSignIn(url) {
- let operation = this._pendingOperations[url];
- if (!operation) {
- operation = AuthenticationService.instance.completeSignIn(url);
- await operation;
- delete this._pendingOperations[url];
- }
- return operation;
- }
- static signOut(state) {
- return AuthenticationService.instance.signOut(state);
- }
- static async completeSignOut(url) {
- let operation = this._pendingOperations[url];
- if (!operation) {
- operation = AuthenticationService.instance.completeSignOut(url);
- await operation;
- delete this._pendingOperations[url];
- }
- return operation;
- }
- static async createUserManager(settings) {
- let finalSettings;
- if (isApiAuthorizationSettings(settings)) {
- const response = await fetch(settings.configurationEndpoint);
- if (!response.ok) {
- throw new Error(`Could not load settings from '${settings.configurationEndpoint}'`);
- }
- const downloadedSettings = await response.json();
- finalSettings = downloadedSettings;
- }
- else {
- if (!settings.scope) {
- settings.scope = settings.defaultScopes.join(' ');
- }
- if (settings.response_type === null) {
- // If the response type is not set, it gets serialized as null. OIDC-client behaves differently than when the value is undefined, so we explicitly check for a null value and remove the property instead.
- delete settings.response_type;
- }
- finalSettings = settings;
- }
- window.sessionStorage.setItem(`${AuthenticationService._infrastructureKey}.CachedAuthSettings`, JSON.stringify(finalSettings));
- return AuthenticationService.createUserManagerCore(finalSettings);
- }
- static createUserManagerCore(finalSettings) {
- const userManager = new oidc_client_1.UserManager(finalSettings);
- userManager.events.addUserSignedOut(async () => {
- userManager.removeUser();
- });
- return userManager;
- }
-}
-exports.AuthenticationService = AuthenticationService;
-AuthenticationService._infrastructureKey = 'Microsoft.AspNetCore.Components.WebAssembly.Authentication';
-AuthenticationService._pendingOperations = {};
-AuthenticationService.handleCallback();
-window.AuthenticationService = AuthenticationService;
-//# sourceMappingURL=AuthenticationService.js.map
\ No newline at end of file
diff --git a/src/AzureIoTHub.Portal.Client/assets/src/AuthenticationService.js.map b/src/AzureIoTHub.Portal.Client/assets/src/AuthenticationService.js.map
deleted file mode 100644
index 3d5c3dacb..000000000
--- a/src/AzureIoTHub.Portal.Client/assets/src/AuthenticationService.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"AuthenticationService.js","sourceRoot":"","sources":["AuthenticationService.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/src/AzureIoTHub.Portal.Client/assets/src/AuthenticationService.ts b/src/AzureIoTHub.Portal.Client/assets/src/AuthenticationService.ts
deleted file mode 100644
index 0ea31ac00..000000000
--- a/src/AzureIoTHub.Portal.Client/assets/src/AuthenticationService.ts
+++ /dev/null
@@ -1,418 +0,0 @@
-import { UserManager, UserManagerSettings, User, Log } from 'oidc-client'
-
-type Writeable = { -readonly [P in keyof T]: T[P] };
-
-type ExtendedUserManagerSettings = Writeable
-
-type OidcAuthorizeServiceSettings = ExtendedUserManagerSettings | ApiAuthorizationSettings;
-
-Log.level = Log.DEBUG;
-Log.logger = console;
-
-function isApiAuthorizationSettings(settings: OidcAuthorizeServiceSettings): settings is ApiAuthorizationSettings {
- return settings.hasOwnProperty('configurationEndpoint');
-}
-
-interface AuthorizeServiceSettings {
- defaultScopes: string[];
-}
-
-interface ApiAuthorizationSettings {
- configurationEndpoint: string;
-}
-
-export interface AccessTokenRequestOptions {
- scopes: string[];
- returnUrl: string;
-}
-
-export interface AccessTokenResult {
- status: AccessTokenResultStatus;
- token?: AccessToken;
-}
-
-export interface AccessToken {
- value: string;
- expires: Date;
- grantedScopes: string[];
-}
-
-export enum AccessTokenResultStatus {
- Success = 'success',
- RequiresRedirect = 'requiresRedirect'
-}
-
-export enum AuthenticationResultStatus {
- Redirect = 'redirect',
- Success = 'success',
- Failure = 'failure',
- OperationCompleted = 'operationCompleted'
-};
-
-export interface AuthenticationResult {
- status: AuthenticationResultStatus;
- state?: unknown;
- message?: string;
-}
-
-export interface AuthorizeService {
- getUser(): Promise;
- getAccessToken(request?: AccessTokenRequestOptions): Promise;
- signIn(state: unknown): Promise;
- completeSignIn(state: unknown): Promise;
- signOut(state: unknown): Promise;
- completeSignOut(url: string): Promise;
-}
-
-class OidcAuthorizeService implements AuthorizeService {
- private _userManager: UserManager;
- private _intialSilentSignIn: Promise | undefined;
- constructor(userManager: UserManager) {
- this._userManager = userManager;
- }
-
- async trySilentSignIn() {
- if (!this._intialSilentSignIn) {
- this._intialSilentSignIn = (async () => {
- try {
- await this._userManager.signinSilent();
- } catch (e) {
- // It is ok to swallow the exception here.
- // The user might not be logged in and in that case it
- // is expected for signinSilent to fail and throw
- }
- })();
- }
-
- return this._intialSilentSignIn;
- }
-
- async getUser() {
- if (window.parent === window && !window.opener && !window.frameElement && this._userManager.settings.redirect_uri &&
- !location.href.startsWith(this._userManager.settings.redirect_uri)) {
- // If we are not inside a hidden iframe, try authenticating silently.
- await AuthenticationService.instance.trySilentSignIn();
- }
-
- const user = await this._userManager.getUser();
- return user && user.profile;
- }
-
- async getAccessToken(request?: AccessTokenRequestOptions): Promise {
- const user = await this._userManager.getUser();
- if (hasValidAccessToken(user) && hasAllScopes(request, user.scopes)) {
- return {
- status: AccessTokenResultStatus.Success,
- token: {
- grantedScopes: user.scopes,
- expires: getExpiration(user.expires_in),
- value: user.access_token
- }
- };
- } else {
- try {
- const parameters = request && request.scopes ?
- { scope: request.scopes.join(' ') } : undefined;
-
- const newUser = await this._userManager.signinSilent(parameters);
-
- return {
- status: AccessTokenResultStatus.Success,
- token: {
- grantedScopes: newUser.scopes,
- expires: getExpiration(newUser.expires_in),
- value: newUser.access_token
- }
- };
-
- } catch (e) {
- return {
- status: AccessTokenResultStatus.RequiresRedirect
- };
- }
- }
-
- function hasValidAccessToken(user: User | null): user is User {
- return !!(user && user.access_token && !user.expired && user.scopes);
- }
-
- function getExpiration(expiresIn: number) {
- const now = new Date();
- now.setTime(now.getTime() + expiresIn * 1000);
- return now;
- }
-
- function hasAllScopes(request: AccessTokenRequestOptions | undefined, currentScopes: string[]) {
- const set = new Set(currentScopes);
- if (request && request.scopes) {
- for (const current of request.scopes) {
- if (!set.has(current)) {
- return false;
- }
- }
- }
-
- return true;
- }
- }
-
- async signIn(state: unknown) {
- try {
- await this._userManager.clearStaleState();
- await this._userManager.signinSilent(this.createArguments());
- return this.success(state);
- } catch (silentError) {
- try {
- await this._userManager.clearStaleState();
- await this._userManager.signinRedirect(this.createArguments(state));
- return this.redirect();
- } catch (redirectError) {
- return this.error(this.getExceptionMessage(redirectError));
- }
- }
- }
-
- async completeSignIn(url: string) {
- const requiresLogin = await this.loginRequired(url);
- const stateExists = await this.stateExists(url);
- try {
- const user = await this._userManager.signinCallback(url);
- if (window.self !== window.top) {
- return this.operationCompleted();
- } else {
- return this.success(user && user.state);
- }
- } catch (error) {
- if (requiresLogin || window.self !== window.top || !stateExists) {
- return this.operationCompleted();
- }
-
- return this.error('There was an error signing in.');
- }
- }
-
- async signOut(state: unknown) {
- try {
- if (!(await this._userManager.metadataService.getEndSessionEndpoint())) {
- await this._userManager.removeUser();
- return this.success(state);
- }
- await this._userManager.signoutRedirect(this.createArguments(state));
- return this.redirect();
- } catch (redirectSignOutError) {
- return this.error(this.getExceptionMessage(redirectSignOutError));
- }
- }
-
- async completeSignOut(url: string) {
- try {
- if (await this.stateExists(url)) {
- const response = await this._userManager.signoutCallback(url);
- return this.success(response && response.state);
- } else {
- return this.operationCompleted();
- }
- } catch (error) {
- return this.error(this.getExceptionMessage(error));
- }
- }
-
- private getExceptionMessage(error: any) {
- if (isOidcError(error)) {
- return error.error_description;
- } else if (isRegularError(error)) {
- return error.message;
- } else {
- return error.toString();
- }
-
- function isOidcError(error: any): error is (Oidc.SigninResponse & Oidc.SignoutResponse) {
- return error && error.error_description;
- }
-
- function isRegularError(error: any): error is Error {
- return error && error.message;
- }
- }
-
- private async stateExists(url: string) {
- const stateParam = new URLSearchParams(new URL(url).search).get('state');
- if (stateParam && this._userManager.settings.stateStore) {
- return await this._userManager.settings.stateStore.get(stateParam);
- } else {
- return undefined;
- }
- }
-
- private async loginRequired(url: string) {
- const errorParameter = new URLSearchParams(new URL(url).search).get('error');
- if (errorParameter && this._userManager.settings.stateStore) {
- const error = await this._userManager.settings.stateStore.get(errorParameter);
- return error === 'login_required';
- } else {
- return false;
- }
- }
-
- private createArguments(state?: unknown) {
- return { useReplaceToNavigate: true, data: state };
- }
-
- private error(message: string) {
- return { status: AuthenticationResultStatus.Failure, errorMessage: message };
- }
-
- private success(state: unknown) {
- return { status: AuthenticationResultStatus.Success, state };
- }
-
- private redirect() {
- return { status: AuthenticationResultStatus.Redirect };
- }
-
- private operationCompleted() {
- return { status: AuthenticationResultStatus.OperationCompleted };
- }
-}
-
-export class AuthenticationService {
-
- static _infrastructureKey = 'Microsoft.AspNetCore.Components.WebAssembly.Authentication';
- static _initialized: Promise;
- static instance: OidcAuthorizeService;
- static _pendingOperations: { [key: string]: Promise | undefined } = {}
-
- public static init(settings: UserManagerSettings & AuthorizeServiceSettings) {
- // Multiple initializations can start concurrently and we want to avoid that.
- // In order to do so, we create an initialization promise and the first call to init
- // tries to initialize the app and sets up a promise other calls can await on.
- if (!AuthenticationService._initialized) {
- AuthenticationService._initialized = AuthenticationService.initializeCore(Object.assign({}, {
- loadUserInfo: false
- }, settings));
- }
-
- return AuthenticationService._initialized;
- }
-
- public static handleCallback() {
- return AuthenticationService.initializeCore();
- }
-
- private static async initializeCore(settings?: UserManagerSettings & AuthorizeServiceSettings) {
- const finalSettings = settings || AuthenticationService.resolveCachedSettings();
- if (!settings && finalSettings) {
- const userManager = AuthenticationService.createUserManagerCore(finalSettings);
-
- if (window.parent !== window && !window.opener && (window.frameElement && userManager.settings.redirect_uri &&
- location.href.startsWith(userManager.settings.redirect_uri))) {
- // If we are inside a hidden iframe, try completing the sign in early.
- // This prevents loading the blazor app inside a hidden iframe, which speeds up the authentication operations
- // and avoids wasting resources (CPU and memory from bootstrapping the Blazor app)
- AuthenticationService.instance = new OidcAuthorizeService(userManager);
-
- // This makes sure that if the blazor app has time to load inside the hidden iframe,
- // it is not able to perform another auth operation until this operation has completed.
- AuthenticationService._initialized = (async (): Promise => {
- await AuthenticationService.instance.completeSignIn(location.href);
- return;
- })();
- }
- } else if (settings) {
- const userManager = await AuthenticationService.createUserManager(settings);
- AuthenticationService.instance = new OidcAuthorizeService(userManager);
- } else {
- // HandleCallback gets called unconditionally, so we do nothing for normal paths.
- // Cached settings are only used on handling the redirect_uri path and if the settings are not there
- // the app will fallback to the default logic for handling the redirect.
- }
- }
-
- private static resolveCachedSettings(): UserManagerSettings | undefined {
- const cachedSettings = window.sessionStorage.getItem(`${AuthenticationService._infrastructureKey}.CachedAuthSettings`);
- return cachedSettings ? JSON.parse(cachedSettings) : undefined;
- }
-
- public static getUser() {
- return AuthenticationService.instance.getUser();
- }
-
- public static getAccessToken(options: AccessTokenRequestOptions) {
- return AuthenticationService.instance.getAccessToken(options);
- }
-
- public static signIn(state: unknown) {
- return AuthenticationService.instance.signIn(state);
- }
-
- public static async completeSignIn(url: string) {
- let operation = this._pendingOperations[url];
- if (!operation) {
- operation = AuthenticationService.instance.completeSignIn(url);
- await operation;
- delete this._pendingOperations[url];
- }
-
- return operation;
- }
-
- public static signOut(state: unknown) {
- return AuthenticationService.instance.signOut(state);
- }
-
- public static async completeSignOut(url: string) {
- let operation = this._pendingOperations[url];
- if (!operation) {
- operation = AuthenticationService.instance.completeSignOut(url);
- await operation;
- delete this._pendingOperations[url];
- }
-
- return operation;
- }
-
- private static async createUserManager(settings: OidcAuthorizeServiceSettings): Promise {
- let finalSettings: UserManagerSettings;
- if (isApiAuthorizationSettings(settings)) {
- const response = await fetch(settings.configurationEndpoint);
- if (!response.ok) {
- throw new Error(`Could not load settings from '${settings.configurationEndpoint}'`);
- }
-
- const downloadedSettings = await response.json();
-
- finalSettings = downloadedSettings;
- } else {
- if (!settings.scope) {
- settings.scope = settings.defaultScopes.join(' ');
- }
-
- if (settings.response_type === null) {
- // If the response type is not set, it gets serialized as null. OIDC-client behaves differently than when the value is undefined, so we explicitly check for a null value and remove the property instead.
- delete settings.response_type;
- }
-
- finalSettings = settings;
- }
-
- window.sessionStorage.setItem(`${AuthenticationService._infrastructureKey}.CachedAuthSettings`, JSON.stringify(finalSettings));
-
- return AuthenticationService.createUserManagerCore(finalSettings);
- }
-
- private static createUserManagerCore(finalSettings: UserManagerSettings) {
- const userManager = new UserManager(finalSettings);
- userManager.events.addUserSignedOut(async () => {
- userManager.removeUser();
- });
- return userManager;
- }
-}
-
-declare global {
- interface Window { AuthenticationService: AuthenticationService }
-}
-
-AuthenticationService.handleCallback();
-
-window.AuthenticationService = AuthenticationService;
diff --git a/src/AzureIoTHub.Portal.Client/assets/src/index.js b/src/AzureIoTHub.Portal.Client/assets/src/index.js
deleted file mode 100644
index eba3f27d9..000000000
--- a/src/AzureIoTHub.Portal.Client/assets/src/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-require("./AuthenticationService");
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/src/AzureIoTHub.Portal.Client/assets/src/index.js.map b/src/AzureIoTHub.Portal.Client/assets/src/index.js.map
deleted file mode 100644
index 4077cf446..000000000
--- a/src/AzureIoTHub.Portal.Client/assets/src/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;AAAA,mCAAiC"}
\ No newline at end of file
diff --git a/src/AzureIoTHub.Portal.Client/assets/src/index.ts b/src/AzureIoTHub.Portal.Client/assets/src/index.ts
deleted file mode 100644
index 357803743..000000000
--- a/src/AzureIoTHub.Portal.Client/assets/src/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-import './AuthenticationService';
diff --git a/src/AzureIoTHub.Portal.Client/assets/tsconfig.json b/src/AzureIoTHub.Portal.Client/assets/tsconfig.json
deleted file mode 100644
index 13316f2a9..000000000
--- a/src/AzureIoTHub.Portal.Client/assets/tsconfig.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "compilerOptions": {
- "target": "ES2019",
- "module": "commonjs",
- "lib": [ "DOM", "ES2019" ],
- "sourceMap": true,
- "strict": true,
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true
- }
-}
diff --git a/src/AzureIoTHub.Portal.Client/assets/webpack.config.js b/src/AzureIoTHub.Portal.Client/assets/webpack.config.js
deleted file mode 100644
index 76504df2e..000000000
--- a/src/AzureIoTHub.Portal.Client/assets/webpack.config.js
+++ /dev/null
@@ -1,67 +0,0 @@
-const path = require('path');
-const webpack = require('webpack');
-const TerserJsPlugin = require("terser-webpack-plugin");
-const { DuplicatesPlugin } = require("inspectpack/plugin");
-
-module.exports = (env, args) => ({
- resolve: {
- extensions: ['.ts', '.js'],
- },
- devtool: false, // Source maps configured below
- module: {
- rules: [{ test: /\.ts?$/, loader: 'ts-loader' }]
- },
- output: { path: path.join(__dirname, 'dist', args.mode == 'development' ? 'Debug' : 'Release'), filename: '[name].js' },
- performance: {
- maxAssetSize: 122880,
- },
- optimization: {
- sideEffects: true,
- concatenateModules: true,
- providedExports: true,
- usedExports: true,
- innerGraph: true,
- minimize: true,
- minimizer: [new TerserJsPlugin({
- terserOptions: {
- ecma: 2019,
- compress: {
- passes: 3
- },
- mangle: {
- },
- module: false,
- format: {
- ecma: 2019
- },
- keep_classnames: false,
- keep_fnames: false,
- toplevel: true
- }
- })]
- },
- plugins: Array.prototype.concat.apply([
- new webpack.DefinePlugin({
- 'process.env.NODE_DEBUG': false,
- 'Platform.isNode': false
- }),
- new DuplicatesPlugin({
- emitErrors: false,
- emitHandler: undefined,
- ignoredPackages: undefined,
- verbose: false
- }),
- ], args.mode !== 'development' ? [] : [
- // In most cases we want to use external source map files
- new webpack.SourceMapDevToolPlugin({
- filename: '[name].js.map',
- exclude: 'blazor.webview.js',
- })
- ]),
- stats: {
- warnings: true,
- errors: true,
- performance: true,
- optimizationBailout: true
- }
-});
diff --git a/src/AzureIoTHub.Portal.Client/libman.json b/src/AzureIoTHub.Portal.Client/libman.json
deleted file mode 100644
index 515b725d3..000000000
--- a/src/AzureIoTHub.Portal.Client/libman.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "version": "1.0",
- "defaultProvider": "cdnjs",
- "libraries": [
- { "library": "mdbootstrap@4.1.1", "destination": "wwwroot/node_modules/"}
- ]
-}
\ No newline at end of file
diff --git a/src/AzureIoTHub.Portal.Client/package-lock.json b/src/AzureIoTHub.Portal.Client/package-lock.json
deleted file mode 100644
index 48e341a09..000000000
--- a/src/AzureIoTHub.Portal.Client/package-lock.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "lockfileVersion": 1
-}
diff --git a/src/AzureIoTHub.Portal.Client/package.json b/src/AzureIoTHub.Portal.Client/package.json
deleted file mode 100644
index b5715f7ec..000000000
--- a/src/AzureIoTHub.Portal.Client/package.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "name": "iot-hub-portal.client",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {
- "json-schema": ">=0.4.0",
- "trim-newlines": ">=3.0.1"
- },
- "author": "",
- "license": "MIT"
-}
diff --git a/src/AzureIoTHub.Portal.Client/wwwroot/index.html b/src/AzureIoTHub.Portal.Client/wwwroot/index.html
index f3303bcd7..db96ffbf6 100644
--- a/src/AzureIoTHub.Portal.Client/wwwroot/index.html
+++ b/src/AzureIoTHub.Portal.Client/wwwroot/index.html
@@ -26,15 +26,24 @@
@@ -45,8 +54,7 @@
🗙
-
-
+
diff --git a/src/AzureIoTHub.Portal.Domain/AzureIoTHub.Portal.Domain.csproj b/src/AzureIoTHub.Portal.Domain/AzureIoTHub.Portal.Domain.csproj
index 671ed681b..c3e349e52 100644
--- a/src/AzureIoTHub.Portal.Domain/AzureIoTHub.Portal.Domain.csproj
+++ b/src/AzureIoTHub.Portal.Domain/AzureIoTHub.Portal.Domain.csproj
@@ -1,11 +1,18 @@
-
+
- net6.0
+ net7.0
enable
enable
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
diff --git a/src/AzureIoTHub.Portal.Infrastructure/AzureIoTHub.Portal.Infrastructure.csproj b/src/AzureIoTHub.Portal.Infrastructure/AzureIoTHub.Portal.Infrastructure.csproj
index d3386d8a8..2fb685081 100644
--- a/src/AzureIoTHub.Portal.Infrastructure/AzureIoTHub.Portal.Infrastructure.csproj
+++ b/src/AzureIoTHub.Portal.Infrastructure/AzureIoTHub.Portal.Infrastructure.csproj
@@ -1,24 +1,31 @@
- net6.0
+ net7.0
enable
enable
-
-
-
-
-
-
-
-
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
diff --git a/src/AzureIoTHub.Portal.Server/AzureIoTHub.Portal.Server.csproj b/src/AzureIoTHub.Portal.Server/AzureIoTHub.Portal.Server.csproj
index af1d1df14..ec881a89e 100644
--- a/src/AzureIoTHub.Portal.Server/AzureIoTHub.Portal.Server.csproj
+++ b/src/AzureIoTHub.Portal.Server/AzureIoTHub.Portal.Server.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net7.0
AzureIoTHub.Portal.Server-DDED92B6-DADB-4B27-88BD-450D1F21395C
0
true
@@ -26,32 +26,39 @@
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
-
+
-
-
+
+
-
+
diff --git a/src/AzureIoTHub.Portal.Server/Dockerfile b/src/AzureIoTHub.Portal.Server/Dockerfile
index d3594ad42..03a1b2090 100644
--- a/src/AzureIoTHub.Portal.Server/Dockerfile
+++ b/src/AzureIoTHub.Portal.Server/Dockerfile
@@ -2,7 +2,7 @@
ARG BUILD_VERSION=1.0.0-dev
-FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
+FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
ENV ASPNETCORE_URLS=http://+:80;https://+:443
@@ -17,7 +17,7 @@ RUN rm packages-microsoft-prod.deb
RUN apt-get update; \
apt-get install -y apt-transport-https && \
apt-get update && \
- apt-get install -y dotnet-sdk-6.0
+ apt-get install -y dotnet-sdk-7.0
FROM build AS builder
WORKDIR /src
diff --git a/src/AzureIoTHub.Portal.Shared/AzureIoTHub.Portal.Shared.csproj b/src/AzureIoTHub.Portal.Shared/AzureIoTHub.Portal.Shared.csproj
index 9e1d3d6f3..68da68434 100644
--- a/src/AzureIoTHub.Portal.Shared/AzureIoTHub.Portal.Shared.csproj
+++ b/src/AzureIoTHub.Portal.Shared/AzureIoTHub.Portal.Shared.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net7.0
True
@@ -23,7 +23,7 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AzureIoTHub.Portal.Tests.Unit/AzureIoTHub.Portal.Tests.Unit.csproj b/src/AzureIoTHub.Portal.Tests.Unit/AzureIoTHub.Portal.Tests.Unit.csproj
index 2e47e2cbf..f87c207b2 100644
--- a/src/AzureIoTHub.Portal.Tests.Unit/AzureIoTHub.Portal.Tests.Unit.csproj
+++ b/src/AzureIoTHub.Portal.Tests.Unit/AzureIoTHub.Portal.Tests.Unit.csproj
@@ -1,16 +1,16 @@
- net6.0
+ net7.0
false
- $(NoWarn)
+ $(NoWarn);CS0854
- $(NoWarn)
+ $(NoWarn);CS0854
@@ -22,12 +22,12 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Dashboard/DashboardMetricCounterTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Dashboard/DashboardMetricCounterTests.cs
index c438dcec9..d38dde5c4 100644
--- a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Dashboard/DashboardMetricCounterTests.cs
+++ b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Dashboard/DashboardMetricCounterTests.cs
@@ -4,12 +4,12 @@
namespace AzureIoTHub.Portal.Tests.Unit.Components.Dashboard
{
using System.Globalization;
- using UnitTests.Bases;
+ using AzureIoTHub.Portal.Client.Components.Dashboard;
using Bunit;
using FluentAssertions;
using MudBlazor;
using NUnit.Framework;
- using AzureIoTHub.Portal.Client.Components.Dashboard;
+ using UnitTests.Bases;
[TestFixture]
public class DashboardMetricCounterTests : BlazorUnitTest
diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Dashboard/DashboardMetricsTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Dashboard/DashboardMetricsTests.cs
index 7dcabfcfd..802e5bbf6 100644
--- a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Dashboard/DashboardMetricsTests.cs
+++ b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Dashboard/DashboardMetricsTests.cs
@@ -4,17 +4,17 @@
namespace AzureIoTHub.Portal.Tests.Unit.Components.Dashboard
{
using System.Globalization;
+ using AzureIoTHub.Portal.Client.Components.Dashboard;
using AzureIoTHub.Portal.Client.Exceptions;
using AzureIoTHub.Portal.Client.Models;
using AzureIoTHub.Portal.Client.Services;
using AzureIoTHub.Portal.Shared.Models.v1._0;
- using UnitTests.Bases;
using Bunit;
using FluentAssertions;
using Microsoft.Extensions.DependencyInjection;
using Moq;
using NUnit.Framework;
- using AzureIoTHub.Portal.Client.Components.Dashboard;
+ using UnitTests.Bases;
[TestFixture]
public class DashboardMetricsTests : BlazorUnitTest
diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Devices/DeviceToDuplicateSelectorTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Devices/DeviceToDuplicateSelectorTests.cs
index 378453301..f7bcb2bf1 100644
--- a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Devices/DeviceToDuplicateSelectorTests.cs
+++ b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Devices/DeviceToDuplicateSelectorTests.cs
@@ -6,19 +6,19 @@ namespace AzureIoTHub.Portal.Tests.Unit.Components.Devices
using System.Collections.Generic;
using AngleSharp.Dom;
using AutoFixture;
+ using AzureIoTHub.Portal.Client.Components.Devices;
using AzureIoTHub.Portal.Client.Exceptions;
using AzureIoTHub.Portal.Client.Models;
using AzureIoTHub.Portal.Client.Services;
- using Models.v10;
- using UnitTests.Bases;
using Bunit;
using FluentAssertions;
using Microsoft.Extensions.DependencyInjection;
+ using Models.v10;
using Models.v10.LoRaWAN;
using Moq;
using MudBlazor;
using NUnit.Framework;
- using AzureIoTHub.Portal.Client.Components.Devices;
+ using UnitTests.Bases;
[TestFixture]
public class DeviceToDuplicateSelectorTests : BlazorUnitTest
diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Devices/LoRaDeviceTelemetryTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Devices/LoRaDeviceTelemetryTests.cs
index 84545c823..dbdcf62d1 100644
--- a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Devices/LoRaDeviceTelemetryTests.cs
+++ b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/Devices/LoRaDeviceTelemetryTests.cs
@@ -3,19 +3,19 @@
namespace AzureIoTHub.Portal.Tests.Unit.Client.Components.Devices
{
+ using System.Linq;
using AutoFixture;
+ using AzureIoTHub.Portal.Client.Components.Devices;
+ using AzureIoTHub.Portal.Client.Exceptions;
+ using AzureIoTHub.Portal.Client.Models;
using AzureIoTHub.Portal.Client.Services;
- using UnitTests.Bases;
+ using AzureIoTHub.Portal.Shared.Models.v10;
using Bunit;
+ using FluentAssertions;
using Microsoft.Extensions.DependencyInjection;
using Moq;
using NUnit.Framework;
- using System.Linq;
- using AzureIoTHub.Portal.Client.Models;
- using FluentAssertions;
- using AzureIoTHub.Portal.Client.Exceptions;
- using AzureIoTHub.Portal.Client.Components.Devices;
- using AzureIoTHub.Portal.Shared.Models.v10;
+ using UnitTests.Bases;
[TestFixture]
public class LoRaDeviceTelemetryTests : BlazorUnitTest
diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/DevicesModels/LoRaWAN/EditLoraDeviceModelPageTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/DevicesModels/LoRaWAN/EditLoraDeviceModelPageTests.cs
index d3520e426..8f75631ee 100644
--- a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/DevicesModels/LoRaWAN/EditLoraDeviceModelPageTests.cs
+++ b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/DevicesModels/LoRaWAN/EditLoraDeviceModelPageTests.cs
@@ -4,12 +4,12 @@
namespace AzureIoTHub.Portal.Tests.Unit.Client.Pages.DevicesModels.LoRaWAN
{
using System.Collections.Generic;
+ using AzureIoTHub.Portal.Client.Components.DeviceModels.LoRaWAN;
using AzureIoTHub.Portal.Models.v10.LoRaWAN;
- using UnitTests.Bases;
using Bunit;
using FluentAssertions;
using NUnit.Framework;
- using AzureIoTHub.Portal.Client.Components.DeviceModels.LoRaWAN;
+ using UnitTests.Bases;
public class EditLoraDeviceModelPageTests : BlazorUnitTest
{
diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/EdgeDevices/EdgeDeviceToDuplicateSelectorTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/EdgeDevices/EdgeDeviceToDuplicateSelectorTests.cs
index d68c3e123..851eba617 100644
--- a/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/EdgeDevices/EdgeDeviceToDuplicateSelectorTests.cs
+++ b/src/AzureIoTHub.Portal.Tests.Unit/Client/Components/EdgeDevices/EdgeDeviceToDuplicateSelectorTests.cs
@@ -6,18 +6,18 @@ namespace AzureIoTHub.Portal.Tests.Unit.Client.Components.EdgeDevices
using System.Collections.Generic;
using AngleSharp.Dom;
using AutoFixture;
+ using AzureIoTHub.Portal.Client.Components.EdgeDevices;
using AzureIoTHub.Portal.Client.Exceptions;
using AzureIoTHub.Portal.Client.Models;
using AzureIoTHub.Portal.Client.Services;
- using Models.v10;
- using UnitTests.Bases;
using Bunit;
using FluentAssertions;
using Microsoft.Extensions.DependencyInjection;
+ using Models.v10;
using Moq;
using MudBlazor;
using NUnit.Framework;
- using AzureIoTHub.Portal.Client.Components.EdgeDevices;
+ using UnitTests.Bases;
[TestFixture]
public class EdgeDeviceToDuplicateSelectorTests : BlazorUnitTest
diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Client/Pages/Shared/ErrorTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Client/Pages/Shared/ErrorTests.cs
index 55820fc61..b38bcb900 100644
--- a/src/AzureIoTHub.Portal.Tests.Unit/Client/Pages/Shared/ErrorTests.cs
+++ b/src/AzureIoTHub.Portal.Tests.Unit/Client/Pages/Shared/ErrorTests.cs
@@ -44,7 +44,6 @@ public void ProcessProblemDetailsShouldSnackBar()
var errorSnackBar = snackBars.First();
- _ = errorSnackBar.Message.Should().Be(problemDetailsException.ProblemDetailsWithExceptionDetails.Detail);
_ = errorSnackBar.Severity.Should().Be(Severity.Error);
}
}
diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Client/Pages/Shared/MainLayoutTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Client/Pages/Shared/MainLayoutTests.cs
index f17e7f15e..0ec8744d0 100644
--- a/src/AzureIoTHub.Portal.Tests.Unit/Client/Pages/Shared/MainLayoutTests.cs
+++ b/src/AzureIoTHub.Portal.Tests.Unit/Client/Pages/Shared/MainLayoutTests.cs
@@ -16,6 +16,7 @@ namespace AzureIoTHub.Portal.Tests.Unit.Client.Pages.Shared
using MudBlazor;
using NUnit.Framework;
using Portal.Client.Constants;
+ using Microsoft.AspNetCore.Components.Web;
[TestFixture]
public class MainLayoutTests : BlazorUnitTest
@@ -51,7 +52,7 @@ public void MainLayoutShouldRenderCorrectly()
cut.WaitForAssertion(() => cut.FindComponent().Instance.Should().NotBeNull());
cut.WaitForAssertion(() => cut.FindComponent().Instance.Should().NotBeNull());
cut.WaitForAssertion(() => cut.FindComponent().Instance.Should().NotBeNull());
- cut.WaitForAssertion(() => cut.FindComponent().Instance.Value.Should().Be("TEST"));
+ cut.WaitForAssertion(() => cut.FindComponent().Instance.Should().NotBeNull());
cut.WaitForAssertion(() => cut.FindComponents().Count.Should().Be(2));
cut.WaitForAssertion(() => cut.FindComponent().Instance.Should().NotBeNull());
cut.WaitForAssertion(() => cut.FindComponent().Instance.Should().NotBeNull());
diff --git a/src/AzureIoTHub.Portal.sln b/src/AzureIoTHub.Portal.sln
index 4459186ea..19408bef5 100644
--- a/src/AzureIoTHub.Portal.sln
+++ b/src/AzureIoTHub.Portal.sln
@@ -11,6 +11,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "00. Solution Items", "00. S
..\codecov.yml = ..\codecov.yml
Directory.Build.props = Directory.Build.props
Dockerfile = Dockerfile
+ global.json = global.json
..\LICENSE = ..\LICENSE
..\README.md = ..\README.md
EndProjectSection
@@ -54,8 +55,6 @@ Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-co
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureIoTHub.Portal.Server", "AzureIoTHub.Portal.Server\AzureIoTHub.Portal.Server.csproj", "{EF219BC4-0C53-4DE7-92D1-F970C6E56E71}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureIoTHub.Portal.Client", "AzureIoTHub.Portal.Client\AzureIoTHub.Portal.Client.csproj", "{24B26D0B-F293-484E-8175-1CF69FBEE992}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureIoTHub.Portal.Shared", "AzureIoTHub.Portal.Shared\AzureIoTHub.Portal.Shared.csproj", "{9F0A43D6-D7C2-4C92-AE22-BE48B7F83ACB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureIoTHub.Portal.Domain", "AzureIoTHub.Portal.Domain\AzureIoTHub.Portal.Domain.csproj", "{BC1E7AEF-393D-4771-8AD2-C0BE7E5C405F}"
@@ -64,6 +63,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureIoTHub.Portal.Infrastr
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureIoTHub.Portal.Tests.Unit", "AzureIoTHub.Portal.Tests.Unit\AzureIoTHub.Portal.Tests.Unit.csproj", "{51FD5B90-B422-47BF-83F2-516520CFB124}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureIoTHub.Portal.Client", "AzureIoTHub.Portal.Client\AzureIoTHub.Portal.Client.csproj", "{45DE395D-1403-41D8-87B9-6196AEB17518}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -78,10 +79,6 @@ Global
{EF219BC4-0C53-4DE7-92D1-F970C6E56E71}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF219BC4-0C53-4DE7-92D1-F970C6E56E71}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF219BC4-0C53-4DE7-92D1-F970C6E56E71}.Release|Any CPU.Build.0 = Release|Any CPU
- {24B26D0B-F293-484E-8175-1CF69FBEE992}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {24B26D0B-F293-484E-8175-1CF69FBEE992}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {24B26D0B-F293-484E-8175-1CF69FBEE992}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {24B26D0B-F293-484E-8175-1CF69FBEE992}.Release|Any CPU.Build.0 = Release|Any CPU
{9F0A43D6-D7C2-4C92-AE22-BE48B7F83ACB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9F0A43D6-D7C2-4C92-AE22-BE48B7F83ACB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9F0A43D6-D7C2-4C92-AE22-BE48B7F83ACB}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -98,6 +95,10 @@ Global
{51FD5B90-B422-47BF-83F2-516520CFB124}.Debug|Any CPU.Build.0 = Debug|Any CPU
{51FD5B90-B422-47BF-83F2-516520CFB124}.Release|Any CPU.ActiveCfg = Release|Any CPU
{51FD5B90-B422-47BF-83F2-516520CFB124}.Release|Any CPU.Build.0 = Release|Any CPU
+ {45DE395D-1403-41D8-87B9-6196AEB17518}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {45DE395D-1403-41D8-87B9-6196AEB17518}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {45DE395D-1403-41D8-87B9-6196AEB17518}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {45DE395D-1403-41D8-87B9-6196AEB17518}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/Dockerfile b/src/Dockerfile
index 1a841fc12..04c64470c 100644
--- a/src/Dockerfile
+++ b/src/Dockerfile
@@ -1,8 +1,5 @@
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
-
-
-
-FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
+FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
@@ -14,7 +11,7 @@ RUN rm packages-microsoft-prod.deb
RUN apt-get update; \
apt-get install -y apt-transport-https && \
apt-get update && \
- apt-get install -y dotnet-sdk-6.0
+ apt-get install -y dotnet-sdk-7.0
FROM build AS builder
WORKDIR /src
diff --git a/src/global.json b/src/global.json
index 0b738cd89..70e3dcc50 100644
--- a/src/global.json
+++ b/src/global.json
@@ -1,5 +1,5 @@
{
"sdk": {
- "version": "6.0.400"
+ "version": "7.0.100"
}
}