diff --git a/.github/workflows/continuous-integration-workflow.yml b/.github/workflows/continuous-integration-workflow.yml
index f1609bb44..ec55bbdde 100644
--- a/.github/workflows/continuous-integration-workflow.yml
+++ b/.github/workflows/continuous-integration-workflow.yml
@@ -10,66 +10,6 @@ jobs:
steps:
- uses: actions/checkout@v3
- - name: Modify web.config files in all apps
- shell: pwsh
- run: |
- $webConfigPaths = @(
- "${{ github.workspace }}\AdminUI\LearningHub.Nhs.AdminUI\web.config",
- "${{ github.workspace }}\WebAPI\LearningHub.Nhs.Api\web.config",
- "${{ github.workspace }}\LearningHub.Nhs.WebUI\web.config"
- )
-
- foreach ($path in $webConfigPaths) {
- if (Test-Path $path) {
- Write-Host "Modifying $path"
- [xml]$config = Get-Content $path
-
- if (-not $config.configuration.'system.webServer') {
- $systemWebServer = $config.CreateElement("system.webServer")
- $config.configuration.AppendChild($systemWebServer) | Out-Null
- } else {
- $systemWebServer = $config.configuration.'system.webServer'
- }
-
- if (-not $systemWebServer.httpProtocol) {
- $httpProtocol = $config.CreateElement("httpProtocol")
- $systemWebServer.AppendChild($httpProtocol) | Out-Null
- } else {
- $httpProtocol = $systemWebServer.httpProtocol
- }
-
- if (-not $httpProtocol.customHeaders) {
- $customHeaders = $config.CreateElement("customHeaders")
- $httpProtocol.AppendChild($customHeaders) | Out-Null
- } else {
- $customHeaders = $httpProtocol.customHeaders
- }
-
- foreach ($name in @("X-Powered-By", "Server")) {
- $removeNode = $config.CreateElement("remove")
- $removeNode.SetAttribute("name", $name)
- $customHeaders.AppendChild($removeNode) | Out-Null
- }
-
- if (-not $systemWebServer.security) {
- $security = $config.CreateElement("security")
- $systemWebServer.AppendChild($security) | Out-Null
- } else {
- $security = $systemWebServer.security
- }
-
- if (-not $security.requestFiltering) {
- $requestFiltering = $config.CreateElement("requestFiltering")
- $requestFiltering.SetAttribute("removeServerHeader", "true")
- $security.AppendChild($requestFiltering) | Out-Null
- }
-
- $config.Save($path)
- } else {
- Write-Host "File not found: $path"
- }
- }
-
- name: Setup .NET Core SDK 8.0
uses: actions/setup-dotnet@v3
with:
diff --git a/.gitignore b/.gitignore
index fcd06e014..5bc784140 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,3 +53,5 @@ obj
/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj.user
/WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj.user
/ReportAPI/LearningHub.Nhs.ReportApi/web.config
+/MessageQueueing/LearningHub.Nhs.MessageQueueing.Database/LearningHub.Nhs.MessageQueueing.Database.dbmdl
+/MessageQueueing/LearningHub.Nhs.MessageQueueing.Database/LearningHub.Nhs.MessageQueueing.Database.jfm
\ No newline at end of file
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Configuration/WebSettings.cs b/AdminUI/LearningHub.Nhs.AdminUI/Configuration/WebSettings.cs
index f8e3c1565..5c8ab554f 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/Configuration/WebSettings.cs
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Configuration/WebSettings.cs
@@ -27,6 +27,11 @@ public class WebSettings
///
public string LearningHubApiUrl { get; set; }
+ ///
+ /// Gets or sets the OpenApiUrl.
+ ///
+ public string OpenApiUrl { get; set; }
+
///
/// Gets or sets the user api url.
///
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Helpers/IOpenApiFacade.cs b/AdminUI/LearningHub.Nhs.AdminUI/Helpers/IOpenApiFacade.cs
new file mode 100644
index 000000000..2bcded72b
--- /dev/null
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Helpers/IOpenApiFacade.cs
@@ -0,0 +1,59 @@
+namespace LearningHub.Nhs.AdminUI.Helpers
+{
+ using System.Threading.Tasks;
+ using LearningHub.Nhs.Models.Common;
+
+ ///
+ /// Defines the .
+ ///
+ public interface IOpenApiFacade
+ {
+ ///
+ /// The GetAsync.
+ ///
+ /// The type.
+ /// The url.
+ /// The .
+ Task GetAsync(string url)
+ where T : class, new();
+
+ ///
+ /// The PostAsync.
+ ///
+ /// The type.
+ /// The url.
+ /// The body.
+ /// The .
+ Task PostAsync(string url, T body)
+ where T : class, new();
+
+ ///
+ /// The PostAsync.
+ ///
+ /// The type.
+ /// .
+ /// The url.
+ /// The body.
+ /// The .
+ Task PostAsync(string url, TBody body)
+ where T : class, new()
+ where TBody : class, new();
+
+ ///
+ /// The PutAsync.
+ ///
+ /// The url.
+ /// The .
+ Task PutAsync(string url);
+
+ ///
+ /// The PutAsync.
+ ///
+ /// .
+ /// The url.
+ /// The body.
+ /// The .
+ Task PutAsync(string url, T body)
+ where T : class, new();
+ }
+}
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Helpers/OpenApiFacade.cs b/AdminUI/LearningHub.Nhs.AdminUI/Helpers/OpenApiFacade.cs
new file mode 100644
index 000000000..6169d8e6b
--- /dev/null
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Helpers/OpenApiFacade.cs
@@ -0,0 +1,241 @@
+namespace LearningHub.Nhs.AdminUI.Helpers
+{
+ using System;
+ using System.Net.Http;
+ using System.Text;
+ using System.Threading.Tasks;
+ using LearningHub.Nhs.AdminUI.Interfaces;
+ using LearningHub.Nhs.Models.Common;
+ using Newtonsoft.Json;
+
+ ///
+ /// Defines the .
+ ///
+ public class OpenApiFacade : IOpenApiFacade
+ {
+ ///
+ /// Defines the _client.
+ ///
+ private readonly IOpenApiHttpClient client;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The client.
+ public OpenApiFacade(IOpenApiHttpClient client)
+ {
+ this.client = client;
+ }
+
+ ///
+ /// The GetAsync.
+ ///
+ /// .
+ /// The url.
+ /// The .
+ public async Task GetAsync(string url)
+ where T : class, new()
+ {
+ var client = await this.client.GetClientAsync();
+
+ var vm = new T();
+
+ var response = await client.GetAsync(url).ConfigureAwait(false);
+
+ if (response.IsSuccessStatusCode)
+ {
+ var result = response.Content.ReadAsStringAsync().Result;
+ vm = JsonConvert.DeserializeObject(result);
+
+ return vm;
+ }
+ else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
+ ||
+ response.StatusCode == System.Net.HttpStatusCode.Forbidden)
+ {
+ throw new Exception("AccessDenied");
+ }
+ else
+ {
+ throw new Exception($"Exception HttpStatusCode={response.StatusCode}");
+ }
+ }
+
+ ///
+ /// The PostAsync.
+ ///
+ /// .
+ /// The url.
+ /// The body.
+ /// The .
+ public async Task PostAsync(string url, T body)
+ where T : class, new()
+ {
+ var client = await this.client.GetClientAsync();
+
+ var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
+ var response = await client.PostAsync(url, content).ConfigureAwait(false);
+
+ if (response.IsSuccessStatusCode)
+ {
+ return;
+ }
+ else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
+ ||
+ response.StatusCode == System.Net.HttpStatusCode.Forbidden)
+ {
+ throw new Exception("AccessDenied");
+ }
+ else
+ {
+ throw new Exception($"Exception HttpStatusCode={response.StatusCode}");
+ }
+ }
+
+ ///
+ /// The PostAsync.
+ ///
+ /// The return type.
+ /// The type of body parameter.
+ /// The url.
+ /// The body.
+ /// The .
+ public async Task PostAsync(string url, TBody body)
+ where TBody : class, new()
+ where T : class, new()
+ {
+ var client = await this.client.GetClientAsync();
+
+ var vm = new T();
+ var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
+ var response = await client.PostAsync(url, content).ConfigureAwait(false);
+
+ if (response.IsSuccessStatusCode)
+ {
+ var result = response.Content.ReadAsStringAsync().Result;
+ var apiResponse = JsonConvert.DeserializeObject(result);
+ if (apiResponse.Success)
+ {
+ return apiResponse;
+ }
+ else
+ {
+ string details = string.Empty;
+ if (apiResponse.ValidationResult != null)
+ {
+ if (apiResponse.ValidationResult.Details != null)
+ {
+ details = $"::ValidationResult: {string.Join(",", apiResponse.ValidationResult.Details)}";
+ }
+ }
+
+ throw new Exception($"PostAsync ApiResponse returned False: {details}");
+ }
+ }
+ else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
+ ||
+ response.StatusCode == System.Net.HttpStatusCode.Forbidden)
+ {
+ throw new Exception("Access Denied");
+ }
+ else
+ {
+ throw new Exception($"Exception HttpStatusCode={response.StatusCode}");
+ }
+ }
+
+ ///
+ /// The PutAsync.
+ ///
+ /// The url.
+ /// The .
+ public async Task PutAsync(string url)
+ {
+ var client = await this.client.GetClientAsync();
+
+ var response = await client.PutAsync(url, null).ConfigureAwait(false);
+
+ if (response.IsSuccessStatusCode)
+ {
+ var result = response.Content.ReadAsStringAsync().Result;
+ var apiResponse = JsonConvert.DeserializeObject(result);
+ if (apiResponse.Success)
+ {
+ return apiResponse;
+ }
+ else
+ {
+ string details = string.Empty;
+ if (apiResponse.ValidationResult != null)
+ {
+ if (apiResponse.ValidationResult.Details != null)
+ {
+ details = $"::ValidationResult: {string.Join(",", apiResponse.ValidationResult.Details)}";
+ }
+ }
+
+ throw new Exception($"PutAsync ApiResponse returned False: {details}");
+ }
+ }
+ else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
+ ||
+ response.StatusCode == System.Net.HttpStatusCode.Forbidden)
+ {
+ throw new Exception("Access Denied");
+ }
+ else
+ {
+ throw new Exception($"Exception HttpStatusCode={response.StatusCode}");
+ }
+ }
+
+ ///
+ /// The PutAsync.
+ ///
+ /// .
+ /// The url.
+ /// The body.
+ /// The .
+ public async Task PutAsync(string url, T body)
+ where T : class, new()
+ {
+ var client = await this.client.GetClientAsync();
+
+ var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
+ var response = await client.PutAsync(url, content).ConfigureAwait(false);
+
+ if (response.IsSuccessStatusCode)
+ {
+ var result = response.Content.ReadAsStringAsync().Result;
+ var apiResponse = JsonConvert.DeserializeObject(result);
+ if (apiResponse.Success)
+ {
+ return apiResponse;
+ }
+ else
+ {
+ string details = string.Empty;
+ if (apiResponse.ValidationResult != null)
+ {
+ if (apiResponse.ValidationResult.Details != null)
+ {
+ details = $"::ValidationResult: {string.Join(",", apiResponse.ValidationResult.Details)}";
+ }
+ }
+
+ throw new Exception($"PutAsync ApiResponse returned False: {details}");
+ }
+ }
+ else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
+ ||
+ response.StatusCode == System.Net.HttpStatusCode.Forbidden)
+ {
+ throw new Exception("Access Denied");
+ }
+ else
+ {
+ throw new Exception($"Exception HttpStatusCode={response.StatusCode}");
+ }
+ }
+ }
+}
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Interfaces/IOpenApiHttpClient.cs b/AdminUI/LearningHub.Nhs.AdminUI/Interfaces/IOpenApiHttpClient.cs
new file mode 100644
index 000000000..34c488767
--- /dev/null
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Interfaces/IOpenApiHttpClient.cs
@@ -0,0 +1,17 @@
+namespace LearningHub.Nhs.AdminUI.Interfaces
+{
+ using System.Net.Http;
+ using System.Threading.Tasks;
+
+ ///
+ /// The OpenApiHttpClient interface.
+ ///
+ public interface IOpenApiHttpClient
+ {
+ ///
+ /// The get client.
+ ///
+ /// The .
+ Task GetClientAsync();
+ }
+}
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj b/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj
index eba6b6ffa..2038ce016 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj
+++ b/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj
@@ -89,7 +89,7 @@
-
+
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/ServiceCollectionExtension.cs b/AdminUI/LearningHub.Nhs.AdminUI/ServiceCollectionExtension.cs
index 81867365f..1039a3673 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/ServiceCollectionExtension.cs
+++ b/AdminUI/LearningHub.Nhs.AdminUI/ServiceCollectionExtension.cs
@@ -86,6 +86,7 @@ public static void ConfigureServices(this IServiceCollection services, IConfigur
services.AddSingleton(configuration);
services.AddScoped();
+ services.AddScoped();
services.AddScoped();
services.AddScoped();
services.AddScoped();
@@ -132,11 +133,19 @@ public static void ConfigureServices(this IServiceCollection services, IConfigur
ServerCertificateCustomValidationCallback =
HttpClientHandler.DangerousAcceptAnyServerCertificateValidator,
});
+ services.AddHttpClient()
+ .ConfigurePrimaryHttpMessageHandler(
+ () => new HttpClientHandler
+ {
+ ServerCertificateCustomValidationCallback =
+ HttpClientHandler.DangerousAcceptAnyServerCertificateValidator,
+ });
}
else
{
services.AddHttpClient();
services.AddHttpClient();
+ services.AddHttpClient();
}
services.AddTransient();
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Services/BaseService.cs b/AdminUI/LearningHub.Nhs.AdminUI/Services/BaseService.cs
index ab2a377e8..c164b5691 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/Services/BaseService.cs
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Services/BaseService.cs
@@ -12,6 +12,11 @@ public class BaseService
///
private ILearningHubHttpClient learningHubHttpClient;
+ ///
+ /// Defines the openApiHttpClient.
+ ///
+ private IOpenApiHttpClient openApiHttpClient;
+
///
/// Initializes a new instance of the class.
///
@@ -21,9 +26,25 @@ protected BaseService(ILearningHubHttpClient learningHubHttpClient)
this.learningHubHttpClient = learningHubHttpClient;
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The learningHubHttpClient.
+ /// The openApiHttpClient.
+ protected BaseService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient)
+ {
+ this.learningHubHttpClient = learningHubHttpClient;
+ this.openApiHttpClient = openApiHttpClient;
+ }
+
///
/// Gets the LearningHubHttpClient.
///
protected ILearningHubHttpClient LearningHubHttpClient => this.learningHubHttpClient;
+
+ ///
+ /// Gets the OpenApiHttpClient.
+ ///
+ protected IOpenApiHttpClient OpenApiHttpClient => this.openApiHttpClient;
}
}
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Services/CatalogueService.cs b/AdminUI/LearningHub.Nhs.AdminUI/Services/CatalogueService.cs
index 1fa44df2b..2ac0088d9 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/Services/CatalogueService.cs
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Services/CatalogueService.cs
@@ -19,19 +19,21 @@ public class CatalogueService : BaseService, ICatalogueService
///
/// Defines the _facade.
///
- private readonly ILearningHubApiFacade facade;
+ private readonly IOpenApiFacade facade;
///
/// Initializes a new instance of the class.
///
/// The learningHubHttpClient.
- /// The learningHubApiFacade.
+ /// The Open Api Http Client.
+ /// The openApiFacade.
public CatalogueService(
ILearningHubHttpClient learningHubHttpClient,
- ILearningHubApiFacade learningHubApiFacade)
+ IOpenApiHttpClient openApiHttpClient,
+ IOpenApiFacade openApiFacade)
: base(learningHubHttpClient)
{
- this.facade = learningHubApiFacade;
+ this.facade = openApiFacade;
}
///
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Services/ContentService.cs b/AdminUI/LearningHub.Nhs.AdminUI/Services/ContentService.cs
index d49cd8422..ec983fffd 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/Services/ContentService.cs
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Services/ContentService.cs
@@ -27,15 +27,17 @@ public class ContentService : BaseService, IContentService
///
private readonly IFileService fileService;
private readonly IAzureMediaService azureMediaService;
+ private readonly IOpenApiHttpClient openApiHttpClient;
///
/// Initializes a new instance of the class.
///
/// The learningHubHttpClient.
+ /// The openApiHttpClient.
/// The fileService.
/// azureMediaService.
- public ContentService(ILearningHubHttpClient learningHubHttpClient, IFileService fileService, IAzureMediaService azureMediaService)
- : base(learningHubHttpClient)
+ public ContentService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, IFileService fileService, IAzureMediaService azureMediaService)
+ : base(learningHubHttpClient, openApiHttpClient)
{
this.fileService = fileService;
this.azureMediaService = azureMediaService;
@@ -48,7 +50,7 @@ public ContentService(ILearningHubHttpClient learningHubHttpClient, IFileService
/// The .
public async Task DiscardAsync(int pageId)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/discard/{pageId}";
var response = await client.PutAsync(request, null).ConfigureAwait(false);
if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized ||
@@ -68,7 +70,7 @@ public async Task GetPageByIdAsync(int id, bool includeHidden = f
{
PageViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = !includeHidden ? $"content/page/{id}" : $"content/page-all/{id}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -97,7 +99,7 @@ public async Task GetPageSectionDetailByIdAsync(int
{
PageSectionDetailViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/page-section-detail/{id}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -126,7 +128,7 @@ public async Task GetEditablePageSectionDetailByIdAs
{
PageSectionDetailViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/editable-page-section-detail/{pageSectionId}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -154,7 +156,7 @@ public async Task GetPagesAsync()
{
PageResultViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/pages";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -181,7 +183,7 @@ public async Task GetPagesAsync()
/// The .
public async Task PublishAsync(int pageId)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/publish/{pageId}";
var response = await client.PutAsync(request, null).ConfigureAwait(false);
if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized ||
@@ -214,7 +216,7 @@ public async Task UpdatePageImageSectionDetailAsync(int pageId, PageImageSection
var json = JsonConvert.SerializeObject(model);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/page-image-section-detail/{pageId}";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -232,7 +234,7 @@ public async Task UpdatePageImageSectionDetailAsync(int pageId, PageImageSection
/// The .
public async Task ChangeOrderAsync(UpdatePageSectionOrderModel requestViewModel)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = "content/change-order/";
var content = new StringContent(
JsonConvert.SerializeObject(requestViewModel),
@@ -259,7 +261,7 @@ public async Task ChangeOrderAsync(UpdatePageSectionOrderModel requestViewModel)
/// The .
public async Task CloneAsync(int pageSectionId)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/clone/{pageSectionId}";
var response = await client.PutAsync(request, null).ConfigureAwait(false);
if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized ||
@@ -276,7 +278,7 @@ public async Task CloneAsync(int pageSectionId)
/// The .
public async Task HideAsync(int pageSectionId)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/hide/{pageSectionId}";
var response = await client.PutAsync(request, null).ConfigureAwait(false);
if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized ||
@@ -293,7 +295,7 @@ public async Task HideAsync(int pageSectionId)
/// The .
public async Task UnHideAsync(int pageSectionId)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/unhide/{pageSectionId}";
var response = await client.PutAsync(request, null).ConfigureAwait(false);
if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized ||
@@ -310,7 +312,7 @@ public async Task UnHideAsync(int pageSectionId)
/// The .
public async Task DeleteAsync(int pageSectionId)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/delete/{pageSectionId}";
var response = await client.PutAsync(request, null).ConfigureAwait(false);
if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized ||
@@ -376,7 +378,7 @@ public async Task> GetFileTypeAsync()
{
List fileTypeList = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetFileTypes";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -459,7 +461,7 @@ public async Task SaveAttributeFileDetailsAsync(FileCreateRequestViewModel
var json = JsonConvert.SerializeObject(fileCreateRequestViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/save-attribute-file";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -493,7 +495,7 @@ public async Task SaveVideoAssetAsync(FileCreateRequestViewModel fileCreate
var json = JsonConvert.SerializeObject(fileCreateRequestViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/save-video-asset";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -593,7 +595,7 @@ public async Task GetFileChunkDetail(int fileChunkDeta
{
FileChunkDetailViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetFileChunkDetail/{fileChunkDetailId}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -624,7 +626,7 @@ public async Task SaveFileChunkDetailsAsync(FileChunkDetailViewModel fileCh
var json = JsonConvert.SerializeObject(fileChunkDetailCreateRequestViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/SaveFileChunkDetail";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -682,7 +684,7 @@ public async Task RegisterChunkedFileAsync(FileChunkRegisterMo
public async Task DeleteFileChunkDetailAsync(int fileChunkDetailId)
{
ApiResponse apiResponse = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/DeleteFileChunkDetail/{fileChunkDetailId}";
var response = await client.DeleteAsync(request).ConfigureAwait(false);
@@ -814,7 +816,7 @@ public async Task UpdateVideoAssetAsync(VideoAssetViewModel model)
var json = JsonConvert.SerializeObject(model);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/update-video-asset";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -844,7 +846,7 @@ public async Task UpdateVideoAssetAsync(VideoAssetViewModel model)
/// The .
public async Task CreatePageSectionAsync(PageSectionViewModel requestViewModel)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = "content/create-page-section/";
var content = new StringContent(
JsonConvert.SerializeObject(requestViewModel),
@@ -874,7 +876,7 @@ public async Task CreatePageSectionAsync(PageSectionViewModel requestViewMo
/// The .
public async Task UpdatePageSectionDetailAsync(PageSectionDetailViewModel updateViewModel)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = "content/update-page-section-detail/";
var content = new StringContent(
JsonConvert.SerializeObject(updateViewModel),
@@ -899,7 +901,7 @@ public async Task GetPageSectionDetailVideoAssetById
{
PageSectionDetailViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"content/page-section-detail-video/{id}";
var response = await client.GetAsync(request).ConfigureAwait(false);
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Services/EventService.cs b/AdminUI/LearningHub.Nhs.AdminUI/Services/EventService.cs
index 000fce940..db61e47e3 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/Services/EventService.cs
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Services/EventService.cs
@@ -18,8 +18,9 @@ public class EventService : BaseService, IEventService
/// Initializes a new instance of the class.
///
/// The learningHubHttpClient.
- public EventService(ILearningHubHttpClient learningHubHttpClient)
- : base(learningHubHttpClient)
+ /// The openApiHttpClient.
+ public EventService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient)
+ : base(learningHubHttpClient, openApiHttpClient)
{
}
@@ -30,7 +31,7 @@ public async Task Create(Event eventEntity)
var json = JsonConvert.SerializeObject(eventEntity);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Event/Create";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Services/HierarchyService.cs b/AdminUI/LearningHub.Nhs.AdminUI/Services/HierarchyService.cs
index b408cb637..17b37999b 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/Services/HierarchyService.cs
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Services/HierarchyService.cs
@@ -16,21 +16,21 @@ public class HierarchyService : BaseService, IHierarchyService
///
/// Defines the _facade.
///
- private readonly ILearningHubApiFacade facade;
+ private readonly IOpenApiFacade facade;
///
/// Initializes a new instance of the class.
///
/// The learning hub http client.
- /// The learningHubApiFacade.
+ /// The openApiFacade.
/// The logger.
public HierarchyService(
ILearningHubHttpClient learningHubHttpClient,
- ILearningHubApiFacade learningHubApiFacade,
+ IOpenApiFacade openApiFacade,
ILogger logger)
: base(learningHubHttpClient)
{
- this.facade = learningHubApiFacade;
+ this.facade = openApiFacade;
}
///
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Services/OpenApiHttpClient.cs b/AdminUI/LearningHub.Nhs.AdminUI/Services/OpenApiHttpClient.cs
new file mode 100644
index 000000000..5e8463cad
--- /dev/null
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Services/OpenApiHttpClient.cs
@@ -0,0 +1,39 @@
+namespace LearningHub.Nhs.AdminUI.Services
+{
+ using System.Net.Http;
+ using LearningHub.Nhs.AdminUI.Configuration;
+ using LearningHub.Nhs.AdminUI.Interfaces;
+ using LearningHub.Nhs.Caching;
+ using Microsoft.AspNetCore.Http;
+ using Microsoft.Extensions.Logging;
+ using Microsoft.Extensions.Options;
+
+ ///
+ /// The open api http client.
+ ///
+ public class OpenApiHttpClient : BaseHttpClient, IOpenApiHttpClient
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The http context accessor.
+ /// The web settings.
+ /// The http client.
+ /// The logger.
+ /// The cache service.
+ public OpenApiHttpClient(
+ IHttpContextAccessor httpContextAccessor,
+ IOptions webSettings,
+ HttpClient client,
+ ILogger logger,
+ ICacheService cacheService)
+ : base(httpContextAccessor, webSettings.Value, client, logger, cacheService)
+ {
+ }
+
+ ///
+ /// Gets the open api url.
+ ///
+ public override string ApiUrl => this.WebSettings.OpenApiUrl;
+ }
+}
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Services/ProviderService.cs b/AdminUI/LearningHub.Nhs.AdminUI/Services/ProviderService.cs
index eeb6976f9..cfdc4050b 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/Services/ProviderService.cs
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Services/ProviderService.cs
@@ -24,19 +24,20 @@ public class ProviderService : BaseService, IProviderService
///
/// Defines the _facade.
///
- private readonly ILearningHubApiFacade facade;
+ private readonly IOpenApiFacade facade;
///
/// Initializes a new instance of the class.
///
/// The cache service.
/// Learning hub http client.
- /// The learningHubApiFacade.
- public ProviderService(ICacheService cacheService, ILearningHubHttpClient learningHubHttpClient, ILearningHubApiFacade learningHubApiFacade)
+ /// open api http client.
+ /// The openApiFacade.
+ public ProviderService(ICacheService cacheService, ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, IOpenApiFacade openApiFacade)
: base(learningHubHttpClient)
{
this.cacheService = cacheService;
- this.facade = learningHubApiFacade;
+ this.facade = openApiFacade;
}
///
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Services/ResourceService.cs b/AdminUI/LearningHub.Nhs.AdminUI/Services/ResourceService.cs
index 4c6e3fe46..038681c64 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/Services/ResourceService.cs
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Services/ResourceService.cs
@@ -24,8 +24,9 @@ public class ResourceService : BaseService, IResourceService
/// Initializes a new instance of the class.
///
/// The learningHubHttpClient.
- public ResourceService(ILearningHubHttpClient learningHubHttpClient)
- : base(learningHubHttpClient)
+ /// The openApiHttpClient.
+ public ResourceService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient)
+ : base(learningHubHttpClient, openApiHttpClient)
{
}
@@ -50,7 +51,7 @@ public async Task> GetResourc
var filter = JsonConvert.SerializeObject(pagingRequestModel.Filter);
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var json = JsonConvert.SerializeObject(pagingRequestModel);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
@@ -82,7 +83,7 @@ public async Task> GetResourceVersionEventsA
{
List viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetResourceVersionEvents/{resourceVersionId.ToString()}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -111,7 +112,7 @@ public async Task GetResourceVersionVa
{
ResourceVersionValidationResultViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetResourceVersionValidationResult/{resourceVersionId.ToString()}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -140,7 +141,7 @@ public async Task GetResourceVersionDevIdDetailsA
{
ResourceVersionDevIdViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetResourceVersionDevIdDetails/{resourceVersionId.ToString()}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -167,7 +168,7 @@ public async Task GetResourceVersionDevIdDetailsA
/// The .
public async Task DoesDevIdExistsAsync(string devId)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/DoesDevIdExists/{devId}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -198,7 +199,7 @@ public async Task UpdateDevIdDetailsAsync(ResourceVersionDevIdViewModel model)
var json = JsonConvert.SerializeObject(model);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/UpdateDevId";
var response = await client.PutAsync(request, stringContent).ConfigureAwait(false);
@@ -223,7 +224,7 @@ public async Task GetResourceVersionExtendedVi
{
ResourceVersionExtendedViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetResourceVersionExtendedViewModel/{resourceVersionId.ToString()}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -252,7 +253,7 @@ public async Task> GetResourceVersionsAsync(int r
{
List viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetResourceVersions/{resourceId.ToString()}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -283,7 +284,7 @@ public async Task RevertToDraft(int resourceVersion
var json = JsonConvert.SerializeObject(new { resourceVersionId });
var stringContent = new StringContent(resourceVersionId.ToString(), Encoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/RevertToDraft";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -335,7 +336,7 @@ public async Task TransferResourceOwnership(int res
var json = JsonConvert.SerializeObject(vm);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/TransferResourceOwnership";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -382,7 +383,7 @@ public async Task UnpublishResourceVersionAsync(int
var json = JsonConvert.SerializeObject(vm);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/UnpublishResourceVersion";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -433,7 +434,7 @@ public async Task CreateResourceVersionEvent(int re
var json = JsonConvert.SerializeObject(vm);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/CreateResourceVersionEvent";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Services/UserGroupService.cs b/AdminUI/LearningHub.Nhs.AdminUI/Services/UserGroupService.cs
index 45dff59de..0a941c761 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/Services/UserGroupService.cs
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Services/UserGroupService.cs
@@ -32,15 +32,17 @@ public class UserGroupService : BaseService, IUserGroupService
/// Initializes a new instance of the class.
///
/// The learningHubHttpClient.
+ /// The Open Api Http Client.
/// The http context accessor.
/// The cacheService.
/// The roleService.
public UserGroupService(
ILearningHubHttpClient learningHubHttpClient,
+ IOpenApiHttpClient openApiHttpClient,
ICacheService cacheService,
IRoleService roleService,
IHttpContextAccessor contextAccessor)
- : base(learningHubHttpClient)
+ : base(learningHubHttpClient, openApiHttpClient)
{
this.contextAccessor = contextAccessor;
this.cacheService = cacheService;
@@ -112,7 +114,7 @@ public async Task GetUserGroupAdminDetailbyIdAsyn
{
UserGroupAdminDetailViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/GetUserGroupAdminDetailById/{id}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -141,7 +143,7 @@ public async Task> GetUserGroupAdminRoleDetailByIdA
{
List viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/GetUserGroupAdminRoleDetailById/{id}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -171,7 +173,7 @@ public async Task CreateUserGroup(UserGroupAdminDet
var json = JsonConvert.SerializeObject(userGroup);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/CreateUserGroup";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -214,7 +216,7 @@ public async Task UpdateUserGroup(UserGroupAdminDet
var json = JsonConvert.SerializeObject(userGroup);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/UpdateUserGroup";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -258,7 +260,7 @@ public async Task DeleteUserGroup(int userGroupId)
var json = JsonConvert.SerializeObject(userGroup);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/DeleteUserGroup";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -308,7 +310,7 @@ public async Task AddUsersToUserGroup(int userGroup
var json = JsonConvert.SerializeObject(userUserGroups);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/AddUserUserGroups";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -359,7 +361,7 @@ public async Task AddUserGroupsToCatalogue(int cata
var json = JsonConvert.SerializeObject(roleUserGroups);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/AddRoleUserGroups";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -403,7 +405,7 @@ public async Task DeleteUserUserGroup(int userUserG
var json = JsonConvert.SerializeObject(userGroup);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/DeleteUserUserGroup";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -447,7 +449,7 @@ public async Task DeleteRoleUserGroup(int roleUserG
var json = JsonConvert.SerializeObject(roleUserGroupUpdate);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/DeleteRoleUserGroup";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -502,7 +504,7 @@ public async Task> GetUserUserGroupPageAs
var filter = JsonConvert.SerializeObject(pagingRequestModel.Filter);
var presetFilter = JsonConvert.SerializeObject(pagingRequestModel.PresetFilter);
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/GetUserUserGroupAdminFilteredPage"
+ $"/{pagingRequestModel.Page}"
@@ -551,7 +553,7 @@ public async Task> GetRoleUserGroupPageAs
var filter = JsonConvert.SerializeObject(pagingRequestModel.Filter);
var presetFilter = JsonConvert.SerializeObject(pagingRequestModel.PresetFilter);
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/GetRoleUserGroupAdminFilteredPage"
+ $"/{pagingRequestModel.Page}"
@@ -598,7 +600,7 @@ private async Task> FetchRoleUserGroupDetailAsync()
{
List viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/GetUserGroupRoleDetail";
var response = await client.GetAsync(request).ConfigureAwait(false);
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/Services/UserService.cs b/AdminUI/LearningHub.Nhs.AdminUI/Services/UserService.cs
index 7c64fd2c0..c84dbc2f2 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/Services/UserService.cs
+++ b/AdminUI/LearningHub.Nhs.AdminUI/Services/UserService.cs
@@ -31,10 +31,11 @@ public class UserService : BaseService, IUserService
/// Initializes a new instance of the class.
///
/// The learningHubHttpClient.
+ /// The openApiHttpClient .
/// The CacheService .
/// The userApiHttpClient .
- public UserService(ILearningHubHttpClient learningHubHttpClient, ICacheService cacheService, IUserApiHttpClient userApiHttpClient)
- : base(learningHubHttpClient)
+ public UserService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ICacheService cacheService, IUserApiHttpClient userApiHttpClient)
+ : base(learningHubHttpClient, openApiHttpClient)
{
this.cacheService = cacheService;
this.userApiHttpClient = userApiHttpClient;
@@ -166,7 +167,7 @@ public async Task GetEmailAddressRegistrationStatusAsyn
var filter = JsonConvert.SerializeObject(pagingRequestModel.Filter);
var presetFilter = JsonConvert.SerializeObject(pagingRequestModel.PresetFilter);
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"User/GetLHUserAdminBasicFilteredPage"
+ $"/{pagingRequestModel.Page}"
@@ -274,7 +275,7 @@ public async Task> GetUserCon
var modelString = JsonConvert.SerializeObject(pagingRequestModel);
var content = new StringContent(modelString, Encoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetResourceAdminSearchFilteredPage";
@@ -459,7 +460,7 @@ public async Task AddUserGroupsToUser(int userId, s
var json = JsonConvert.SerializeObject(userUserGroups);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/AddUserUserGroups";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -565,7 +566,7 @@ public async Task> GetUserLearni
var filter = JsonConvert.SerializeObject(pagingRequestModel.Filter);
var presetFilter = JsonConvert.SerializeObject(pagingRequestModel.PresetFilter);
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserLearningRecord/GetUserLearningRecords"
+ $"/{pagingRequestModel.Page}"
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/appsettings.json b/AdminUI/LearningHub.Nhs.AdminUI/appsettings.json
index b3a5c0f9c..95a04b8bc 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/appsettings.json
+++ b/AdminUI/LearningHub.Nhs.AdminUI/appsettings.json
@@ -17,6 +17,7 @@
"ELfhHubUrl": "",
"LearningHubApiUrl": "",
"UserApiUrl": "",
+ "OpenApiUrl": "",
"LearningHubAdminUrl": "",
"LogConfigDir": "D:\\learningHub\\NLog",
"AuthenticationServiceUrl": "",
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/package-lock.json b/AdminUI/LearningHub.Nhs.AdminUI/package-lock.json
index bbea60904..ccd742288 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/package-lock.json
+++ b/AdminUI/LearningHub.Nhs.AdminUI/package-lock.json
@@ -10,20 +10,20 @@
"dependencies": {
"@ckeditor/ckeditor5-build-classic": "16.0.0",
"@ckeditor/ckeditor5-vue": "1.0.3",
- "@mediakind/mkplayer": "^1.22.0",
+ "@mediakind/mkplayer": "^1.21.0",
"axios": "^0.30.0",
"babel-polyfill": "^6.26.0",
"bootstrap": "^4.6.2",
"ckeditor4-vue": "^0.2.0",
"concurrently": "^7.6.0",
- "core-js": "^3.42.0",
+ "core-js": "^3.41.0",
"js-cookie": "2.2.1",
"lodash": "4.17.21",
"moment": "^2.30.1",
"navigator.sendbeacon": "0.0.20",
"nhsuk-frontend": "^6.1.2",
"openseadragon": "^2.4.2",
- "sanitize-html": "^2.17.0",
+ "sanitize-html": "^2.15.0",
"save": "^2.9.0",
"ts-debounce": "2.3.0",
"tus-js-client": "^2.3.2",
@@ -40,8 +40,8 @@
"vuex": "^3.6.2"
},
"devDependencies": {
- "@babel/core": "^7.27.3",
- "@babel/preset-env": "^7.27.2",
+ "@babel/core": "^7.26.10",
+ "@babel/preset-env": "^7.26.9",
"@types/axios": "^0.14.0",
"@types/bootstrap": "4.1.3",
"@types/ckeditor": "4.9.10",
@@ -49,9 +49,9 @@
"@types/jquery": "^3.3.32",
"@types/jquery-match-height": "^0.7.8",
"@types/js-cookie": "2.2.1",
- "@types/lodash": "4.17.17",
+ "@types/lodash": "4.17.16",
"@types/openseadragon": "^2.4.5",
- "@types/sanitize-html": "^2.16.0",
+ "@types/sanitize-html": "^2.15.0",
"@types/vuelidate": "^0.7.22",
"@vue/babel-preset-app": "4.5.19",
"@vue/test-utils": "^1.3.6",
@@ -63,7 +63,7 @@
"css-loader": "^5.2.4",
"file-loader": "^6.2.0",
"jest": "^27.5.1",
- "sass": "^1.89.0",
+ "sass": "^1.86.3",
"sass-loader": "^11.0.1",
"style-loader": "^2.0.0",
"ts-jest": "^27.1.5",
@@ -72,7 +72,7 @@
"vue-jest": "^3.0.7",
"vue-loader": "^15.11.1",
"vue-template-compiler": "^2.7.16",
- "webpack": "^5.99.9",
+ "webpack": "^5.99.5",
"webpack-cli": "^4.10.0",
"webpack-dev-server": "^3.11.3"
}
@@ -92,24 +92,24 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
- "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.25.9",
"js-tokens": "^4.0.0",
- "picocolors": "^1.1.1"
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz",
- "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
+ "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -117,22 +117,22 @@
}
},
"node_modules/@babel/core": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.3.tgz",
- "integrity": "sha512-hyrN8ivxfvJ4i0fIJuV4EOlV0WDMz5Ui4StRTgVaAvWeiRCilXgwVvxJKtFQ3TKtHgJscB2YiXKGNJuVwhQMtA==",
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
+ "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.27.3",
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-module-transforms": "^7.27.3",
- "@babel/helpers": "^7.27.3",
- "@babel/parser": "^7.27.3",
- "@babel/template": "^7.27.2",
- "@babel/traverse": "^7.27.3",
- "@babel/types": "^7.27.3",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.10",
+ "@babel/helper-compilation-targets": "^7.26.5",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.10",
+ "@babel/parser": "^7.26.10",
+ "@babel/template": "^7.26.9",
+ "@babel/traverse": "^7.26.10",
+ "@babel/types": "^7.26.10",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -178,14 +178,14 @@
"dev": true
},
"node_modules/@babel/generator": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.3.tgz",
- "integrity": "sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==",
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz",
+ "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.27.3",
- "@babel/types": "^7.27.3",
+ "@babel/parser": "^7.26.10",
+ "@babel/types": "^7.26.10",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^3.0.2"
@@ -195,27 +195,27 @@
}
},
"node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz",
- "integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.1"
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
- "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz",
+ "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.27.2",
- "@babel/helper-validator-option": "^7.27.1",
+ "@babel/compat-data": "^7.26.5",
+ "@babel/helper-validator-option": "^7.25.9",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
@@ -242,18 +242,18 @@
"license": "ISC"
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz",
- "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
+ "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-member-expression-to-functions": "^7.27.1",
- "@babel/helper-optimise-call-expression": "^7.27.1",
- "@babel/helper-replace-supers": "^7.27.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/traverse": "^7.27.1",
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
"semver": "^6.3.1"
},
"engines": {
@@ -264,13 +264,13 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz",
- "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz",
+ "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-annotate-as-pure": "^7.25.9",
"regexpu-core": "^6.2.0",
"semver": "^6.3.1"
},
@@ -324,43 +324,43 @@
"license": "MIT"
},
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
- "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
+ "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
- "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
- "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.27.3"
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -370,22 +370,22 @@
}
},
"node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
- "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
+ "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.1"
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
- "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
+ "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -393,15 +393,15 @@
}
},
"node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz",
- "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz",
+ "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-wrap-function": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-wrap-function": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -411,15 +411,15 @@
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz",
- "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz",
+ "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-member-expression-to-functions": "^7.27.1",
- "@babel/helper-optimise-call-expression": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/traverse": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -429,41 +429,40 @@
}
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
- "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
+ "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
- "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
- "license": "MIT",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
- "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
- "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -471,41 +470,41 @@
}
},
"node_modules/@babel/helper-wrap-function": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz",
- "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz",
+ "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.27.1",
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.3.tgz",
- "integrity": "sha512-h/eKy9agOya1IGuLaZ9tEUgz+uIRXcbtOhRtUyyMf8JFmn1iT13vnl/IGVWSkdOCG/pC57U4S1jnAabAavTMwg==",
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz",
+ "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.27.3"
+ "@babel/template": "^7.26.9",
+ "@babel/types": "^7.26.10"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.3.tgz",
- "integrity": "sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==",
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz",
+ "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.3"
+ "@babel/types": "^7.26.10"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -515,14 +514,14 @@
}
},
"node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz",
- "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz",
+ "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -532,13 +531,13 @@
}
},
"node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz",
- "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz",
+ "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -548,13 +547,13 @@
}
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz",
- "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz",
+ "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -564,15 +563,15 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz",
- "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz",
+ "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/plugin-transform-optional-chaining": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/plugin-transform-optional-chaining": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -582,14 +581,14 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz",
- "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz",
+ "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -724,13 +723,13 @@
}
},
"node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz",
- "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz",
+ "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -740,13 +739,12 @@
}
},
"node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz",
- "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
+ "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -929,13 +927,13 @@
}
},
"node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz",
- "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz",
+ "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -945,15 +943,15 @@
}
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz",
- "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz",
+ "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-remap-async-to-generator": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/helper-remap-async-to-generator": "^7.25.9",
+ "@babel/traverse": "^7.26.8"
},
"engines": {
"node": ">=6.9.0"
@@ -963,15 +961,15 @@
}
},
"node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz",
- "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz",
+ "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-remap-async-to-generator": "^7.27.1"
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-remap-async-to-generator": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -981,13 +979,13 @@
}
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz",
- "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==",
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz",
+ "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -997,13 +995,13 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.1.tgz",
- "integrity": "sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz",
+ "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1013,14 +1011,14 @@
}
},
"node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz",
- "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz",
+ "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1030,14 +1028,14 @@
}
},
"node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz",
- "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz",
+ "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1047,17 +1045,17 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz",
- "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz",
+ "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-compilation-targets": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-replace-supers": "^7.27.1",
- "@babel/traverse": "^7.27.1",
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
"globals": "^11.1.0"
},
"engines": {
@@ -1068,14 +1066,14 @@
}
},
"node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz",
- "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
+ "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/template": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/template": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1085,13 +1083,13 @@
}
},
"node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.1.tgz",
- "integrity": "sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz",
+ "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1101,14 +1099,14 @@
}
},
"node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz",
- "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz",
+ "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1118,13 +1116,13 @@
}
},
"node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz",
- "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz",
+ "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1134,14 +1132,14 @@
}
},
"node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz",
- "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz",
+ "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1151,13 +1149,13 @@
}
},
"node_modules/@babel/plugin-transform-dynamic-import": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz",
- "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz",
+ "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1167,13 +1165,13 @@
}
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz",
- "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz",
+ "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1183,13 +1181,13 @@
}
},
"node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz",
- "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz",
+ "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1199,14 +1197,14 @@
}
},
"node_modules/@babel/plugin-transform-for-of": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz",
- "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz",
+ "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1216,15 +1214,15 @@
}
},
"node_modules/@babel/plugin-transform-function-name": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz",
- "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz",
+ "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1234,13 +1232,13 @@
}
},
"node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz",
- "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz",
+ "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1250,13 +1248,13 @@
}
},
"node_modules/@babel/plugin-transform-literals": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz",
- "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz",
+ "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1266,13 +1264,13 @@
}
},
"node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz",
- "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz",
+ "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1282,13 +1280,13 @@
}
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz",
- "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz",
+ "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1298,14 +1296,14 @@
}
},
"node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz",
- "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz",
+ "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1315,14 +1313,14 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz",
- "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==",
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
+ "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1332,16 +1330,16 @@
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz",
- "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz",
+ "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1351,14 +1349,14 @@
}
},
"node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz",
- "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz",
+ "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1368,14 +1366,14 @@
}
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz",
- "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz",
+ "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1385,13 +1383,13 @@
}
},
"node_modules/@babel/plugin-transform-new-target": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz",
- "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz",
+ "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1401,13 +1399,13 @@
}
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz",
- "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==",
+ "version": "7.26.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz",
+ "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1417,13 +1415,13 @@
}
},
"node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz",
- "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz",
+ "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1433,16 +1431,15 @@
}
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.2.tgz",
- "integrity": "sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz",
+ "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/plugin-transform-destructuring": "^7.27.1",
- "@babel/plugin-transform-parameters": "^7.27.1"
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-transform-parameters": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1452,14 +1449,14 @@
}
},
"node_modules/@babel/plugin-transform-object-super": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz",
- "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz",
+ "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-replace-supers": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1469,13 +1466,13 @@
}
},
"node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz",
- "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz",
+ "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1485,14 +1482,14 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz",
- "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz",
+ "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1502,13 +1499,13 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz",
- "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz",
+ "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1518,14 +1515,14 @@
}
},
"node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz",
- "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz",
+ "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1535,15 +1532,15 @@
}
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz",
- "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz",
+ "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-create-class-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1553,13 +1550,13 @@
}
},
"node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz",
- "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz",
+ "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1569,13 +1566,14 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.1.tgz",
- "integrity": "sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz",
+ "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "regenerator-transform": "^0.15.2"
},
"engines": {
"node": ">=6.9.0"
@@ -1585,14 +1583,14 @@
}
},
"node_modules/@babel/plugin-transform-regexp-modifiers": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz",
- "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz",
+ "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1602,13 +1600,13 @@
}
},
"node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz",
- "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz",
+ "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1638,13 +1636,13 @@
}
},
"node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz",
- "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz",
+ "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1654,14 +1652,14 @@
}
},
"node_modules/@babel/plugin-transform-spread": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz",
- "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz",
+ "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1671,13 +1669,13 @@
}
},
"node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz",
- "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz",
+ "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1687,13 +1685,13 @@
}
},
"node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz",
- "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==",
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz",
+ "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1703,13 +1701,13 @@
}
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz",
- "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==",
+ "version": "7.26.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz",
+ "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.26.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1719,13 +1717,13 @@
}
},
"node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz",
- "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz",
+ "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1735,14 +1733,14 @@
}
},
"node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz",
- "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz",
+ "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1752,14 +1750,14 @@
}
},
"node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz",
- "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz",
+ "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1769,14 +1767,14 @@
}
},
"node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz",
- "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==",
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz",
+ "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1786,75 +1784,75 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.2.tgz",
- "integrity": "sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz",
+ "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.27.2",
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-validator-option": "^7.27.1",
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1",
- "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1",
+ "@babel/compat-data": "^7.26.8",
+ "@babel/helper-compilation-targets": "^7.26.5",
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9",
"@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-import-assertions": "^7.27.1",
- "@babel/plugin-syntax-import-attributes": "^7.27.1",
+ "@babel/plugin-syntax-import-assertions": "^7.26.0",
+ "@babel/plugin-syntax-import-attributes": "^7.26.0",
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.27.1",
- "@babel/plugin-transform-async-generator-functions": "^7.27.1",
- "@babel/plugin-transform-async-to-generator": "^7.27.1",
- "@babel/plugin-transform-block-scoped-functions": "^7.27.1",
- "@babel/plugin-transform-block-scoping": "^7.27.1",
- "@babel/plugin-transform-class-properties": "^7.27.1",
- "@babel/plugin-transform-class-static-block": "^7.27.1",
- "@babel/plugin-transform-classes": "^7.27.1",
- "@babel/plugin-transform-computed-properties": "^7.27.1",
- "@babel/plugin-transform-destructuring": "^7.27.1",
- "@babel/plugin-transform-dotall-regex": "^7.27.1",
- "@babel/plugin-transform-duplicate-keys": "^7.27.1",
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1",
- "@babel/plugin-transform-dynamic-import": "^7.27.1",
- "@babel/plugin-transform-exponentiation-operator": "^7.27.1",
- "@babel/plugin-transform-export-namespace-from": "^7.27.1",
- "@babel/plugin-transform-for-of": "^7.27.1",
- "@babel/plugin-transform-function-name": "^7.27.1",
- "@babel/plugin-transform-json-strings": "^7.27.1",
- "@babel/plugin-transform-literals": "^7.27.1",
- "@babel/plugin-transform-logical-assignment-operators": "^7.27.1",
- "@babel/plugin-transform-member-expression-literals": "^7.27.1",
- "@babel/plugin-transform-modules-amd": "^7.27.1",
- "@babel/plugin-transform-modules-commonjs": "^7.27.1",
- "@babel/plugin-transform-modules-systemjs": "^7.27.1",
- "@babel/plugin-transform-modules-umd": "^7.27.1",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1",
- "@babel/plugin-transform-new-target": "^7.27.1",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
- "@babel/plugin-transform-numeric-separator": "^7.27.1",
- "@babel/plugin-transform-object-rest-spread": "^7.27.2",
- "@babel/plugin-transform-object-super": "^7.27.1",
- "@babel/plugin-transform-optional-catch-binding": "^7.27.1",
- "@babel/plugin-transform-optional-chaining": "^7.27.1",
- "@babel/plugin-transform-parameters": "^7.27.1",
- "@babel/plugin-transform-private-methods": "^7.27.1",
- "@babel/plugin-transform-private-property-in-object": "^7.27.1",
- "@babel/plugin-transform-property-literals": "^7.27.1",
- "@babel/plugin-transform-regenerator": "^7.27.1",
- "@babel/plugin-transform-regexp-modifiers": "^7.27.1",
- "@babel/plugin-transform-reserved-words": "^7.27.1",
- "@babel/plugin-transform-shorthand-properties": "^7.27.1",
- "@babel/plugin-transform-spread": "^7.27.1",
- "@babel/plugin-transform-sticky-regex": "^7.27.1",
- "@babel/plugin-transform-template-literals": "^7.27.1",
- "@babel/plugin-transform-typeof-symbol": "^7.27.1",
- "@babel/plugin-transform-unicode-escapes": "^7.27.1",
- "@babel/plugin-transform-unicode-property-regex": "^7.27.1",
- "@babel/plugin-transform-unicode-regex": "^7.27.1",
- "@babel/plugin-transform-unicode-sets-regex": "^7.27.1",
+ "@babel/plugin-transform-arrow-functions": "^7.25.9",
+ "@babel/plugin-transform-async-generator-functions": "^7.26.8",
+ "@babel/plugin-transform-async-to-generator": "^7.25.9",
+ "@babel/plugin-transform-block-scoped-functions": "^7.26.5",
+ "@babel/plugin-transform-block-scoping": "^7.25.9",
+ "@babel/plugin-transform-class-properties": "^7.25.9",
+ "@babel/plugin-transform-class-static-block": "^7.26.0",
+ "@babel/plugin-transform-classes": "^7.25.9",
+ "@babel/plugin-transform-computed-properties": "^7.25.9",
+ "@babel/plugin-transform-destructuring": "^7.25.9",
+ "@babel/plugin-transform-dotall-regex": "^7.25.9",
+ "@babel/plugin-transform-duplicate-keys": "^7.25.9",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9",
+ "@babel/plugin-transform-dynamic-import": "^7.25.9",
+ "@babel/plugin-transform-exponentiation-operator": "^7.26.3",
+ "@babel/plugin-transform-export-namespace-from": "^7.25.9",
+ "@babel/plugin-transform-for-of": "^7.26.9",
+ "@babel/plugin-transform-function-name": "^7.25.9",
+ "@babel/plugin-transform-json-strings": "^7.25.9",
+ "@babel/plugin-transform-literals": "^7.25.9",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.25.9",
+ "@babel/plugin-transform-member-expression-literals": "^7.25.9",
+ "@babel/plugin-transform-modules-amd": "^7.25.9",
+ "@babel/plugin-transform-modules-commonjs": "^7.26.3",
+ "@babel/plugin-transform-modules-systemjs": "^7.25.9",
+ "@babel/plugin-transform-modules-umd": "^7.25.9",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9",
+ "@babel/plugin-transform-new-target": "^7.25.9",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6",
+ "@babel/plugin-transform-numeric-separator": "^7.25.9",
+ "@babel/plugin-transform-object-rest-spread": "^7.25.9",
+ "@babel/plugin-transform-object-super": "^7.25.9",
+ "@babel/plugin-transform-optional-catch-binding": "^7.25.9",
+ "@babel/plugin-transform-optional-chaining": "^7.25.9",
+ "@babel/plugin-transform-parameters": "^7.25.9",
+ "@babel/plugin-transform-private-methods": "^7.25.9",
+ "@babel/plugin-transform-private-property-in-object": "^7.25.9",
+ "@babel/plugin-transform-property-literals": "^7.25.9",
+ "@babel/plugin-transform-regenerator": "^7.25.9",
+ "@babel/plugin-transform-regexp-modifiers": "^7.26.0",
+ "@babel/plugin-transform-reserved-words": "^7.25.9",
+ "@babel/plugin-transform-shorthand-properties": "^7.25.9",
+ "@babel/plugin-transform-spread": "^7.25.9",
+ "@babel/plugin-transform-sticky-regex": "^7.25.9",
+ "@babel/plugin-transform-template-literals": "^7.26.8",
+ "@babel/plugin-transform-typeof-symbol": "^7.26.7",
+ "@babel/plugin-transform-unicode-escapes": "^7.25.9",
+ "@babel/plugin-transform-unicode-property-regex": "^7.25.9",
+ "@babel/plugin-transform-unicode-regex": "^7.25.9",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.25.9",
"@babel/preset-modules": "0.1.6-no-external-plugins",
"babel-plugin-polyfill-corejs2": "^0.4.10",
"babel-plugin-polyfill-corejs3": "^0.11.0",
@@ -1914,32 +1912,32 @@
"dev": true
},
"node_modules/@babel/template": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
- "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
+ "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/parser": "^7.27.2",
- "@babel/types": "^7.27.1"
+ "@babel/code-frame": "^7.26.2",
+ "@babel/parser": "^7.26.9",
+ "@babel/types": "^7.26.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.3.tgz",
- "integrity": "sha512-lId/IfN/Ye1CIu8xG7oKBHXd2iNb2aW1ilPszzGcJug6M8RCKfVNcYhpI5+bMvFYjK7lXIM0R+a+6r8xhHp2FQ==",
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz",
+ "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.27.3",
- "@babel/parser": "^7.27.3",
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.27.3",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.10",
+ "@babel/parser": "^7.26.10",
+ "@babel/template": "^7.26.9",
+ "@babel/types": "^7.26.10",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -1971,13 +1969,13 @@
"dev": true
},
"node_modules/@babel/types": {
- "version": "7.27.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz",
- "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==",
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz",
+ "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1"
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -3375,9 +3373,9 @@
}
},
"node_modules/@mediakind/mkplayer": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/@mediakind/mkplayer/-/mkplayer-1.22.0.tgz",
- "integrity": "sha512-1PWswbIw3U84QkRWbkCVDha0qppzrpDbxiytnRFkLeUpE8klKRWJtI92ph0favspfTFjanX8A0qTGRkA8lsLwA==",
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/@mediakind/mkplayer/-/mkplayer-1.21.0.tgz",
+ "integrity": "sha512-6sZwxQObISgmD4z0RV6xoi2bJgnOBtDAa2bPg4H/D095MaUInaDkrCimROst/rWfeMFg2m4h9PSmJV88cYbvQw==",
"license": "©2025 Copyright Mediakind Ltd. All Rights Reserved. Including All Downloadable Materials.",
"dependencies": {
"bitmovin-player": "8.193.0",
@@ -3951,16 +3949,15 @@
"dev": true
},
"node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true,
- "license": "MIT"
+ "version": "7.0.9",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
+ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==",
+ "dev": true
},
"node_modules/@types/lodash": {
- "version": "4.17.17",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.17.tgz",
- "integrity": "sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==",
+ "version": "4.17.16",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz",
+ "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==",
"dev": true,
"license": "MIT"
},
@@ -3989,9 +3986,9 @@
"dev": true
},
"node_modules/@types/sanitize-html": {
- "version": "2.16.0",
- "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-2.16.0.tgz",
- "integrity": "sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==",
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-2.15.0.tgz",
+ "integrity": "sha512-71Z6PbYsVKfp4i6Jvr37s5ql6if1Q/iJQT80NbaSi7uGaG8CqBMXP0pk/EsURAOuGdk5IJCd/vnzKrR7S3Txsw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4063,6 +4060,12 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/@types/vuelidate/node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true
+ },
"node_modules/@types/vuelidate/node_modules/postcss": {
"version": "8.5.1",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
@@ -4252,6 +4255,12 @@
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/postcss/node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true
+ },
"node_modules/@vue/babel-plugin-resolve-type/node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -7240,9 +7249,9 @@
}
},
"node_modules/core-js": {
- "version": "3.42.0",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.42.0.tgz",
- "integrity": "sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==",
+ "version": "3.41.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz",
+ "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==",
"hasInstallScript": true,
"license": "MIT",
"funding": {
@@ -15034,10 +15043,9 @@
}
},
"node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "license": "ISC"
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"node_modules/picomatch": {
"version": "2.2.3",
@@ -15665,6 +15673,16 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
"integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="
},
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
"node_modules/regex-not": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
@@ -15941,9 +15959,9 @@
"dev": true
},
"node_modules/sanitize-html": {
- "version": "2.17.0",
- "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.0.tgz",
- "integrity": "sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==",
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.15.0.tgz",
+ "integrity": "sha512-wIjst57vJGpLyBP8ioUbg6ThwJie5SuSIjHxJg53v5Fg+kUK+AXlb7bK3RNXpp315MvwM+0OBGCV6h5pPHsVhA==",
"license": "MIT",
"dependencies": {
"deepmerge": "^4.2.2",
@@ -15990,6 +16008,11 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/sanitize-html/node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ },
"node_modules/sanitize-html/node_modules/postcss": {
"version": "8.5.1",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
@@ -16026,9 +16049,9 @@
}
},
"node_modules/sass": {
- "version": "1.89.0",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.0.tgz",
- "integrity": "sha512-ld+kQU8YTdGNjOLfRWBzewJpU5cwEv/h5yyqlSeJcj6Yh8U4TDA9UA5FPicqDz/xgRPWRSYIQNiFks21TbA9KQ==",
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.3.tgz",
+ "integrity": "sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -17898,6 +17921,12 @@
"node": ">=6"
}
},
+ "node_modules/update-browserslist-db/node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true
+ },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -18261,15 +18290,14 @@
}
},
"node_modules/webpack": {
- "version": "5.99.9",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz",
- "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==",
+ "version": "5.99.5",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.5.tgz",
+ "integrity": "sha512-q+vHBa6H9qwBLUlHL4Y7L0L1/LlyBKZtS9FHNCQmtayxjI5RKC9yD8gpvLeqGv5lCQp1Re04yi0MF40pf30Pvg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.6",
- "@types/json-schema": "^7.0.15",
"@webassemblyjs/ast": "^1.14.1",
"@webassemblyjs/wasm-edit": "^1.14.1",
"@webassemblyjs/wasm-parser": "^1.14.1",
@@ -18286,7 +18314,7 @@
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
"neo-async": "^2.6.2",
- "schema-utils": "^4.3.2",
+ "schema-utils": "^4.3.0",
"tapable": "^2.1.1",
"terser-webpack-plugin": "^5.3.11",
"watchpack": "^2.4.1",
@@ -19048,9 +19076,9 @@
"license": "MIT"
},
"node_modules/webpack/node_modules/schema-utils": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz",
- "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz",
+ "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==",
"dev": true,
"license": "MIT",
"dependencies": {
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/package.json b/AdminUI/LearningHub.Nhs.AdminUI/package.json
index 2117d7501..4240aeef9 100644
--- a/AdminUI/LearningHub.Nhs.AdminUI/package.json
+++ b/AdminUI/LearningHub.Nhs.AdminUI/package.json
@@ -22,20 +22,20 @@
"dependencies": {
"@ckeditor/ckeditor5-build-classic": "16.0.0",
"@ckeditor/ckeditor5-vue": "1.0.3",
- "@mediakind/mkplayer": "^1.22.0",
+ "@mediakind/mkplayer": "^1.21.0",
"axios": "^0.30.0",
"babel-polyfill": "^6.26.0",
"bootstrap": "^4.6.2",
"ckeditor4-vue": "^0.2.0",
"concurrently": "^7.6.0",
- "core-js": "^3.42.0",
+ "core-js": "^3.41.0",
"js-cookie": "2.2.1",
"lodash": "4.17.21",
"moment": "^2.30.1",
"navigator.sendbeacon": "0.0.20",
"nhsuk-frontend": "^6.1.2",
"openseadragon": "^2.4.2",
- "sanitize-html": "^2.17.0",
+ "sanitize-html": "^2.15.0",
"save": "^2.9.0",
"ts-debounce": "2.3.0",
"tus-js-client": "^2.3.2",
@@ -52,8 +52,8 @@
"vuex": "^3.6.2"
},
"devDependencies": {
- "@babel/preset-env": "^7.27.2",
- "@babel/core": "^7.27.3",
+ "@babel/preset-env": "^7.26.9",
+ "@babel/core": "^7.26.10",
"@types/axios": "^0.14.0",
"@types/bootstrap": "4.1.3",
"@types/ckeditor": "4.9.10",
@@ -61,9 +61,9 @@
"@types/jquery": "^3.3.32",
"@types/jquery-match-height": "^0.7.8",
"@types/js-cookie": "2.2.1",
- "@types/lodash": "4.17.17",
+ "@types/lodash": "4.17.16",
"@types/openseadragon": "^2.4.5",
- "@types/sanitize-html": "^2.16.0",
+ "@types/sanitize-html": "^2.15.0",
"@types/vuelidate": "^0.7.22",
"@vue/babel-preset-app": "4.5.19",
"@vue/test-utils": "^1.3.6",
@@ -75,7 +75,7 @@
"css-loader": "^5.2.4",
"file-loader": "^6.2.0",
"jest": "^27.5.1",
- "sass": "^1.89.0",
+ "sass": "^1.86.3",
"sass-loader": "^11.0.1",
"style-loader": "^2.0.0",
"ts-jest": "^27.1.5",
@@ -84,7 +84,7 @@
"vue-jest": "^3.0.7",
"vue-loader": "^15.11.1",
"vue-template-compiler": "^2.7.16",
- "webpack": "^5.99.9",
+ "webpack": "^5.99.5",
"webpack-cli": "^4.10.0",
"webpack-dev-server": "^3.11.3"
}
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/web.config b/AdminUI/LearningHub.Nhs.AdminUI/web.config
deleted file mode 100644
index 6bcb74972..000000000
--- a/AdminUI/LearningHub.Nhs.AdminUI/web.config
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/LearningHub.Nhs.WebUI.sln b/LearningHub.Nhs.WebUI.sln
index 5aea6885f..43f5211d5 100644
--- a/LearningHub.Nhs.WebUI.sln
+++ b/LearningHub.Nhs.WebUI.sln
@@ -81,6 +81,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LearningHub.Nhs.ReportApi.S
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LearningHub.Nhs.WebUI.AutomatedUiTests", "LearningHub.Nhs.WebUI.AutomatedUiTests\LearningHub.Nhs.WebUI.AutomatedUiTests.csproj", "{A84EC50B-2B01-4819-A2B1-BD867B7595CA}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MessagingService", "MessagingService", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MessageQueueing", "MessageQueueing", "{FC592E2B-861F-4C9A-BD1A-95CB97D36285}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LearningHub.Nhs.MessageQueueing", "MessageQueueing\LearningHub.Nhs.MessageQueueing\LearningHub.Nhs.MessageQueueing.csproj", "{534A145F-1FE4-B601-48FF-979744373E4B}"
+EndProject
+Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "LearningHub.Nhs.MessageQueueing.Database", "MessageQueueing\LearningHub.Nhs.MessageQueueing.Database\LearningHub.Nhs.MessageQueueing.Database.sqlproj", "{AFC1A740-BBA1-44BC-8A52-A65D2E506E69}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LearningHub.Nhs.MessagingService", "MessagingService\LearningHub.Nhs.MessagingService\LearningHub.Nhs.MessagingService.csproj", "{CCB52C7C-47B6-1AE7-7578-7A26B3FFEB71}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -345,6 +355,34 @@ Global
{A84EC50B-2B01-4819-A2B1-BD867B7595CA}.Release|Any CPU.Build.0 = Release|Any CPU
{A84EC50B-2B01-4819-A2B1-BD867B7595CA}.Release|x64.ActiveCfg = Release|Any CPU
{A84EC50B-2B01-4819-A2B1-BD867B7595CA}.Release|x64.Build.0 = Release|Any CPU
+ {534A145F-1FE4-B601-48FF-979744373E4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {534A145F-1FE4-B601-48FF-979744373E4B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {534A145F-1FE4-B601-48FF-979744373E4B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {534A145F-1FE4-B601-48FF-979744373E4B}.Debug|x64.Build.0 = Debug|Any CPU
+ {534A145F-1FE4-B601-48FF-979744373E4B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {534A145F-1FE4-B601-48FF-979744373E4B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {534A145F-1FE4-B601-48FF-979744373E4B}.Release|x64.ActiveCfg = Release|Any CPU
+ {534A145F-1FE4-B601-48FF-979744373E4B}.Release|x64.Build.0 = Release|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Debug|x64.Build.0 = Debug|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Debug|x64.Deploy.0 = Debug|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Release|x64.ActiveCfg = Release|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Release|x64.Build.0 = Release|Any CPU
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69}.Release|x64.Deploy.0 = Release|Any CPU
+ {CCB52C7C-47B6-1AE7-7578-7A26B3FFEB71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CCB52C7C-47B6-1AE7-7578-7A26B3FFEB71}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CCB52C7C-47B6-1AE7-7578-7A26B3FFEB71}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CCB52C7C-47B6-1AE7-7578-7A26B3FFEB71}.Debug|x64.Build.0 = Debug|Any CPU
+ {CCB52C7C-47B6-1AE7-7578-7A26B3FFEB71}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CCB52C7C-47B6-1AE7-7578-7A26B3FFEB71}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CCB52C7C-47B6-1AE7-7578-7A26B3FFEB71}.Release|x64.ActiveCfg = Release|Any CPU
+ {CCB52C7C-47B6-1AE7-7578-7A26B3FFEB71}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -380,6 +418,9 @@ Global
{E585A74A-F358-4446-B10E-0FF07B4FF601} = {A4209011-1740-4902-B889-2F2FAF98383F}
{AAC8306E-1DEB-460D-84C7-40166D189B88} = {A4209011-1740-4902-B889-2F2FAF98383F}
{6167F037-166C-4C5A-81BE-55618E77D4E8} = {A4209011-1740-4902-B889-2F2FAF98383F}
+ {534A145F-1FE4-B601-48FF-979744373E4B} = {FC592E2B-861F-4C9A-BD1A-95CB97D36285}
+ {AFC1A740-BBA1-44BC-8A52-A65D2E506E69} = {FC592E2B-861F-4C9A-BD1A-95CB97D36285}
+ {CCB52C7C-47B6-1AE7-7578-7A26B3FFEB71} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {1ECA38C8-7C69-4DE6-8293-852C603F4217}
diff --git a/LearningHub.Nhs.WebUI/Configuration/Settings.cs b/LearningHub.Nhs.WebUI/Configuration/Settings.cs
index ccb06c921..e300e80e3 100644
--- a/LearningHub.Nhs.WebUI/Configuration/Settings.cs
+++ b/LearningHub.Nhs.WebUI/Configuration/Settings.cs
@@ -31,6 +31,11 @@ public Settings()
///
public string LearningHubApiUrl { get; set; }
+ ///
+ /// Gets or sets the OpenApiUrl.
+ ///
+ public string OpenApiUrl { get; set; }
+
///
/// Gets or sets the UserApiUrl.
///
diff --git a/LearningHub.Nhs.WebUI/Controllers/HomeController.cs b/LearningHub.Nhs.WebUI/Controllers/HomeController.cs
index 7f40afe15..e5936fcdd 100644
--- a/LearningHub.Nhs.WebUI/Controllers/HomeController.cs
+++ b/LearningHub.Nhs.WebUI/Controllers/HomeController.cs
@@ -274,6 +274,10 @@ public async Task LoadPage(string dashBoardTray = "my-learning",
Catalogues = new Nhs.Models.Dashboard.DashboardCatalogueResponseViewModel { Type = catalogueDashBoard },
};
+ var enableMoodle = Task.Run(() => this.featureManager.IsEnabledAsync(FeatureFlags.EnableMoodle)).Result;
+ this.ViewBag.EnableMoodle = enableMoodle;
+ this.ViewBag.ValidMoodleUser = this.CurrentMoodleUserId > 0;
+
bool isAjax = this.HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest";
if (isAjax)
diff --git a/LearningHub.Nhs.WebUI/Controllers/SearchController.cs b/LearningHub.Nhs.WebUI/Controllers/SearchController.cs
index ff1afba0d..a7b53fb11 100644
--- a/LearningHub.Nhs.WebUI/Controllers/SearchController.cs
+++ b/LearningHub.Nhs.WebUI/Controllers/SearchController.cs
@@ -81,7 +81,7 @@ public async Task Index(SearchRequestViewModel search, bool noSor
if (filterApplied)
{
- await this.searchService.RegisterSearchEventsAsync(search, SearchFormActionTypeEnum.ApplyFilter, searchResult.ResourceSearchResult.TotalHits);
+ await this.searchService.RegisterSearchEventsAsync(search, SearchFormActionTypeEnum.ApplyFilter, searchResult.ResourceSearchResult?.TotalHits ?? 0);
}
if (noSortFilterError)
diff --git a/LearningHub.Nhs.WebUI/Helpers/IOpenApiFacade.cs b/LearningHub.Nhs.WebUI/Helpers/IOpenApiFacade.cs
new file mode 100644
index 000000000..a603461c7
--- /dev/null
+++ b/LearningHub.Nhs.WebUI/Helpers/IOpenApiFacade.cs
@@ -0,0 +1,59 @@
+namespace LearningHub.Nhs.WebUI.Helpers
+{
+ using System.Threading.Tasks;
+ using LearningHub.Nhs.Models.Common;
+
+ ///
+ /// Defines the .
+ ///
+ public interface IOpenApiFacade
+ {
+ ///
+ /// The GetAsync.
+ ///
+ /// The type.
+ /// The url.
+ /// The .
+ Task GetAsync(string url)
+ where T : class, new();
+
+ ///
+ /// The PostAsync.
+ ///
+ /// The type.
+ /// The url.
+ /// The body.
+ /// The .
+ Task PostAsync(string url, T body)
+ where T : class, new();
+
+ ///
+ /// The PostAsync.
+ ///
+ /// The type.
+ /// .
+ /// The url.
+ /// The body.
+ /// The .
+ Task PostAsync(string url, TBody body)
+ where T : class, new()
+ where TBody : class, new();
+
+ ///
+ /// The PutAsync.
+ ///
+ /// The url.
+ /// The .
+ Task PutAsync(string url);
+
+ ///
+ /// The PutAsync.
+ ///
+ /// .
+ /// The url.
+ /// The body.
+ /// The .
+ Task PutAsync(string url, T body)
+ where T : class, new();
+ }
+}
diff --git a/LearningHub.Nhs.WebUI/Helpers/OpenApiFacade.cs b/LearningHub.Nhs.WebUI/Helpers/OpenApiFacade.cs
new file mode 100644
index 000000000..32c529a0d
--- /dev/null
+++ b/LearningHub.Nhs.WebUI/Helpers/OpenApiFacade.cs
@@ -0,0 +1,241 @@
+namespace LearningHub.Nhs.WebUI.Helpers
+{
+ using System;
+ using System.Net.Http;
+ using System.Text;
+ using System.Threading.Tasks;
+ using LearningHub.Nhs.Models.Common;
+ using LearningHub.Nhs.WebUI.Interfaces;
+ using Newtonsoft.Json;
+
+ ///
+ /// Defines the .
+ ///
+ public class OpenApiFacade : IOpenApiFacade
+ {
+ ///
+ /// Defines the _client.
+ ///
+ private readonly IOpenApiHttpClient client;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The client.
+ public OpenApiFacade(IOpenApiHttpClient client)
+ {
+ this.client = client;
+ }
+
+ ///
+ /// The GetAsync.
+ ///
+ /// .
+ /// The url.
+ /// The .
+ public async Task GetAsync(string url)
+ where T : class, new()
+ {
+ var client = await this.client.GetClientAsync();
+
+ var vm = new T();
+
+ var response = await client.GetAsync(url).ConfigureAwait(false);
+
+ if (response.IsSuccessStatusCode)
+ {
+ var result = response.Content.ReadAsStringAsync().Result;
+ vm = JsonConvert.DeserializeObject(result);
+
+ return vm;
+ }
+ else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
+ ||
+ response.StatusCode == System.Net.HttpStatusCode.Forbidden)
+ {
+ throw new Exception("AccessDenied");
+ }
+ else
+ {
+ throw new Exception($"Exception HttpStatusCode={response.StatusCode}");
+ }
+ }
+
+ ///
+ /// The PostAsync.
+ ///
+ /// .
+ /// The url.
+ /// The body.
+ /// The .
+ public async Task PostAsync(string url, T body)
+ where T : class, new()
+ {
+ var client = await this.client.GetClientAsync();
+
+ var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
+ var response = await client.PostAsync(url, content).ConfigureAwait(false);
+
+ if (response.IsSuccessStatusCode)
+ {
+ return;
+ }
+ else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
+ ||
+ response.StatusCode == System.Net.HttpStatusCode.Forbidden)
+ {
+ throw new Exception("AccessDenied");
+ }
+ else
+ {
+ throw new Exception($"Exception HttpStatusCode={response.StatusCode}");
+ }
+ }
+
+ ///
+ /// The PostAsync.
+ ///
+ /// The return type.
+ /// The type of body parameter.
+ /// The url.
+ /// The body.
+ /// The .
+ public async Task PostAsync(string url, TBody body)
+ where TBody : class, new()
+ where T : class, new()
+ {
+ var client = await this.client.GetClientAsync();
+
+ var vm = new T();
+ var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
+ var response = await client.PostAsync(url, content).ConfigureAwait(false);
+
+ if (response.IsSuccessStatusCode)
+ {
+ var result = response.Content.ReadAsStringAsync().Result;
+ var apiResponse = JsonConvert.DeserializeObject(result);
+ if (apiResponse.Success)
+ {
+ return apiResponse;
+ }
+ else
+ {
+ string details = string.Empty;
+ if (apiResponse.ValidationResult != null)
+ {
+ if (apiResponse.ValidationResult.Details != null)
+ {
+ details = $"::ValidationResult: {string.Join(",", apiResponse.ValidationResult.Details)}";
+ }
+ }
+
+ throw new Exception($"PostAsync ApiResponse returned False: {details}");
+ }
+ }
+ else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
+ ||
+ response.StatusCode == System.Net.HttpStatusCode.Forbidden)
+ {
+ throw new Exception("Access Denied");
+ }
+ else
+ {
+ throw new Exception($"Exception HttpStatusCode={response.StatusCode}");
+ }
+ }
+
+ ///
+ /// The PutAsync.
+ ///
+ /// The url.
+ /// The .
+ public async Task PutAsync(string url)
+ {
+ var client = await this.client.GetClientAsync();
+
+ var response = await client.PutAsync(url, null).ConfigureAwait(false);
+
+ if (response.IsSuccessStatusCode)
+ {
+ var result = response.Content.ReadAsStringAsync().Result;
+ var apiResponse = JsonConvert.DeserializeObject(result);
+ if (apiResponse.Success)
+ {
+ return apiResponse;
+ }
+ else
+ {
+ string details = string.Empty;
+ if (apiResponse.ValidationResult != null)
+ {
+ if (apiResponse.ValidationResult.Details != null)
+ {
+ details = $"::ValidationResult: {string.Join(",", apiResponse.ValidationResult.Details)}";
+ }
+ }
+
+ throw new Exception($"PutAsync ApiResponse returned False: {details}");
+ }
+ }
+ else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
+ ||
+ response.StatusCode == System.Net.HttpStatusCode.Forbidden)
+ {
+ throw new Exception("Access Denied");
+ }
+ else
+ {
+ throw new Exception($"Exception HttpStatusCode={response.StatusCode}");
+ }
+ }
+
+ ///
+ /// The PutAsync.
+ ///
+ /// .
+ /// The url.
+ /// The body.
+ /// The .
+ public async Task PutAsync(string url, T body)
+ where T : class, new()
+ {
+ var client = await this.client.GetClientAsync();
+
+ var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
+ var response = await client.PutAsync(url, content).ConfigureAwait(false);
+
+ if (response.IsSuccessStatusCode)
+ {
+ var result = response.Content.ReadAsStringAsync().Result;
+ var apiResponse = JsonConvert.DeserializeObject(result);
+ if (apiResponse.Success)
+ {
+ return apiResponse;
+ }
+ else
+ {
+ string details = string.Empty;
+ if (apiResponse.ValidationResult != null)
+ {
+ if (apiResponse.ValidationResult.Details != null)
+ {
+ details = $"::ValidationResult: {string.Join(",", apiResponse.ValidationResult.Details)}";
+ }
+ }
+
+ throw new Exception($"PutAsync ApiResponse returned False: {details}");
+ }
+ }
+ else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
+ ||
+ response.StatusCode == System.Net.HttpStatusCode.Forbidden)
+ {
+ throw new Exception("Access Denied");
+ }
+ else
+ {
+ throw new Exception($"Exception HttpStatusCode={response.StatusCode}");
+ }
+ }
+ }
+}
diff --git a/LearningHub.Nhs.WebUI/Interfaces/IOpenApiHttpClient.cs b/LearningHub.Nhs.WebUI/Interfaces/IOpenApiHttpClient.cs
new file mode 100644
index 000000000..4c53a2c38
--- /dev/null
+++ b/LearningHub.Nhs.WebUI/Interfaces/IOpenApiHttpClient.cs
@@ -0,0 +1,17 @@
+namespace LearningHub.Nhs.WebUI.Interfaces
+{
+ using System.Net.Http;
+ using System.Threading.Tasks;
+
+ ///
+ /// The OpenApiHttpClient interface.
+ ///
+ public interface IOpenApiHttpClient
+ {
+ ///
+ /// The get client.
+ ///
+ /// The .
+ Task GetClientAsync();
+ }
+}
diff --git a/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj b/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj
index dc2cf661d..7099f3b99 100644
--- a/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj
+++ b/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj
@@ -113,7 +113,7 @@
-
+
diff --git a/LearningHub.Nhs.WebUI/Services/ActivityService.cs b/LearningHub.Nhs.WebUI/Services/ActivityService.cs
index a494bea91..185dc3a2c 100644
--- a/LearningHub.Nhs.WebUI/Services/ActivityService.cs
+++ b/LearningHub.Nhs.WebUI/Services/ActivityService.cs
@@ -21,9 +21,10 @@ public class ActivityService : BaseService, IActivityService
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// OpenApiHttpClient http client.
/// Logger.
- public ActivityService(ILearningHubHttpClient learningHubHttpClient, ILogger logger)
- : base(learningHubHttpClient, logger)
+ public ActivityService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
}
diff --git a/LearningHub.Nhs.WebUI/Services/BaseService.cs b/LearningHub.Nhs.WebUI/Services/BaseService.cs
index 87d4cfc79..ddcbad86f 100644
--- a/LearningHub.Nhs.WebUI/Services/BaseService.cs
+++ b/LearningHub.Nhs.WebUI/Services/BaseService.cs
@@ -11,6 +11,7 @@ public abstract class BaseService
{
private readonly ILogger logger;
private readonly ILearningHubHttpClient learningHubHttpClient;
+ private readonly IOpenApiHttpClient openApiHttpClient;
///
/// Initializes a new instance of the class.
@@ -23,11 +24,29 @@ protected BaseService(ILearningHubHttpClient learningHubHttpClient, ILogger l
this.logger = logger;
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The learningHubHttpClient.
+ /// The openApiHttpClient.
+ /// The logger.
+ protected BaseService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger)
+ {
+ this.learningHubHttpClient = learningHubHttpClient;
+ this.openApiHttpClient = openApiHttpClient;
+ this.logger = logger;
+ }
+
///
/// Gets the LearningHubHttpClient.
///
protected ILearningHubHttpClient LearningHubHttpClient => this.learningHubHttpClient;
+ ///
+ /// Gets the OpenApiHttpClient.
+ ///
+ protected IOpenApiHttpClient OpenApiHttpClient => this.openApiHttpClient;
+
///
/// Gets the Logger.
///
diff --git a/LearningHub.Nhs.WebUI/Services/BoomarkService.cs b/LearningHub.Nhs.WebUI/Services/BoomarkService.cs
index 5a26148cc..15d5509f9 100644
--- a/LearningHub.Nhs.WebUI/Services/BoomarkService.cs
+++ b/LearningHub.Nhs.WebUI/Services/BoomarkService.cs
@@ -19,16 +19,17 @@ public class BoomarkService : BaseService, IBookmarkService
/// Initializes a new instance of the class.
///
/// The learningHubHttpClient.
+ /// The openApiHttpClient.
/// The logger.
- public BoomarkService(ILearningHubHttpClient learningHubHttpClient, ILogger logger)
- : base(learningHubHttpClient, logger)
+ public BoomarkService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
}
///
public async Task Create(UserBookmarkViewModel bookmarkViewModel)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = "bookmark/Create";
var content = new StringContent(
JsonConvert.SerializeObject(bookmarkViewModel),
@@ -56,7 +57,7 @@ public async Task Create(UserBookmarkViewModel bookmarkViewModel)
///
public async Task Edit(UserBookmarkViewModel bookmarkViewModel)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = "bookmark/Edit";
var content = new StringContent(
JsonConvert.SerializeObject(bookmarkViewModel),
@@ -84,7 +85,7 @@ public async Task Edit(UserBookmarkViewModel bookmarkViewModel)
///
public async Task DeleteFolder(int bookmarkId)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"bookmark/deletefolder/{bookmarkId}";
var response = await client.DeleteAsync(request).ConfigureAwait(false);
if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
@@ -98,7 +99,7 @@ public async Task DeleteFolder(int bookmarkId)
///
public async Task> GetAllByParent(int? parentId, bool? all = false)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"bookmark/GetAllByParent/{parentId}?all={all}";
var response = await client.GetAsync(request).ConfigureAwait(false);
if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized
@@ -120,7 +121,7 @@ public async Task> GetAllByParent(int? parent
///
public async Task Toggle(UserBookmarkViewModel bookmarkViewModel)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = "bookmark/toggle";
var content = new StringContent(
JsonConvert.SerializeObject(bookmarkViewModel),
diff --git a/LearningHub.Nhs.WebUI/Services/CardService.cs b/LearningHub.Nhs.WebUI/Services/CardService.cs
index d0795c0ad..d3aac0616 100644
--- a/LearningHub.Nhs.WebUI/Services/CardService.cs
+++ b/LearningHub.Nhs.WebUI/Services/CardService.cs
@@ -19,9 +19,10 @@ public class CardService : BaseService, ICardService
/// Initializes a new instance of the class.
///
/// The Learning Hub Http Client.
+ /// The Open Api Http Client.
/// The logger.
- public CardService(ILearningHubHttpClient learningHubHttpClient, ILogger logger)
- : base(learningHubHttpClient, logger)
+ public CardService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
}
@@ -34,7 +35,7 @@ public async Task GetMyContributionsTotalsAsync(
{
MyContributionsTotalsViewModel totals = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetMyContributionsTotals/{catalogueId.ToString()}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -63,7 +64,7 @@ public async Task> GetContributionsAsync(
{
List myContributionCards = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var json = JsonConvert.SerializeObject(resourceContributionsRequestViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
@@ -94,7 +95,7 @@ public async Task GetMyResourceViewModelAsync()
{
MyResourceViewModel myresourcecards = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetMyResourceViewModel";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -123,7 +124,7 @@ public async Task GetResourceCardExtendedViewMode
{
ResourceCardExtendedViewModel resourceCardExtendedViewModel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/ResourceCardExtendedViewModel/{id.ToString()}";
var response = await client.GetAsync(request).ConfigureAwait(false);
diff --git a/LearningHub.Nhs.WebUI/Services/CatalogueService.cs b/LearningHub.Nhs.WebUI/Services/CatalogueService.cs
index a8a6d3055..3833a4e28 100644
--- a/LearningHub.Nhs.WebUI/Services/CatalogueService.cs
+++ b/LearningHub.Nhs.WebUI/Services/CatalogueService.cs
@@ -25,10 +25,11 @@ public class CatalogueService : BaseService, ICatalogueService
/// Initializes a new instance of the class.
///
/// The learning hub http client.
+ /// The Open Api Http Client.
/// The logger.
/// The cacheService.
- public CatalogueService(ILearningHubHttpClient learningHubHttpClient, ILogger logger, ICacheService cacheService)
- : base(learningHubHttpClient, logger)
+ public CatalogueService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger, ICacheService cacheService)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.cacheService = cacheService;
}
@@ -41,7 +42,7 @@ public async Task> GetCataloguesForUserAsync()
{
List viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Catalogue/GetForCurrentUser";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -70,7 +71,7 @@ public async Task GetCatalogueAsync(string reference)
{
CatalogueViewModel viewmodel = new CatalogueViewModel { };
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"catalogue/catalogue/{reference}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -98,7 +99,7 @@ public async Task GetCatalogueAsync(int catalogueNodeVersion
{
CatalogueViewModel viewmodel = new CatalogueViewModel { };
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"catalogue/catalogues/{catalogueNodeVersionId}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -126,7 +127,7 @@ public async Task GetCatalogueRecordedAsync(string reference
{
CatalogueViewModel viewmodel = new CatalogueViewModel { };
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"catalogue/catalogue-recorded/{reference}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -154,7 +155,7 @@ public async Task GetResourcesAsync(Catalogu
{
CatalogueResourceResponseViewModel viewmodel = new CatalogueResourceResponseViewModel { };
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var json = JsonConvert.SerializeObject(requestViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
@@ -185,7 +186,7 @@ public async Task CanCurrentUserEditCatalogue(int catalogueId)
{
var request = $"Catalogue/CanCurrentUserEditCatalogue/{catalogueId}";
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var response = await client.GetAsync(request).ConfigureAwait(false);
var catalogueIsEditable = false;
@@ -213,7 +214,7 @@ public async Task AccessDetailsAsync(string ref
{
var request = $"Catalogue/AccessDetails/{reference}";
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var response = await client.GetAsync(request).ConfigureAwait(false);
var accessDetails = new CatalogueAccessDetailsViewModel();
@@ -241,7 +242,7 @@ public async Task GetLatestCatalogueAccessReque
{
var request = $"Catalogue/GetLatestCatalogueAccessRequest/{catalogueNodeId}";
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var response = await client.GetAsync(request).ConfigureAwait(false);
var car = new CatalogueAccessRequestViewModel();
@@ -275,7 +276,7 @@ public async Task RequestAccessAsync(string referen
{
var request = $"Catalogue/RequestAccess/{reference}/{accessType}";
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var content = new StringContent(JsonConvert.SerializeObject(vm), Encoding.UTF8, "application/json");
var response = await client.PostAsync(request, content).ConfigureAwait(false);
var catalogueAccessRequested = false;
@@ -308,7 +309,7 @@ public async Task InviteUserAsync(RestrictedCatalog
{
var request = $"Catalogue/InviteUser";
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var content = new StringContent(JsonConvert.SerializeObject(vm), Encoding.UTF8, "application/json");
var response = await client.PostAsync(request, content).ConfigureAwait(false);
var catalogueAccessRequested = false;
@@ -344,7 +345,7 @@ public async Task> GetRestricted
var json = JsonConvert.SerializeObject(requestModel);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Catalogue/GetRestrictedCatalogueAccessRequests";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -377,7 +378,7 @@ public async Task GetRestrictedCatalogueSum
{
var viewmodel = new RestrictedCatalogueSummaryViewModel();
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"catalogue/GetRestrictedCatalogueSummary/{catalogueNodeId}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -412,7 +413,7 @@ public async Task GetRestrictedCatalogueUsers
var json = JsonConvert.SerializeObject(requestModel);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Catalogue/GetRestrictedCatalogueUsers";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -446,7 +447,7 @@ public async Task AcceptAccessRequestAsync(int acce
{
var request = $"Catalogue/AcceptAccessRequest/{accessRequestId}";
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var content = new StringContent(JsonConvert.SerializeObject(new { }));
var response = await client.PostAsync(request, content).ConfigureAwait(false);
var catalogueAccessRequested = new LearningHubValidationResult();
@@ -478,7 +479,7 @@ public async Task RejectAccessRequestAsync(int acce
{
var request = $"Catalogue/RejectAccessRequest/{accessRequestId}";
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var content = new StringContent(JsonConvert.SerializeObject(new CatalogueAccessRejectionViewModel { RejectionReason = rejectionReason }), Encoding.UTF8, "application/json");
var response = await client.PostAsync(request, content).ConfigureAwait(false);
var vr = new LearningHubValidationResult();
@@ -507,7 +508,7 @@ public async Task DismissAccessRequestAsync(int cat
{
var request = $"Catalogue/DismissAccessRequest/{catalogueNodeId}";
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var content = new StringContent(JsonConvert.SerializeObject(new { }));
var response = await client.PostAsync(request, content).ConfigureAwait(false);
var vr = new LearningHubValidationResult(false);
@@ -536,7 +537,7 @@ public async Task GetCatalogueAccessRequestAsyn
{
var request = $"Catalogue/AccessRequest/{catalogueAccessRequestId}";
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var response = await client.GetAsync(request).ConfigureAwait(false);
var catalogueAccessRequest = new CatalogueAccessRequestViewModel();
@@ -570,7 +571,7 @@ public async Task RemoveUserFromRestrictedAccessUse
var json = JsonConvert.SerializeObject(userGroup);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserGroup/DeleteUserUserGroup";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -611,7 +612,7 @@ public async Task RemoveUserFromRestrictedAccessUse
public async Task GetAllCatalogueAsync(string filterChar)
{
AllCatalogueResponseViewModel viewmodel = new AllCatalogueResponseViewModel { };
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"catalogue/allcatalogues/{filterChar}";
var response = await client.GetAsync(request).ConfigureAwait(false);
diff --git a/LearningHub.Nhs.WebUI/Services/ContentService.cs b/LearningHub.Nhs.WebUI/Services/ContentService.cs
index 92fe7a7dd..b6d1f9296 100644
--- a/LearningHub.Nhs.WebUI/Services/ContentService.cs
+++ b/LearningHub.Nhs.WebUI/Services/ContentService.cs
@@ -18,10 +18,11 @@ public class ContentService : BaseService, IContentService
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// Logger.
/// azureMediaService.
- public ContentService(ILearningHubHttpClient learningHubHttpClient, ILogger logger, IAzureMediaService azureMediaService)
- : base(learningHubHttpClient, logger)
+ public ContentService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger, IAzureMediaService azureMediaService)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.azureMediaService = azureMediaService;
}
@@ -36,7 +37,7 @@ public async Task GetPageByIdAsync(int id, bool preview)
{
PageViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var response = await client.GetAsync($"content/page/{id}?publishedOnly={!preview}&preview={preview}").ConfigureAwait(false);
@@ -63,7 +64,7 @@ public async Task GetPageSectionDetailVideoAssetById
{
PageSectionDetailViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var response = await client.GetAsync($"content/page-section-detail-video/{id}").ConfigureAwait(false);
diff --git a/LearningHub.Nhs.WebUI/Services/ContributeService.cs b/LearningHub.Nhs.WebUI/Services/ContributeService.cs
index a61487e4e..68a2b4cf6 100644
--- a/LearningHub.Nhs.WebUI/Services/ContributeService.cs
+++ b/LearningHub.Nhs.WebUI/Services/ContributeService.cs
@@ -39,9 +39,10 @@ public class ContributeService : BaseService, IContributeServ
/// Azure media service.
/// MKIO media service.
/// Learning hub http client.
+ /// The Open Api Http Client.
/// Logger.
- public ContributeService(IFileService fileService, IResourceService resourceService, IAzureMediaService azureMediaService, ILearningHubHttpClient learningHubHttpClient, ILogger logger, IAzureMediaService mediaService)
- : base(learningHubHttpClient, logger)
+ public ContributeService(IFileService fileService, IResourceService resourceService, IAzureMediaService azureMediaService, ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger, IAzureMediaService mediaService)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.fileService = fileService;
this.resourceService = resourceService;
@@ -62,7 +63,7 @@ public async Task CreateNewResourceVersionAsync(int
var json = JsonConvert.SerializeObject(model);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/CreateNewResourceVersion";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -96,7 +97,7 @@ public async Task CreateResourceAuthorAsync(ResourceAuthorViewModel resourc
var json = JsonConvert.SerializeObject(resourceAuthorViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/AddResourceVersionAuthor";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -130,7 +131,7 @@ public async Task CreateResourceKeywordAsync(ResourceKeywordViewModel resou
var json = JsonConvert.SerializeObject(resourceKeywordViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/AddResourceVersionKeyword";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -163,7 +164,7 @@ public async Task DeleteArticleFileAsync(FileDeleteRequestModel model)
var json = JsonConvert.SerializeObject(model);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/DeleteArticleFile";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -193,7 +194,7 @@ public async Task DeleteArticleFileAsync(FileDeleteRequestModel model)
/// The .
public async Task DeleteFileChunkDetailAsync(int fileChunkDetailId)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/DeleteFileChunkDetail/{fileChunkDetailId}";
var response = await client.DeleteAsync(request).ConfigureAwait(false);
@@ -224,7 +225,7 @@ public async Task DeleteResourceAttributeFileAsync(FileDeleteRequestModel
var json = JsonConvert.SerializeObject(model);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/DeleteResourceAttributeFile";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -257,7 +258,7 @@ public async Task DeleteResourceAuthorAsync(AuthorDeleteRequestModel model
var json = JsonConvert.SerializeObject(model);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/DeleteResourceVersionAuthor";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -290,7 +291,7 @@ public async Task DeleteResourceKeywordAsync(KeywordDeleteRequestModel mod
var json = JsonConvert.SerializeObject(model);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/DeleteResourceVersionKeyword";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -320,7 +321,7 @@ public async Task DeleteResourceKeywordAsync(KeywordDeleteRequestModel mod
/// The .
public async Task DeleteResourceVersionAsync(int resourceVersionId)
{
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/DeleteResourceVersion/{resourceVersionId}";
var response = await client.DeleteAsync(request).ConfigureAwait(false);
@@ -356,7 +357,7 @@ public async Task GetFileChunkDetail(int fileChunkDeta
{
FileChunkDetailViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetFileChunkDetail/{fileChunkDetailId}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -799,7 +800,7 @@ public async Task SaveArticleAttachedFileDetailsAsync(FileCreateRequestView
var json = JsonConvert.SerializeObject(fileCreateRequestViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/SaveArticleAttachedFileDetails";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -833,7 +834,7 @@ public async Task SaveArticleDetailAsync(ArticleUpdateRequestViewModel arti
var json = JsonConvert.SerializeObject(articleViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/UpdateArticleDetail";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -867,7 +868,7 @@ public async Task SaveFileChunkDetailsAsync(FileChunkDetailViewModel fileCh
var json = JsonConvert.SerializeObject(fileChunkDetailCreateRequestViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/SaveFileChunkDetail";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -901,7 +902,7 @@ public async Task SaveFileDetailsAsync(FileCreateRequestViewModel fileCreat
var json = JsonConvert.SerializeObject(fileCreateRequestViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/SaveFileDetails";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -935,7 +936,7 @@ public async Task SaveGenericFileDetailAsync(GenericFileUpdateRequestViewMo
var json = JsonConvert.SerializeObject(genericFileViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/UpdateGenericFileDetail";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -969,7 +970,7 @@ public async Task SaveScormDetailAsync(ScormUpdateRequestViewModel scormUpd
var json = JsonConvert.SerializeObject(scormUpdateRequestViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/UpdateScormDetail";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -1003,7 +1004,7 @@ public async Task SaveHtmlDetailAsync(HtmlResourceUpdateRequestViewModel ht
var json = JsonConvert.SerializeObject(htmlResource);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/UpdateHtmlDetail";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -1037,7 +1038,7 @@ public async Task SaveImageDetailAsync(ImageUpdateRequestViewModel imageVie
var json = JsonConvert.SerializeObject(imageViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/UpdateImageDetail";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -1071,7 +1072,7 @@ public async Task SaveResourceAttributeFileDetailsAsync(FileCreateRequestVi
var json = JsonConvert.SerializeObject(fileCreateRequestViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/SaveResourceAttributeFileDetails";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -1128,7 +1129,7 @@ public async Task SaveWeblinkDetailAsync(WebLinkViewModel weblinkViewModel)
var json = JsonConvert.SerializeObject(weblinkViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/UpdateWeblinkDetail";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -1162,7 +1163,7 @@ public async Task SaveCaseDetailAsync(CaseViewModel caseViewModel)
var json = JsonConvert.SerializeObject(caseViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/UpdateCaseDetail";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -1196,7 +1197,7 @@ public async Task SaveAssessmentDetailAsync(AssessmentViewModel assessmentV
var json = JsonConvert.SerializeObject(assessmentViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/UpdateAssessmentDetail";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -1230,7 +1231,7 @@ public async Task SubmitResourceVersionForPublishAs
var json = JsonConvert.SerializeObject(publishViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/SubmitResourceVersionForPublish";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -1335,7 +1336,7 @@ private async Task CreateResourceAsync(ResourceDetailViewModel resourceDeta
var json = JsonConvert.SerializeObject(resourceDetailViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/CreateResource";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -1368,7 +1369,7 @@ private async Task UpdateResourceVersionAsync(ResourceDetailViewModel resourceDe
var json = JsonConvert.SerializeObject(resourceDetailViewModel);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/UpdateResourceVersion";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
diff --git a/LearningHub.Nhs.WebUI/Services/CountryService.cs b/LearningHub.Nhs.WebUI/Services/CountryService.cs
index 2c0c7e120..e1afd4b35 100644
--- a/LearningHub.Nhs.WebUI/Services/CountryService.cs
+++ b/LearningHub.Nhs.WebUI/Services/CountryService.cs
@@ -20,13 +20,15 @@ public class CountryService : BaseService, ICountryService
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// User api http client.
/// Logger.
public CountryService(
ILearningHubHttpClient learningHubHttpClient,
+ IOpenApiHttpClient openApiHttpClient,
IUserApiHttpClient userApiHttpClient,
ILogger logger)
- : base(learningHubHttpClient, logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.userApiHttpClient = userApiHttpClient;
}
diff --git a/LearningHub.Nhs.WebUI/Services/DashboardService.cs b/LearningHub.Nhs.WebUI/Services/DashboardService.cs
index 55f5153bf..607d4f2be 100644
--- a/LearningHub.Nhs.WebUI/Services/DashboardService.cs
+++ b/LearningHub.Nhs.WebUI/Services/DashboardService.cs
@@ -26,10 +26,11 @@ public class DashboardService : BaseService, IDashboardService
/// Initializes a new instance of the class.
///
/// learningHubHttpClient.
+ /// The Open Api Http Client.
/// logger.
/// MoodleHttpClient.
- public DashboardService(ILearningHubHttpClient learningHubHttpClient, ILogger logger, IMoodleHttpClient moodleHttpClient)
- : base(learningHubHttpClient, logger)
+ public DashboardService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger, IMoodleHttpClient moodleHttpClient)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.moodleHttpClient = moodleHttpClient;
}
@@ -44,7 +45,7 @@ public async Task GetMyAccessLearningsAsyn
{
DashboardMyLearningResponseViewModel viewmodel = new DashboardMyLearningResponseViewModel { };
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"dashboard/myaccesslearning/{dashboardType}/{pageNumber}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -73,7 +74,7 @@ public async Task GetCataloguesAsync(string
{
DashboardCatalogueResponseViewModel viewmodel = new DashboardCatalogueResponseViewModel { };
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"dashboard/catalogues/{dashboardType}/{pageNumber}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -102,7 +103,7 @@ public async Task GetResourcesAsync(string d
{
DashboardResourceResponseViewModel viewmodel = new DashboardResourceResponseViewModel { };
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"dashboard/resources/{dashboardType}/{pageNumber}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -149,7 +150,7 @@ public async Task RecordDashBoardEventAsync(DashboardEventViewModel dashboardEve
};
var content = new System.Net.Http.StringContent(JsonConvert.SerializeObject(eventEntity), Encoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"event/Create";
var response = await client.PostAsync(request, content).ConfigureAwait(false);
diff --git a/LearningHub.Nhs.WebUI/Services/DetectJsLogService.cs b/LearningHub.Nhs.WebUI/Services/DetectJsLogService.cs
index da62c5cbd..e9bf607ce 100644
--- a/LearningHub.Nhs.WebUI/Services/DetectJsLogService.cs
+++ b/LearningHub.Nhs.WebUI/Services/DetectJsLogService.cs
@@ -14,9 +14,10 @@ public class DetectJsLogService : BaseService, IDetectJsLogS
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// Logger.
- public DetectJsLogService(ILearningHubHttpClient learningHubHttpClient, ILogger logger)
- : base(learningHubHttpClient, logger)
+ public DetectJsLogService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
}
diff --git a/LearningHub.Nhs.WebUI/Services/GradeService.cs b/LearningHub.Nhs.WebUI/Services/GradeService.cs
index fb0a42074..37df9b048 100644
--- a/LearningHub.Nhs.WebUI/Services/GradeService.cs
+++ b/LearningHub.Nhs.WebUI/Services/GradeService.cs
@@ -19,13 +19,15 @@ public class GradeService : BaseService, IGradeService
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// User api http client.
/// Logger.
public GradeService(
ILearningHubHttpClient learningHubHttpClient,
+ IOpenApiHttpClient openApiHttpClient,
IUserApiHttpClient userApiHttpClient,
ILogger logger)
- : base(learningHubHttpClient, logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.userApiHttpClient = userApiHttpClient;
}
diff --git a/LearningHub.Nhs.WebUI/Services/HierarchyService.cs b/LearningHub.Nhs.WebUI/Services/HierarchyService.cs
index 4bd8f7734..6bed5fd27 100644
--- a/LearningHub.Nhs.WebUI/Services/HierarchyService.cs
+++ b/LearningHub.Nhs.WebUI/Services/HierarchyService.cs
@@ -16,21 +16,23 @@ public class HierarchyService : BaseService, IHierarchyService
///
/// Defines the _facade.
///
- private readonly ILearningHubApiFacade facade;
+ private readonly IOpenApiFacade facade;
///
/// Initializes a new instance of the class.
///
/// The learning hub http client.
- /// The learningHubApiFacade.
+ /// The Open Api Http Client.
+ /// The openApiFacade.
/// The logger.
public HierarchyService(
ILearningHubHttpClient learningHubHttpClient,
- ILearningHubApiFacade learningHubApiFacade,
+ IOpenApiHttpClient openApiHttpClient,
+ IOpenApiFacade openApiFacade,
ILogger logger)
- : base(learningHubHttpClient, logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
- this.facade = learningHubApiFacade;
+ this.facade = openApiFacade;
}
///
diff --git a/LearningHub.Nhs.WebUI/Services/InternalSystemService.cs b/LearningHub.Nhs.WebUI/Services/InternalSystemService.cs
index d578d9523..bb19a0f38 100644
--- a/LearningHub.Nhs.WebUI/Services/InternalSystemService.cs
+++ b/LearningHub.Nhs.WebUI/Services/InternalSystemService.cs
@@ -16,9 +16,10 @@ public class InternalSystemService : BaseService, IIntern
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// Logger.
- public InternalSystemService(ILearningHubHttpClient learningHubHttpClient, ILogger logger)
- : base(learningHubHttpClient, logger)
+ public InternalSystemService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
}
diff --git a/LearningHub.Nhs.WebUI/Services/JobRoleService.cs b/LearningHub.Nhs.WebUI/Services/JobRoleService.cs
index bbf9f4402..766d05e60 100644
--- a/LearningHub.Nhs.WebUI/Services/JobRoleService.cs
+++ b/LearningHub.Nhs.WebUI/Services/JobRoleService.cs
@@ -22,13 +22,15 @@ public class JobRoleService : BaseService, IJobRoleService
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// User api http client.
/// Logger.
public JobRoleService(
ILearningHubHttpClient learningHubHttpClient,
+ IOpenApiHttpClient openApiHttpClient,
IUserApiHttpClient userApiHttpClient,
ILogger logger)
- : base(learningHubHttpClient, logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.userApiHttpClient = userApiHttpClient;
}
diff --git a/LearningHub.Nhs.WebUI/Services/LocationService.cs b/LearningHub.Nhs.WebUI/Services/LocationService.cs
index 2ba678ab0..04423a0b6 100644
--- a/LearningHub.Nhs.WebUI/Services/LocationService.cs
+++ b/LearningHub.Nhs.WebUI/Services/LocationService.cs
@@ -19,13 +19,15 @@ public class LocationService : BaseService, ILocationService
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// User api http client.
/// Logger.
public LocationService(
ILearningHubHttpClient learningHubHttpClient,
+ IOpenApiHttpClient openApiHttpClient,
IUserApiHttpClient userApiHttpClient,
ILogger logger)
- : base(learningHubHttpClient, logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.userApiHttpClient = userApiHttpClient;
}
diff --git a/LearningHub.Nhs.WebUI/Services/LoginWizardService.cs b/LearningHub.Nhs.WebUI/Services/LoginWizardService.cs
index 306d69304..06fd7e428 100644
--- a/LearningHub.Nhs.WebUI/Services/LoginWizardService.cs
+++ b/LearningHub.Nhs.WebUI/Services/LoginWizardService.cs
@@ -24,13 +24,15 @@ public class LoginWizardService : BaseService, ILoginWizardS
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// User api http client.
/// Logger.
public LoginWizardService(
ILearningHubHttpClient learningHubHttpClient,
+ IOpenApiHttpClient openApiHttpClient,
IUserApiHttpClient userApiHttpClient,
ILogger logger)
- : base(learningHubHttpClient, logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.userApiHttpClient = userApiHttpClient;
}
diff --git a/LearningHub.Nhs.WebUI/Services/MyLearningService.cs b/LearningHub.Nhs.WebUI/Services/MyLearningService.cs
index c6f9f2ffb..1e1662201 100644
--- a/LearningHub.Nhs.WebUI/Services/MyLearningService.cs
+++ b/LearningHub.Nhs.WebUI/Services/MyLearningService.cs
@@ -20,9 +20,10 @@ public class MyLearningService : BaseService, IMyLearningServ
/// Initializes a new instance of the class.
///
/// The learningHubHttpClient.
+ /// The Open Api Http Client.
/// The logger.
- public MyLearningService(ILearningHubHttpClient learningHubHttpClient, ILogger logger)
- : base(learningHubHttpClient, logger)
+ public MyLearningService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
}
@@ -38,7 +39,7 @@ public async Task GetActivityDetailed(MyLearningReq
var json = JsonConvert.SerializeObject(requestModel);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"MyLearning/GetActivityDetailed";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -67,7 +68,7 @@ public async Task GetActivityDetailed(MyLearningReq
public async Task> GetPlayedSegments(int resourceId, int majorVersion)
{
List viewModel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"MyLearning/GetPlayedSegments/{resourceId}/{majorVersion}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -98,7 +99,7 @@ public async Task> GetPlayedSegments(int resourceId
public async Task> GetResourceCertificateDetails(int resourceReferenceId, int? majorVersion = 0, int? minorVersion = 0, int? userId = 0)
{
Tuple viewModel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"MyLearning/GetResourceCertificateDetails/{resourceReferenceId}/{majorVersion}/{minorVersion}/{userId}";
var response = await client.GetAsync(request).ConfigureAwait(false);
diff --git a/LearningHub.Nhs.WebUI/Services/NotificationService.cs b/LearningHub.Nhs.WebUI/Services/NotificationService.cs
index d41ef30d6..e836edcd9 100644
--- a/LearningHub.Nhs.WebUI/Services/NotificationService.cs
+++ b/LearningHub.Nhs.WebUI/Services/NotificationService.cs
@@ -22,9 +22,10 @@ public class NotificationService : BaseService, INotificati
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// Logger.
- public NotificationService(ILearningHubHttpClient learningHubHttpClient, ILogger logger)
- : base(learningHubHttpClient, logger)
+ public NotificationService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
}
@@ -95,7 +96,7 @@ public async Task> GetPagedAsync(Pagin
{
PagedResultSet viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var content = new StringContent(JsonConvert.SerializeObject(pagingRequestModel), Encoding.UTF8, "application/json");
@@ -124,7 +125,7 @@ public async Task GetUserNotificationIdAsync(int id)
{
UserNotification viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserNotification/GetById/{id}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -153,7 +154,7 @@ public async Task GetUserNotificationDetailsAsync(int id)
{
UserNotification viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserNotification/GetByIdAndUserId/{id}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -182,7 +183,7 @@ public async Task GetUserUnreadNotificationCountAsync(int userid)
{
int count = 0;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserNotification/GetUserUnreadNotificationCount/{userid}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -212,7 +213,7 @@ private async Task PutAsync(UserNotification notification)
var json = JsonConvert.SerializeObject(notification);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserNotification/PutAsync";
var response = await client.PutAsync(request, stringContent).ConfigureAwait(false);
@@ -245,7 +246,7 @@ private async Task PostAsync(UserNotification notification)
var json = JsonConvert.SerializeObject(notification);
var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"UserNotification/PostAsync";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
diff --git a/LearningHub.Nhs.WebUI/Services/OpenApiHttpClient.cs b/LearningHub.Nhs.WebUI/Services/OpenApiHttpClient.cs
new file mode 100644
index 000000000..54c3b7bb2
--- /dev/null
+++ b/LearningHub.Nhs.WebUI/Services/OpenApiHttpClient.cs
@@ -0,0 +1,41 @@
+namespace LearningHub.Nhs.WebUI.Services
+{
+ using System.Net.Http;
+ using LearningHub.Nhs.Caching;
+ using LearningHub.Nhs.WebUI.Configuration;
+ using LearningHub.Nhs.WebUI.Interfaces;
+ using Microsoft.AspNetCore.Http;
+ using Microsoft.Extensions.Logging;
+ using Microsoft.Extensions.Options;
+
+ ///
+ /// The open api http client.
+ ///
+ public class OpenApiHttpClient : BaseHttpClient, IOpenApiHttpClient
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The http context accessor.
+ /// The web settings.
+ /// The auth config.
+ /// The http client.
+ /// The logger.
+ /// The cache service.
+ public OpenApiHttpClient(
+ IHttpContextAccessor httpContextAccessor,
+ IOptions webSettings,
+ LearningHubAuthServiceConfig authConfig,
+ HttpClient client,
+ ILogger logger,
+ ICacheService cacheService)
+ : base(httpContextAccessor, webSettings.Value, authConfig, client, logger, cacheService)
+ {
+ }
+
+ ///
+ /// Gets the open api url.
+ ///
+ public override string ApiUrl => this.WebSettings.OpenApiUrl;
+ }
+}
diff --git a/LearningHub.Nhs.WebUI/Services/PartialFileUploadService.cs b/LearningHub.Nhs.WebUI/Services/PartialFileUploadService.cs
index 7a7a33616..5ef45d685 100644
--- a/LearningHub.Nhs.WebUI/Services/PartialFileUploadService.cs
+++ b/LearningHub.Nhs.WebUI/Services/PartialFileUploadService.cs
@@ -34,12 +34,14 @@ public class PartialFileUploadService : BaseService, I
///
/// The Settings.
/// The learning hub http client.
+ /// The Open Api Http Client.
/// The logger.
public PartialFileUploadService(
IOptions settings,
ILearningHubHttpClient learningHubHttpClient,
+ IOpenApiHttpClient openApiHttpClient,
ILogger logger)
- : base(learningHubHttpClient, logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.settings = settings.Value;
}
diff --git a/LearningHub.Nhs.WebUI/Services/ProviderService.cs b/LearningHub.Nhs.WebUI/Services/ProviderService.cs
index 44a91495b..ee6119c60 100644
--- a/LearningHub.Nhs.WebUI/Services/ProviderService.cs
+++ b/LearningHub.Nhs.WebUI/Services/ProviderService.cs
@@ -22,9 +22,10 @@ public class ProviderService : BaseService, IProviderService
///
/// The cache service.
/// Learning hub http client.
+ /// The Open Api Http Client.
/// Logger.
- public ProviderService(ICacheService cacheService, ILearningHubHttpClient learningHubHttpClient, ILogger logger)
- : base(learningHubHttpClient, logger)
+ public ProviderService(ICacheService cacheService, ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.cacheService = cacheService;
}
@@ -47,7 +48,7 @@ public async Task> GetProvidersForUserAsync(int userId)
{
List viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Provider/GetProvidersByUserId/{userId}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -76,7 +77,7 @@ public async Task> GetProvidersForResourceAsync(int reso
{
List viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Provider/GetProvidersByResource/{resourceVersionId}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -111,7 +112,7 @@ private async Task> GetAllProviders()
{
List viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Provider/all";
var response = await client.GetAsync(request).ConfigureAwait(false);
diff --git a/LearningHub.Nhs.WebUI/Services/RatingService.cs b/LearningHub.Nhs.WebUI/Services/RatingService.cs
index f08361096..fa72f4264 100644
--- a/LearningHub.Nhs.WebUI/Services/RatingService.cs
+++ b/LearningHub.Nhs.WebUI/Services/RatingService.cs
@@ -19,9 +19,10 @@ public class RatingService : BaseService, IRatingService
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// Logger.
- public RatingService(ILearningHubHttpClient learningHubHttpClient, ILogger logger)
- : base(learningHubHttpClient, logger)
+ public RatingService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
}
diff --git a/LearningHub.Nhs.WebUI/Services/RegionService.cs b/LearningHub.Nhs.WebUI/Services/RegionService.cs
index 6a48fcf5d..f05fc22eb 100644
--- a/LearningHub.Nhs.WebUI/Services/RegionService.cs
+++ b/LearningHub.Nhs.WebUI/Services/RegionService.cs
@@ -19,10 +19,11 @@ public class RegionService : BaseService, IRegionService
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// Logger.
/// User Api http client.
- public RegionService(ILearningHubHttpClient learningHubHttpClient, ILogger logger, IUserApiHttpClient userApiHttpClient)
- : base(learningHubHttpClient, logger)
+ public RegionService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, ILogger logger, IUserApiHttpClient userApiHttpClient)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.userApiHttpClient = userApiHttpClient;
}
diff --git a/LearningHub.Nhs.WebUI/Services/ResourceService.cs b/LearningHub.Nhs.WebUI/Services/ResourceService.cs
index 02a233ea0..ec8eaee30 100644
--- a/LearningHub.Nhs.WebUI/Services/ResourceService.cs
+++ b/LearningHub.Nhs.WebUI/Services/ResourceService.cs
@@ -34,11 +34,12 @@ public class ResourceService : BaseService, IResourceService
/// Initializes a new instance of the class.
///
/// Learning hub http client.
+ /// The Open Api Http Client.
/// Azure media services.
/// Logger.
/// Settings.
- public ResourceService(ILearningHubHttpClient learningHubHttpClient, IAzureMediaService azureMediaService, ILogger logger, IOptions settings)
- : base(learningHubHttpClient, logger)
+ public ResourceService(ILearningHubHttpClient learningHubHttpClient, IOpenApiHttpClient openApiHttpClient, IAzureMediaService azureMediaService, ILogger logger, IOptions settings)
+ : base(learningHubHttpClient, openApiHttpClient, logger)
{
this.settings = settings.Value;
this.azureMediaService = azureMediaService;
@@ -55,7 +56,7 @@ public async Task AcceptSensitiveContentAsync(int r
var stringContent = new StringContent(resourceVersionId.ToString(), Encoding.UTF8, "application/json");
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/AcceptSensitiveContent";
var response = await client.PostAsync(request, stringContent).ConfigureAwait(false);
@@ -87,7 +88,7 @@ public async Task GetArticleDetailsByIdAsync(int resourceVersi
{
ArticleViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetArticleDetails/{resourceVersionId}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -116,7 +117,7 @@ public async Task GetAudioDetailsByIdAsync(int resourceVersionId
{
AudioViewModel viewmodel = null;
- var client = await this.LearningHubHttpClient.GetClientAsync();
+ var client = await this.OpenApiHttpClient.GetClientAsync();
var request = $"Resource/GetAudioDetails/{resourceVersionId}";
var response = await client.GetAsync(request).ConfigureAwait(false);
@@ -145,7 +146,7 @@ public async Task