diff --git a/build/azure-pipelines.yml b/build/azure-pipelines.yml
index aa7e1845f7..977ce443d0 100644
--- a/build/azure-pipelines.yml
+++ b/build/azure-pipelines.yml
@@ -63,15 +63,14 @@ variables:
DOTNET_GENERATE_ASPNET_CERTIFICATE: false
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
+ npm_config_cache: $(Pipeline.Workspace)/.npm_client
+ NODE_OPTIONS: --max_old_space_size=16384
stages:
###############################################
## Build
###############################################
- stage: Build
- variables:
- npm_config_cache: $(Pipeline.Workspace)/.npm_client
- NODE_OPTIONS: --max_old_space_size=16384
jobs:
- job: A
displayName: Build Umbraco CMS
@@ -80,18 +79,11 @@ stages:
steps:
- checkout: self
submodules: true
- - task: NodeTool@0
- displayName: Use Node.js $(nodeVersion)
- retryCountOnTaskFailure: 3
+ - task: UseDotNet@2
+ displayName: Use .NET SDK from global.json
inputs:
- versionSpec: $(nodeVersion)
- - script: npm ci --no-fund --no-audit --prefer-offline
- displayName: Run npm ci (Bellissima)
- workingDirectory: src/Umbraco.Web.UI.Client
- - script: npm run generate:api-local
- displayName: Generate API models (Bellissima)
- workingDirectory: src/Umbraco.Web.UI.Client
- enabled: false
+ useGlobalJson: true
+ - template: templates/backoffice-install.yml
- script: npm run build:for:cms
displayName: Run build (Bellissima)
workingDirectory: src/Umbraco.Web.UI.Client
@@ -101,10 +93,6 @@ stages:
- script: npm run build
displayName: Run npm build (Login)
workingDirectory: src/Umbraco.Web.UI.Login
- - task: UseDotNet@2
- displayName: Use .NET SDK from global.json
- inputs:
- useGlobalJson: true
- task: DotNetCoreCLI@2
displayName: Run dotnet restore
inputs:
@@ -127,18 +115,25 @@ stages:
inputs:
targetPath: $(Build.SourcesDirectory)
artifactName: build_output
+
+ - job: B
+ displayName: Build Bellissima Package
+ pool:
+ vmImage: 'ubuntu-latest'
+ steps:
+ - checkout: self
+ submodules: true
+ - template: templates/backoffice-install.yml
+ - script: npm run build:for:npm
+ displayName: Run build:for:npm
+ workingDirectory: src/Umbraco.Web.UI.Client
- bash: |
- echo "##[command]Running npm version"
- echo "##[debug]Version: $PACKAGE_VERSION"
echo "##[command]Running npm pack"
echo "##[debug]Output directory: $(Build.ArtifactStagingDirectory)"
- npm version $PACKAGE_VERSION --allow-same-version --no-git-tag-version
mkdir $(Build.ArtifactStagingDirectory)/npm
npm pack --pack-destination $(Build.ArtifactStagingDirectory)/npm
mv .npmrc $(Build.ArtifactStagingDirectory)/npm/
- displayName: Prepare Bellissima npm package
- env:
- PACKAGE_VERSION: $(build.NBGV_NpmPackageVersion)
+ displayName: Run npm pack
workingDirectory: src/Umbraco.Web.UI.Client
- task: PublishPipelineArtifact@1
displayName: Publish Bellissima npm artifact
@@ -208,28 +203,11 @@ stages:
pool:
vmImage: 'ubuntu-latest'
variables:
- npm_config_cache: $(Pipeline.Workspace)/.npm_client
- NODE_OPTIONS: --max_old_space_size=16384
BASE_PATH: /v$(umbracoMajorVersion)/ui
steps:
- checkout: self
submodules: true
- - task: NodeTool@0
- displayName: Use Node.js $(nodeVersion)
- retryCountOnTaskFailure: 3
- inputs:
- versionSpec: $(nodeVersion)
- - task: Cache@2
- displayName: Cache node_modules
- inputs:
- key: '"npm_client" | "$(Agent.OS)"| $(Build.SourcesDirectory)/src/Umbraco.Web.UI.Client/package-lock.json'
- restoreKeys: |
- "npm_client" | "$(Agent.OS)"
- "npm_client"
- path: $(npm_config_cache)
- - script: npm ci --no-fund --no-audit --prefer-offline
- workingDirectory: src/Umbraco.Web.UI.Client
- displayName: Run npm ci
+ - template: templates/backoffice-install.yml
- script: npm run storybook:build
displayName: Build Storybook
env:
@@ -239,16 +217,30 @@ stages:
displayName: Replace BASE_PATH on assets
workingDirectory: $(Build.SourcesDirectory)/src/Umbraco.Web.UI.Client/storybook-static
- task: ArchiveFiles@2
- displayName: Archive js Docs
+ displayName: Archive Storybook
inputs:
rootFolderOrFile: $(Build.SourcesDirectory)/src/Umbraco.Web.UI.Client/storybook-static
includeRootFolder: false
archiveFile: $(Build.ArtifactStagingDirectory)/ui-docs.zip
- task: PublishPipelineArtifact@1
- displayName: Publish js Docs
+ displayName: Publish Storybook
inputs:
targetPath: $(Build.ArtifactStagingDirectory)/ui-docs.zip
artifact: ui-docs
+ - script: npm run generate:ui-api-docs
+ displayName: Generate API Docs
+ workingDirectory: $(Build.SourcesDirectory)/src/Umbraco.Web.UI.Client
+ - task: ArchiveFiles@2
+ displayName: Archive UI API Docs
+ inputs:
+ rootFolderOrFile: $(Build.SourcesDirectory)/src/Umbraco.Web.UI.Client/ui-api
+ includeRootFolder: false
+ archiveFile: $(Build.ArtifactStagingDirectory)/ui-api-docs.zip
+ - task: PublishPipelineArtifact@1
+ displayName: Publish UI API Docs
+ inputs:
+ targetPath: $(Build.ArtifactStagingDirectory)/ui-api-docs.zip
+ artifact: ui-api-docs
###############################################
## Test
@@ -528,7 +520,7 @@ stages:
- ${{ if eq(parameters.isNightly, true) }}:
pwsh: npm run test --ignore-certificate-errors
${{ else }}:
- pwsh: npm run smokeTest --ignore-certificate-errors
+ pwsh: npm run smokeTest --ignore-certificate-errors
displayName: Run Playwright tests
continueOnError: true
workingDirectory: tests/Umbraco.Tests.AcceptanceTest
@@ -868,7 +860,7 @@ stages:
BlobPrefix: v$(umbracoMajorVersion)/csharp
CleanTargetBeforeCopy: true
- job:
- displayName: Upload js Docs
+ displayName: Upload Storybook
steps:
- checkout: none
- task: DownloadPipelineArtifact@2
@@ -881,7 +873,7 @@ stages:
archiveFilePatterns: $(Build.SourcesDirectory)/ui-docs.zip
destinationFolder: $(Build.ArtifactStagingDirectory)/ui-docs
- task: AzureFileCopy@4
- displayName: 'Copy UI Docs to blob storage'
+ displayName: 'Copy Storybook to blob storage'
inputs:
SourcePath: '$(Build.ArtifactStagingDirectory)/ui-docs/*'
azureSubscription: umbraco-storage
@@ -890,3 +882,26 @@ stages:
ContainerName: '$web'
BlobPrefix: v$(umbracoMajorVersion)/ui
CleanTargetBeforeCopy: true
+ - job:
+ displayName: Upload UI API Docs
+ steps:
+ - checkout: none
+ - task: DownloadPipelineArtifact@2
+ displayName: Download artifact
+ inputs:
+ artifact: ui-api-docs
+ path: $(Build.SourcesDirectory)
+ - task: ExtractFiles@1
+ inputs:
+ archiveFilePatterns: $(Build.SourcesDirectory)/ui-api-docs.zip
+ destinationFolder: $(Build.ArtifactStagingDirectory)/ui-api-docs
+ - task: AzureFileCopy@4
+ displayName: 'Copy UI API Docs to blob storage'
+ inputs:
+ SourcePath: '$(Build.ArtifactStagingDirectory)/ui-api-docs/*'
+ azureSubscription: umbraco-storage
+ Destination: AzureBlob
+ storage: umbracoapidocs
+ ContainerName: '$web'
+ BlobPrefix: v$(umbracoMajorVersion)/ui-api
+ CleanTargetBeforeCopy: true
diff --git a/build/templates/backoffice-install.yml b/build/templates/backoffice-install.yml
new file mode 100644
index 0000000000..2c22cca7e3
--- /dev/null
+++ b/build/templates/backoffice-install.yml
@@ -0,0 +1,31 @@
+steps:
+ - task: NodeTool@0
+ displayName: Use Node.js
+ retryCountOnTaskFailure: 3
+ inputs:
+ versionSource: 'fromFile'
+ versionFilePath: src/Umbraco.Web.UI.Client/.nvmrc
+
+ - bash: |
+ echo "##[command]Install nbgv"
+ dotnet tool install --tool-path . nbgv
+ echo "##[command]Running nbgv get-version"
+ PACKAGE_VERSION=$(nbgv get-version -v NpmPackageVersion)
+ echo "##[command]Running npm version"
+ echo "##[debug]Version: $PACKAGE_VERSION"
+ cd src/Umbraco.Web.UI.Client
+ npm version $PACKAGE_VERSION --allow-same-version --no-git-tag-version
+ displayName: Set NPM Version
+
+ - task: Cache@2
+ displayName: Cache node_modules
+ inputs:
+ key: '"npm_client" | "$(Agent.OS)"| $(Build.SourcesDirectory)/src/Umbraco.Web.UI.Client/package-lock.json'
+ restoreKeys: |
+ "npm_client" | "$(Agent.OS)"
+ "npm_client"
+ path: $(npm_config_cache)
+
+ - script: npm ci --no-fund --no-audit --prefer-offline
+ displayName: Run npm ci (Bellissima)
+ workingDirectory: src/Umbraco.Web.UI.Client
diff --git a/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/DocumentTypeControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/DocumentTypeControllerBase.cs
index 2e5b7385ae..c65ed1631d 100644
--- a/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/DocumentTypeControllerBase.cs
+++ b/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/DocumentTypeControllerBase.cs
@@ -86,6 +86,18 @@ public abstract class DocumentTypeControllerBase : ManagementApiControllerBase
.WithTitle("Operation not permitted")
.WithDetail("The attempted operation was not permitted, likely due to a permission/configuration mismatch with the operation.")
.Build()),
+ ContentTypeOperationStatus.CancelledByNotification => new BadRequestObjectResult(problemDetailsBuilder
+ .WithTitle("Cancelled by notification")
+ .WithDetail("The attempted operation was cancelled by a notification.")
+ .Build()),
+ ContentTypeOperationStatus.NameCannotBeEmpty => new BadRequestObjectResult(problemDetailsBuilder
+ .WithTitle("Name cannot be empty")
+ .WithDetail("The name of the content type cannot be empty")
+ .Build()),
+ ContentTypeOperationStatus.NameTooLong => new BadRequestObjectResult(problemDetailsBuilder
+ .WithTitle("Name was too long")
+ .WithDetail("Name cannot be more than 255 characters in length.")
+ .Build()),
_ => new ObjectResult("Unknown content type operation status") { StatusCode = StatusCodes.Status500InternalServerError },
});
diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Relation/ByRelationTypeKeyRelationController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Relation/ByRelationTypeKeyRelationController.cs
index f0aee0317f..cde52b5884 100644
--- a/src/Umbraco.Cms.Api.Management/Controllers/Relation/ByRelationTypeKeyRelationController.cs
+++ b/src/Umbraco.Cms.Api.Management/Controllers/Relation/ByRelationTypeKeyRelationController.cs
@@ -1,4 +1,4 @@
-using Asp.Versioning;
+using Asp.Versioning;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Umbraco.Cms.Api.Common.ViewModels.Pagination;
@@ -29,7 +29,7 @@ public class ByRelationTypeKeyRelationController : RelationControllerBase
///
/// Use case: On a relation type page you can see all created relations of this type.
///
- [HttpGet("type/{id:guid}")]
+ [HttpGet("type/{id:guid}", Name = "GetRelationByRelationTypeId")]
[MapToApiVersion("1.0")]
[ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status404NotFound)]
diff --git a/src/Umbraco.Cms.Api.Management/DependencyInjection/BackOfficeCorsPolicyBuilderExtensions.cs b/src/Umbraco.Cms.Api.Management/DependencyInjection/BackOfficeCorsPolicyBuilderExtensions.cs
index da81e5de7f..0f8a57f5d8 100644
--- a/src/Umbraco.Cms.Api.Management/DependencyInjection/BackOfficeCorsPolicyBuilderExtensions.cs
+++ b/src/Umbraco.Cms.Api.Management/DependencyInjection/BackOfficeCorsPolicyBuilderExtensions.cs
@@ -34,7 +34,7 @@ internal static class BackOfficeCorsPolicyBuilderExtensions
{
policy
.WithOrigins(customOrigin)
- .WithExposedHeaders(Constants.Headers.Location, Constants.Headers.GeneratedResource)
+ .WithExposedHeaders(Constants.Headers.Location, Constants.Headers.GeneratedResource, Constants.Headers.Notifications)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
diff --git a/src/Umbraco.Cms.Api.Management/Middleware/BackOfficeAuthorizationInitializationMiddleware.cs b/src/Umbraco.Cms.Api.Management/Middleware/BackOfficeAuthorizationInitializationMiddleware.cs
index c9179215df..4da821337d 100644
--- a/src/Umbraco.Cms.Api.Management/Middleware/BackOfficeAuthorizationInitializationMiddleware.cs
+++ b/src/Umbraco.Cms.Api.Management/Middleware/BackOfficeAuthorizationInitializationMiddleware.cs
@@ -1,10 +1,15 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Umbraco.Cms.Core;
+using Umbraco.Cms.Core.Configuration.Models;
+using Umbraco.Cms.Core.DependencyInjection;
+using Umbraco.Cms.Core.Hosting;
using Umbraco.Cms.Core.Routing;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Infrastructure.Security;
+using Umbraco.Extensions;
namespace Umbraco.Cms.Api.Management.Middleware;
@@ -16,15 +21,40 @@ public class BackOfficeAuthorizationInitializationMiddleware : IMiddleware
private readonly UmbracoRequestPaths _umbracoRequestPaths;
private readonly IServiceProvider _serviceProvider;
private readonly IRuntimeState _runtimeState;
+ private readonly IOptions _globalSettings;
+ private readonly IOptions _webRoutingSettings;
+ private readonly IHostingEnvironment _hostingEnvironment;
+ [Obsolete("Use the non-obsolete constructor. This will be removed in Umbraco 16.")]
public BackOfficeAuthorizationInitializationMiddleware(
UmbracoRequestPaths umbracoRequestPaths,
IServiceProvider serviceProvider,
IRuntimeState runtimeState)
+ : this(
+ umbracoRequestPaths,
+ serviceProvider,
+ runtimeState,
+ StaticServiceProvider.Instance.GetRequiredService>(),
+ StaticServiceProvider.Instance.GetRequiredService>(),
+ StaticServiceProvider.Instance.GetRequiredService()
+ )
+ {
+ }
+
+ public BackOfficeAuthorizationInitializationMiddleware(
+ UmbracoRequestPaths umbracoRequestPaths,
+ IServiceProvider serviceProvider,
+ IRuntimeState runtimeState,
+ IOptions globalSettings,
+ IOptions webRoutingSettings,
+ IHostingEnvironment hostingEnvironment)
{
_umbracoRequestPaths = umbracoRequestPaths;
_serviceProvider = serviceProvider;
_runtimeState = runtimeState;
+ _globalSettings = globalSettings;
+ _webRoutingSettings = webRoutingSettings;
+ _hostingEnvironment = hostingEnvironment;
}
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
@@ -47,6 +77,7 @@ public class BackOfficeAuthorizationInitializationMiddleware : IMiddleware
return;
}
+
if (_umbracoRequestPaths.IsBackOfficeRequest(context.Request.Path) == false)
{
return;
@@ -55,9 +86,13 @@ public class BackOfficeAuthorizationInitializationMiddleware : IMiddleware
await _firstBackOfficeRequestLocker.WaitAsync();
if (_firstBackOfficeRequest == false)
{
+ Uri? backOfficeUrl = string.IsNullOrWhiteSpace(_webRoutingSettings.Value.UmbracoApplicationUrl) is false
+ ? new Uri($"{_webRoutingSettings.Value.UmbracoApplicationUrl.TrimEnd('/')}{_globalSettings.Value.GetBackOfficePath(_hostingEnvironment).EnsureStartsWith('/')}")
+ : null;
+
using IServiceScope scope = _serviceProvider.CreateScope();
IBackOfficeApplicationManager backOfficeApplicationManager = scope.ServiceProvider.GetRequiredService();
- await backOfficeApplicationManager.EnsureBackOfficeApplicationAsync(new Uri(context.Request.GetDisplayUrl()));
+ await backOfficeApplicationManager.EnsureBackOfficeApplicationAsync(backOfficeUrl ?? new Uri(context.Request.GetDisplayUrl()));
_firstBackOfficeRequest = true;
}
diff --git a/src/Umbraco.Cms.Api.Management/OpenApi.json b/src/Umbraco.Cms.Api.Management/OpenApi.json
index 11dee452ca..2799d1bd61 100644
--- a/src/Umbraco.Cms.Api.Management/OpenApi.json
+++ b/src/Umbraco.Cms.Api.Management/OpenApi.json
@@ -53,7 +53,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -199,7 +199,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -259,7 +259,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -368,7 +368,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -508,7 +508,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -639,7 +639,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -695,7 +695,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -811,7 +811,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -874,7 +874,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -909,7 +909,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -1055,7 +1055,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -1115,7 +1115,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -1224,7 +1224,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -1364,7 +1364,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -1441,7 +1441,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -1490,7 +1490,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -1549,7 +1549,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -1597,7 +1597,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -1668,7 +1668,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -1731,7 +1731,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -1793,7 +1793,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -1963,7 +1963,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -2023,7 +2023,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -2132,7 +2132,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -2272,7 +2272,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -2341,7 +2341,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -2483,7 +2483,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -2629,7 +2629,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -2678,7 +2678,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -2726,7 +2726,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -2789,7 +2789,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -2844,7 +2844,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -2990,7 +2990,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -3050,7 +3050,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -3159,7 +3159,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -3299,7 +3299,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -3415,7 +3415,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -3561,7 +3561,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -3621,7 +3621,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -3730,7 +3730,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -3870,7 +3870,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -3990,7 +3990,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -4039,7 +4039,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -4087,7 +4087,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -4158,7 +4158,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -4221,7 +4221,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -4367,7 +4367,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -4427,7 +4427,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -4510,7 +4510,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -4650,7 +4650,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -4728,7 +4728,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -4806,7 +4806,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -4883,7 +4883,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -5040,7 +5040,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -5101,7 +5101,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -5243,7 +5243,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -5385,7 +5385,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -5440,7 +5440,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -5533,7 +5533,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -5568,7 +5568,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -5714,7 +5714,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -5774,7 +5774,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -5883,7 +5883,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -6023,7 +6023,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -6169,7 +6169,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -6218,7 +6218,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -6277,7 +6277,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -6325,7 +6325,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -6396,7 +6396,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -6459,7 +6459,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -6558,7 +6558,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -6632,7 +6632,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -6750,7 +6750,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -6868,7 +6868,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -6997,7 +6997,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -7143,7 +7143,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -7203,7 +7203,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -7312,7 +7312,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -7452,7 +7452,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -7531,7 +7531,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -7662,7 +7662,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -7722,7 +7722,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -7888,7 +7888,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -8004,7 +8004,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -8115,7 +8115,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -8178,7 +8178,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -8292,7 +8292,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -8423,7 +8423,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -8506,7 +8506,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -8564,7 +8564,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -8678,7 +8678,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -8820,7 +8820,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -8962,7 +8962,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9026,7 +9026,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9090,7 +9090,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9232,7 +9232,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9374,7 +9374,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9441,7 +9441,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9476,7 +9476,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9607,7 +9607,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9659,7 +9659,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9790,7 +9790,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9839,7 +9839,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9898,7 +9898,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -9972,7 +9972,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10083,7 +10083,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10157,7 +10157,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10299,7 +10299,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10362,7 +10362,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10417,7 +10417,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10465,7 +10465,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10536,7 +10536,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10599,7 +10599,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10689,7 +10689,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10723,7 +10723,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10778,7 +10778,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10837,7 +10837,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -10932,7 +10932,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -11048,7 +11048,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -11136,7 +11136,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -11213,7 +11213,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -11283,7 +11283,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -11335,7 +11335,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -11391,7 +11391,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -11512,7 +11512,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -11762,7 +11762,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -11794,7 +11794,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -11846,7 +11846,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -11990,7 +11990,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -12046,7 +12046,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -12154,7 +12154,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -12293,7 +12293,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -12348,7 +12348,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -12415,7 +12415,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -12510,7 +12510,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -12595,7 +12595,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -12650,7 +12650,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -12768,7 +12768,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -12827,7 +12827,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -12909,7 +12909,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -12965,7 +12965,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -13003,7 +13003,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -13041,7 +13041,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -13117,7 +13117,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -13176,7 +13176,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -13228,7 +13228,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -13287,7 +13287,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -13433,7 +13433,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -13493,7 +13493,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -13576,7 +13576,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -13716,7 +13716,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -13794,7 +13794,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -13871,7 +13871,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -14028,7 +14028,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -14089,7 +14089,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -14231,7 +14231,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -14373,7 +14373,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -14428,7 +14428,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -14521,7 +14521,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -14667,7 +14667,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -14727,7 +14727,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -14836,7 +14836,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -14976,7 +14976,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -15122,7 +15122,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -15170,7 +15170,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -15241,7 +15241,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -15304,7 +15304,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -15425,7 +15425,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -15474,7 +15474,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -15533,7 +15533,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -15679,7 +15679,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -15739,7 +15739,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -15848,7 +15848,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -15988,7 +15988,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -16067,7 +16067,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -16183,7 +16183,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -16294,7 +16294,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -16358,7 +16358,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -16422,7 +16422,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -16564,7 +16564,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -16631,7 +16631,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -16666,7 +16666,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -16797,7 +16797,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -16849,7 +16849,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -16980,7 +16980,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17054,7 +17054,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17165,7 +17165,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17239,7 +17239,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17381,7 +17381,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17444,7 +17444,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17499,7 +17499,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17547,7 +17547,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17618,7 +17618,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17681,7 +17681,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17730,7 +17730,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17785,7 +17785,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -17903,7 +17903,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -17952,7 +17952,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -18061,7 +18061,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -18201,7 +18201,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -18256,7 +18256,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -18305,7 +18305,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -18364,7 +18364,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -18510,7 +18510,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -18570,7 +18570,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -18653,7 +18653,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -18793,7 +18793,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -18870,7 +18870,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -18996,7 +18996,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -19089,7 +19089,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -19144,7 +19144,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -19264,7 +19264,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -19313,7 +19313,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -19372,7 +19372,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -19518,7 +19518,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -19578,7 +19578,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -19687,7 +19687,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -19827,7 +19827,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -19969,7 +19969,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -20004,7 +20004,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -20135,7 +20135,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -20209,7 +20209,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -20244,7 +20244,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -20279,7 +20279,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -20331,7 +20331,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -20392,7 +20392,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -20502,7 +20502,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -20537,7 +20537,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -20592,7 +20592,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -20736,7 +20736,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -20796,7 +20796,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -20879,7 +20879,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -20993,7 +20993,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -21054,7 +21054,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -21109,7 +21109,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -21157,7 +21157,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -21303,7 +21303,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -21362,7 +21362,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -21470,7 +21470,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -21609,7 +21609,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -21765,7 +21765,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -21911,7 +21911,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -21970,7 +21970,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -22078,7 +22078,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22133,7 +22133,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22192,7 +22192,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22239,7 +22239,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22301,7 +22301,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22356,7 +22356,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22412,7 +22412,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22447,7 +22447,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -22524,7 +22524,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22586,7 +22586,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22619,7 +22619,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22652,7 +22652,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22685,7 +22685,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22713,7 +22713,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22789,7 +22789,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22853,7 +22853,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -22910,7 +22910,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -22945,7 +22945,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -23000,7 +23000,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -23049,7 +23049,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -23104,7 +23104,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -23164,7 +23164,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -23174,7 +23174,7 @@
"tags": [
"Relation"
],
- "operationId": "GetRelationTypeById",
+ "operationId": "GetRelationByRelationTypeId",
"parameters": [
{
"name": "id",
@@ -23242,7 +23242,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -23290,7 +23290,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -23436,7 +23436,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -23495,7 +23495,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -23603,7 +23603,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -23742,7 +23742,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -23898,7 +23898,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24044,7 +24044,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24103,7 +24103,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -24211,7 +24211,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24258,7 +24258,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24320,7 +24320,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24375,7 +24375,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24427,7 +24427,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24508,7 +24508,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24543,7 +24543,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24648,7 +24648,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24779,7 +24779,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24967,7 +24967,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -24999,7 +24999,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -25031,7 +25031,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -25101,7 +25101,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -25149,7 +25149,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -25193,7 +25193,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -25252,7 +25252,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -25304,7 +25304,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -25352,7 +25352,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -25498,7 +25498,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -25557,7 +25557,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -25665,7 +25665,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -25804,7 +25804,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -25960,7 +25960,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -26106,7 +26106,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -26165,7 +26165,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -26273,7 +26273,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -26320,7 +26320,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -26382,7 +26382,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -26437,7 +26437,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -26510,7 +26510,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -26565,7 +26565,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -26600,7 +26600,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -26703,7 +26703,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -26752,7 +26752,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -26811,7 +26811,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -26957,7 +26957,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -27017,7 +27017,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -27126,7 +27126,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -27266,7 +27266,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -27301,7 +27301,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -27391,7 +27391,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -27426,7 +27426,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -27474,7 +27474,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -27537,7 +27537,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -27592,7 +27592,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -27697,7 +27697,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -27768,7 +27768,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -27862,7 +27862,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -27894,7 +27894,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -27994,7 +27994,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -28043,7 +28043,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -28166,7 +28166,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -28236,7 +28236,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -28342,7 +28342,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -28388,7 +28388,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -28479,7 +28479,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -28528,7 +28528,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -28633,7 +28633,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -28751,7 +28751,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -28804,7 +28804,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -28864,7 +28864,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -28947,7 +28947,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -29061,7 +29061,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -29186,7 +29186,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -29309,7 +29309,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -29437,7 +29437,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -29486,7 +29486,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -29632,7 +29632,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -29735,7 +29735,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -29802,7 +29802,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -29862,7 +29862,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -29971,7 +29971,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -30111,7 +30111,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -30174,7 +30174,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -30293,7 +30293,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -30353,7 +30353,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -30495,7 +30495,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -30617,7 +30617,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -30728,7 +30728,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -30868,7 +30868,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -30903,7 +30903,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -30935,7 +30935,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -30970,7 +30970,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -31072,7 +31072,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -31207,7 +31207,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -31275,7 +31275,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -31365,7 +31365,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -31455,7 +31455,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -31490,7 +31490,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -31525,7 +31525,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -31585,7 +31585,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -31648,7 +31648,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -31708,7 +31708,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -31839,7 +31839,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -31970,7 +31970,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -32116,7 +32116,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -32370,7 +32370,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -32583,7 +32583,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -32688,7 +32688,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -32737,7 +32737,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -32789,7 +32789,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -32933,7 +32933,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -32990,7 +32990,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -33099,7 +33099,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
},
@@ -33239,7 +33239,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -33291,7 +33291,7 @@
},
"security": [
{
- "Backoffice User": [ ]
+ "Backoffice User": []
}
]
}
@@ -37540,7 +37540,7 @@
},
"actionParameters": {
"type": "object",
- "additionalProperties": { },
+ "additionalProperties": {},
"nullable": true
}
},
@@ -37827,7 +37827,7 @@
},
"providerProperties": {
"type": "object",
- "additionalProperties": { },
+ "additionalProperties": {},
"nullable": true
}
},
@@ -38162,7 +38162,7 @@
},
"extensions": {
"type": "array",
- "items": { }
+ "items": {}
}
},
"additionalProperties": false
@@ -41591,7 +41591,7 @@
"nullable": true
}
},
- "additionalProperties": { }
+ "additionalProperties": {}
},
"ProblemDetailsBuilderModel": {
"type": "object",
@@ -45151,7 +45151,7 @@
"authorizationCode": {
"authorizationUrl": "/umbraco/management/api/v1/security/back-office/authorize",
"tokenUrl": "/umbraco/management/api/v1/security/back-office/token",
- "scopes": { }
+ "scopes": {}
}
}
}
diff --git a/src/Umbraco.Cms.Api.Management/Routing/BackOfficeAreaRoutes.cs b/src/Umbraco.Cms.Api.Management/Routing/BackOfficeAreaRoutes.cs
index a854be29f0..a12e1acb2e 100644
--- a/src/Umbraco.Cms.Api.Management/Routing/BackOfficeAreaRoutes.cs
+++ b/src/Umbraco.Cms.Api.Management/Routing/BackOfficeAreaRoutes.cs
@@ -7,8 +7,6 @@ using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.Hosting;
using Umbraco.Cms.Core.Services;
-using Umbraco.Cms.Core.Web.Mvc;
-using Umbraco.Cms.Web.Common.Controllers;
using Umbraco.Cms.Web.Common.Routing;
using Umbraco.Extensions;
@@ -54,8 +52,8 @@ public sealed class BackOfficeAreaRoutes : IAreaRoutes
case RuntimeLevel.Install:
case RuntimeLevel.Upgrade:
case RuntimeLevel.Run:
-
MapMinimalBackOffice(endpoints);
+ endpoints.MapHub(_umbracoPathSegment + Constants.Web.BackofficeSignalRHub);
break;
case RuntimeLevel.BootFailed:
case RuntimeLevel.Unknown:
diff --git a/src/Umbraco.Cms.Api.Management/Routing/BackofficeHub.cs b/src/Umbraco.Cms.Api.Management/Routing/BackofficeHub.cs
new file mode 100644
index 0000000000..47a2471a4b
--- /dev/null
+++ b/src/Umbraco.Cms.Api.Management/Routing/BackofficeHub.cs
@@ -0,0 +1,8 @@
+using Microsoft.AspNetCore.SignalR;
+
+namespace Umbraco.Cms.Api.Management.Routing;
+
+public class BackofficeHub : Hub
+{
+ public async Task SendPayload(object payload) => await Clients.All.SendAsync("payloadReceived", payload);
+}
diff --git a/src/Umbraco.Core/Constants-Web.cs b/src/Umbraco.Core/Constants-Web.cs
index 283ec6eaa3..65b460ba69 100644
--- a/src/Umbraco.Core/Constants-Web.cs
+++ b/src/Umbraco.Core/Constants-Web.cs
@@ -56,6 +56,7 @@ public static partial class Constants
/// The "base" path to the Management API
///
public const string ManagementApiPath = "/management/api/";
+ public const string BackofficeSignalRHub = "/backofficeHub";
public static class Routing
{
diff --git a/src/Umbraco.Core/Services/ContentTypeEditing/ContentTypeEditingService.cs b/src/Umbraco.Core/Services/ContentTypeEditing/ContentTypeEditingService.cs
index f366a75124..9c96fe64a4 100644
--- a/src/Umbraco.Core/Services/ContentTypeEditing/ContentTypeEditingService.cs
+++ b/src/Umbraco.Core/Services/ContentTypeEditing/ContentTypeEditingService.cs
@@ -40,7 +40,12 @@ internal sealed class ContentTypeEditingService : ContentTypeEditingServiceBase<
UpdateTemplates(contentType, model);
// save content type
- await SaveAsync(contentType, userKey);
+ Attempt creationAttempt = await _contentTypeService.CreateAsync(contentType, userKey);
+
+ if(creationAttempt.Success is false)
+ {
+ return Attempt.FailWithStatus(creationAttempt.Result, contentType);
+ }
return Attempt.SucceedWithStatus(ContentTypeOperationStatus.Success, contentType);
}
@@ -58,9 +63,11 @@ internal sealed class ContentTypeEditingService : ContentTypeEditingServiceBase<
UpdateHistoryCleanup(contentType, model);
UpdateTemplates(contentType, model);
- await SaveAsync(contentType, userKey);
+ Attempt attempt = await _contentTypeService.UpdateAsync(contentType, userKey);
- return Attempt.SucceedWithStatus(ContentTypeOperationStatus.Success, contentType);
+ return attempt.Success
+ ? Attempt.SucceedWithStatus(ContentTypeOperationStatus.Success, contentType)
+ : Attempt.FailWithStatus(attempt.Result, null);
}
public async Task> GetAvailableCompositionsAsync(
@@ -93,9 +100,6 @@ internal sealed class ContentTypeEditingService : ContentTypeEditingServiceBase<
contentType.SetDefaultTemplate(allowedTemplates.FirstOrDefault(t => t.Key == model.DefaultTemplateKey));
}
- private async Task SaveAsync(IContentType contentType, Guid userKey)
- => await _contentTypeService.SaveAsync(contentType, userKey);
-
protected override IContentType CreateContentType(IShortStringHelper shortStringHelper, int parentId)
=> new ContentType(shortStringHelper, parentId);
diff --git a/src/Umbraco.Core/Services/ContentTypeServiceBaseOfTRepositoryTItemTService.cs b/src/Umbraco.Core/Services/ContentTypeServiceBaseOfTRepositoryTItemTService.cs
index 8340f3c584..5d91c29b27 100644
--- a/src/Umbraco.Core/Services/ContentTypeServiceBaseOfTRepositoryTItemTService.cs
+++ b/src/Umbraco.Core/Services/ContentTypeServiceBaseOfTRepositoryTItemTService.cs
@@ -603,6 +603,75 @@ public abstract class ContentTypeServiceBase : ContentTypeSe
}
}
+ public async Task> CreateAsync(TItem item, Guid performingUserKey) => await InternalSaveAsync(item, performingUserKey);
+
+ public async Task> UpdateAsync(TItem item, Guid performingUserKey) => await InternalSaveAsync(item, performingUserKey);
+
+ private async Task> InternalSaveAsync(TItem item, Guid performingUserKey)
+ {
+ using ICoreScope scope = ScopeProvider.CreateCoreScope();
+ EventMessages eventMessages = EventMessagesFactory.Get();
+
+ Attempt validationAttempt = ValidateCommon(item);
+ if (validationAttempt.Success is false)
+ {
+ return Attempt.Fail(validationAttempt.Result);
+ }
+
+ SavingNotification savingNotification = GetSavingNotification(item, eventMessages);
+ if (await scope.Notifications.PublishCancelableAsync(savingNotification))
+ {
+ scope.Complete();
+ return Attempt.Fail(ContentTypeOperationStatus.CancelledByNotification);
+ }
+
+ scope.WriteLock(WriteLockIds);
+
+ // validate the DAG transform, within the lock
+ ValidateLocked(item); // throws if invalid
+
+ int userId = await _userIdKeyResolver.GetAsync(performingUserKey);
+ item.CreatorId = userId;
+ if (item.Description == string.Empty)
+ {
+ item.Description = null;
+ }
+
+ Repository.Save(item); // also updates content/media/member items
+
+ // figure out impacted content types
+ ContentTypeChange[] changes = ComposeContentTypeChanges(item).ToArray();
+
+ // Publish this in scope, see comment at GetContentTypeRefreshedNotification for more info.
+ await _eventAggregator.PublishAsync(GetContentTypeRefreshedNotification(changes, eventMessages));
+
+ scope.Notifications.Publish(GetContentTypeChangedNotification(changes, eventMessages));
+
+ SavedNotification savedNotification = GetSavedNotification(item, eventMessages);
+ savedNotification.WithStateFrom(savingNotification);
+ scope.Notifications.Publish(savedNotification);
+
+ Audit(AuditType.Save, userId, item.Id);
+ scope.Complete();
+
+ return Attempt.Succeed(ContentTypeOperationStatus.Success);
+ }
+
+ private Attempt ValidateCommon(TItem item)
+ {
+ if (string.IsNullOrWhiteSpace(item.Name))
+ {
+ return Attempt.Fail(ContentTypeOperationStatus.NameCannotBeEmpty);
+ }
+
+ if (item.Name.Length > 255)
+ {
+ return Attempt.Fail(ContentTypeOperationStatus.NameTooLong);
+ }
+
+ return Attempt.Succeed(ContentTypeOperationStatus.Success);
+ }
+
#endregion
#region Delete
diff --git a/src/Umbraco.Core/Services/IContentTypeServiceBase.cs b/src/Umbraco.Core/Services/IContentTypeServiceBase.cs
index f3707a5059..bee084fbf9 100644
--- a/src/Umbraco.Core/Services/IContentTypeServiceBase.cs
+++ b/src/Umbraco.Core/Services/IContentTypeServiceBase.cs
@@ -67,16 +67,31 @@ public interface IContentTypeBaseService : IContentTypeBaseService, IServ
bool HasChildren(Guid id);
+ [Obsolete("Please use the respective Create or Update instead")]
void Save(TItem? item, int userId = Constants.Security.SuperUserId);
+ [Obsolete("Please use the respective Create or Update instead")]
Task SaveAsync(TItem item, Guid performingUserKey)
{
Save(item);
return Task.CompletedTask;
}
+ [Obsolete("Please use the respective Create or Update instead")]
void Save(IEnumerable items, int userId = Constants.Security.SuperUserId);
+ Task> CreateAsync(TItem item, Guid performingUserKey)
+ {
+ Save(item);
+ return Task.FromResult(Attempt.Succeed(ContentTypeOperationStatus.Success));
+ }
+
+ Task> UpdateAsync(TItem item, Guid performingUserKey)
+ {
+ Save(item);
+ return Task.FromResult(Attempt.Succeed(ContentTypeOperationStatus.Success));
+ }
+
void Delete(TItem item, int userId = Constants.Security.SuperUserId);
///
diff --git a/src/Umbraco.Core/Services/OperationStatus/ContentTypeOperationStatus.cs b/src/Umbraco.Core/Services/OperationStatus/ContentTypeOperationStatus.cs
index 21eeedb1d5..8b52d921ee 100644
--- a/src/Umbraco.Core/Services/OperationStatus/ContentTypeOperationStatus.cs
+++ b/src/Umbraco.Core/Services/OperationStatus/ContentTypeOperationStatus.cs
@@ -5,6 +5,8 @@ public enum ContentTypeOperationStatus
Success,
DuplicateAlias,
InvalidAlias,
+ NameCannotBeEmpty,
+ NameTooLong,
InvalidPropertyTypeAlias,
PropertyTypeAliasCannotEqualContentTypeAlias,
DuplicatePropertyTypeAlias,
@@ -17,5 +19,6 @@ public enum ContentTypeOperationStatus
MissingContainer,
DuplicateContainer,
NotFound,
- NotAllowed
+ NotAllowed,
+ CancelledByNotification,
}
diff --git a/src/Umbraco.Core/Templates/HtmlLocalLinkParser.cs b/src/Umbraco.Core/Templates/HtmlLocalLinkParser.cs
index 059f5f9cef..74105da511 100644
--- a/src/Umbraco.Core/Templates/HtmlLocalLinkParser.cs
+++ b/src/Umbraco.Core/Templates/HtmlLocalLinkParser.cs
@@ -10,6 +10,13 @@ namespace Umbraco.Cms.Core.Templates;
///
public sealed class HtmlLocalLinkParser
{
+ // needs to support media and document links, order of attributes should not matter nor should other attributes mess with things
+ // media
+ // other page
+ internal static readonly Regex LocalLinkTagPattern = new(
+ @"document|media)['""].*?(?href=[""']/{localLink:(?[a-fA-F0-9-]+)})[""'])|((?href=[""']/{localLink:(?[a-fA-F0-9-]+)})[""'].*?type=(['""])(?document|media)(?:['""])))|(?:(?:type=['""](?document|media)['""])|(?:(?href=[""']/{localLink:[a-fA-F0-9-]+})[""'])))[^>]*>",
+ RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
+
internal static readonly Regex LocalLinkPattern = new(
@"href=""[/]?(?:\{|\%7B)localLink:([a-zA-Z0-9-://]+)(?:\}|\%7D)",
RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
@@ -105,6 +112,32 @@ public sealed class HtmlLocalLinkParser
}
private IEnumerable<(int? intId, GuidUdi? udi, string tagValue)> FindLocalLinkIds(string text)
+ {
+ MatchCollection localLinkTagMatches = LocalLinkTagPattern.Matches(text);
+ foreach (Match linkTag in localLinkTagMatches)
+ {
+ if (linkTag.Groups.Count < 1)
+ {
+ continue;
+ }
+
+ if (Guid.TryParse(linkTag.Groups["guid"].Value, out Guid guid) is false)
+ {
+ continue;
+ }
+
+ yield return (null, new GuidUdi(linkTag.Groups["type"].Value, guid), linkTag.Groups["locallink"].Value);
+ }
+
+ // also return legacy results for values that have not been migrated
+ foreach ((int? intId, GuidUdi? udi, string tagValue) legacyResult in FindLegacyLocalLinkIds(text))
+ {
+ yield return legacyResult;
+ }
+ }
+
+ // todo remove at some point?
+ private IEnumerable<(int? intId, GuidUdi? udi, string tagValue)> FindLegacyLocalLinkIds(string text)
{
// Parse internal links
MatchCollection tags = LocalLinkPattern.Matches(text);
diff --git a/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextElementParser.cs b/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextElementParser.cs
index eed3b848eb..61b6418ae7 100644
--- a/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextElementParser.cs
+++ b/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextElementParser.cs
@@ -132,9 +132,15 @@ internal sealed class ApiRichTextElementParser : ApiRichTextParserBase, IApiRich
return;
}
+ if (attributes.ContainsKey("type") is false || attributes["type"] is not string type)
+ {
+ type = "unknown";
+ }
+
ReplaceLocalLinks(
publishedSnapshot,
href,
+ type,
route =>
{
attributes["route"] = route;
diff --git a/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextMarkupParser.cs b/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextMarkupParser.cs
index 42c8829868..338966dc39 100644
--- a/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextMarkupParser.cs
+++ b/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextMarkupParser.cs
@@ -52,8 +52,9 @@ internal sealed class ApiRichTextMarkupParser : ApiRichTextParserBase, IApiRichT
foreach (HtmlNode link in links)
{
ReplaceLocalLinks(
- publishedSnapshot,
+ publishedSnapshot,
link.GetAttributeValue("href", string.Empty),
+ link.GetAttributeValue("type", "unknown"),
route =>
{
link.SetAttributeValue("href", route.Path);
diff --git a/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextParserBase.cs b/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextParserBase.cs
index 7723fc835c..407bc1a022 100644
--- a/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextParserBase.cs
+++ b/src/Umbraco.Infrastructure/DeliveryApi/ApiRichTextParserBase.cs
@@ -4,6 +4,7 @@ using Umbraco.Cms.Core.DeliveryApi;
using Umbraco.Cms.Core.Models.DeliveryApi;
using Umbraco.Cms.Core.Models.PublishedContent;
using Umbraco.Cms.Core.PublishedCache;
+using Umbraco.Cms.Core.Templates;
namespace Umbraco.Cms.Infrastructure.DeliveryApi;
@@ -18,20 +19,35 @@ internal abstract partial class ApiRichTextParserBase
_apiMediaUrlProvider = apiMediaUrlProvider;
}
- protected void ReplaceLocalLinks(IPublishedSnapshot publishedSnapshot, string href, Action handleContentRoute, Action handleMediaUrl, Action handleInvalidLink)
+ protected void ReplaceLocalLinks(IPublishedSnapshot publishedSnapshot, string href, string type, Action handleContentRoute, Action handleMediaUrl, Action handleInvalidLink)
+ {
+ ReplaceStatus replaceAttempt = ReplaceLocalLink(publishedSnapshot, href, type, handleContentRoute, handleMediaUrl);
+ if (replaceAttempt == ReplaceStatus.Success)
+ {
+ return;
+ }
+
+ if (replaceAttempt == ReplaceStatus.InvalidEntityType || ReplaceLegacyLocalLink(publishedSnapshot, href, handleContentRoute, handleMediaUrl) == ReplaceStatus.InvalidEntityType)
+ {
+ handleInvalidLink();
+ }
+ }
+
+ private ReplaceStatus ReplaceLocalLink(IPublishedSnapshot publishedSnapshot, string href, string type, Action handleContentRoute, Action handleMediaUrl)
{
Match match = LocalLinkRegex().Match(href);
if (match.Success is false)
{
- return;
+ return ReplaceStatus.NoMatch;
}
- if (UdiParser.TryParse(match.Groups["udi"].Value, out Udi? udi) is false)
+ if (Guid.TryParse(match.Groups["guid"].Value, out Guid guid) is false)
{
- return;
+ return ReplaceStatus.NoMatch;
}
- bool handled = false;
+ var udi = new GuidUdi(type, guid);
+
switch (udi.EntityType)
{
case Constants.UdiEntityType.Document:
@@ -41,8 +57,8 @@ internal abstract partial class ApiRichTextParserBase
: null;
if (route != null)
{
- handled = true;
handleContentRoute(route);
+ return ReplaceStatus.Success;
}
break;
@@ -50,17 +66,56 @@ internal abstract partial class ApiRichTextParserBase
IPublishedContent? media = publishedSnapshot.Media?.GetById(udi);
if (media != null)
{
- handled = true;
handleMediaUrl(_apiMediaUrlProvider.GetUrl(media));
+ return ReplaceStatus.Success;
}
break;
}
- if(handled is false)
+ return ReplaceStatus.InvalidEntityType;
+ }
+
+ private ReplaceStatus ReplaceLegacyLocalLink(IPublishedSnapshot publishedSnapshot, string href, Action handleContentRoute, Action handleMediaUrl)
+ {
+ Match match = LegacyLocalLinkRegex().Match(href);
+ if (match.Success is false)
{
- handleInvalidLink();
+ return ReplaceStatus.NoMatch;
}
+
+ if (UdiParser.TryParse(match.Groups["udi"].Value, out Udi? udi) is false)
+ {
+ return ReplaceStatus.NoMatch;
+ }
+
+
+ switch (udi.EntityType)
+ {
+ case Constants.UdiEntityType.Document:
+ IPublishedContent? content = publishedSnapshot.Content?.GetById(udi);
+ IApiContentRoute? route = content != null
+ ? _apiContentRouteBuilder.Build(content)
+ : null;
+ if (route != null)
+ {
+ handleContentRoute(route);
+ return ReplaceStatus.Success;
+ }
+
+ break;
+ case Constants.UdiEntityType.Media:
+ IPublishedContent? media = publishedSnapshot.Media?.GetById(udi);
+ if (media != null)
+ {
+ handleMediaUrl(_apiMediaUrlProvider.GetUrl(media));
+ return ReplaceStatus.Success;
+ }
+
+ break;
+ }
+
+ return ReplaceStatus.InvalidEntityType;
}
protected void ReplaceLocalImages(IPublishedSnapshot publishedSnapshot, string udi, Action handleMediaUrl)
@@ -80,5 +135,15 @@ internal abstract partial class ApiRichTextParserBase
}
[GeneratedRegex("{localLink:(?umb:.+)}")]
+ private static partial Regex LegacyLocalLinkRegex();
+
+ [GeneratedRegex("{localLink:(?.+)}")]
private static partial Regex LocalLinkRegex();
+
+ private enum ReplaceStatus
+ {
+ NoMatch,
+ Success,
+ InvalidEntityType
+ }
}
diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/UmbracoPlan.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/UmbracoPlan.cs
index 91ca3b4d58..8502e4c529 100644
--- a/src/Umbraco.Infrastructure/Migrations/Upgrade/UmbracoPlan.cs
+++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/UmbracoPlan.cs
@@ -84,6 +84,9 @@ public class UmbracoPlan : MigrationPlan
// we need to re-run this migration, as it was flawed for V14 RC3 (the migration can run twice without any issues)
To("{6FB5CA9E-C823-473B-A14C-FE760D75943C}");
To("{827360CA-0855-42A5-8F86-A51F168CB559}");
- To("{FEF2DAF4-5408-4636-BB0E-B8798DF8F095}");
+
+ // To 14.1.0
+ To("{FEF2DAF4-5408-4636-BB0E-B8798DF8F095}");
+ To("{A385C5DF-48DC-46B4-A742-D5BB846483BC}");
}
}
diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_14_1_0/MigrateOldRichTextSeedConfiguration.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_14_1_0/MigrateOldRichTextSeedConfiguration.cs
new file mode 100644
index 0000000000..765fba03d1
--- /dev/null
+++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_14_1_0/MigrateOldRichTextSeedConfiguration.cs
@@ -0,0 +1,38 @@
+using NPoco;
+using Umbraco.Cms.Core;
+using Umbraco.Cms.Infrastructure.Persistence;
+using Umbraco.Cms.Infrastructure.Persistence.Dtos;
+using Umbraco.Extensions;
+
+namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_14_1_0;
+
+public class MigrateOldRichTextSeedConfiguration : MigrationBase
+{
+ private const string OldSeedValue =
+ "{\"value\":\",code,undo,redo,cut,copy,mcepasteword,stylepicker,bold,italic,bullist,numlist,outdent,indent,mcelink,unlink,mceinsertanchor,mceimage,umbracomacro,mceinserttable,umbracoembed,mcecharmap,|1|1,2,3,|0|500,400|1049,|true|\"}";
+
+ private const string NewDefaultValue =
+ "{\"toolbar\":[\"styles\",\"bold\",\"italic\",\"alignleft\",\"aligncenter\",\"alignright\",\"bullist\",\"numlist\",\"outdent\",\"indent\",\"sourcecode\",\"link\",\"umbmediapicker\",\"umbembeddialog\"],\"mode\":\"Classic\",\"maxImageSize\":500}";
+ public MigrateOldRichTextSeedConfiguration(IMigrationContext context) : base(context)
+ {
+ }
+
+ protected override void Migrate()
+ {
+ Sql sql = Sql()
+ .Select()
+ .From()
+ .Where(x =>
+ x.EditorAlias.Equals(Constants.PropertyEditors.Aliases.RichText)
+ && x.Configuration == OldSeedValue);
+
+ List dataTypeDtos = Database.Fetch(sql);
+
+ foreach (DataTypeDto dataTypeDto in dataTypeDtos)
+ {
+ // Update the configuration
+ dataTypeDto.Configuration = NewDefaultValue;
+ Database.Update(dataTypeDto);
+ }
+ }
+}
diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_14_0_0/MigrateRichTextConfiguration.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_14_1_0/MigrateRichTextConfiguration.cs
similarity index 93%
rename from src/Umbraco.Infrastructure/Migrations/Upgrade/V_14_0_0/MigrateRichTextConfiguration.cs
rename to src/Umbraco.Infrastructure/Migrations/Upgrade/V_14_1_0/MigrateRichTextConfiguration.cs
index 950259f575..bca328eb3f 100644
--- a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_14_0_0/MigrateRichTextConfiguration.cs
+++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_14_1_0/MigrateRichTextConfiguration.cs
@@ -4,7 +4,7 @@ using Umbraco.Cms.Infrastructure.Persistence;
using Umbraco.Cms.Infrastructure.Persistence.Dtos;
using Umbraco.Extensions;
-namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_14_0_0;
+namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_14_1_0;
public class MigrateRichTextConfiguration : MigrationBase
{
diff --git a/src/Umbraco.Infrastructure/Serialization/JsonObjectConverter.cs b/src/Umbraco.Infrastructure/Serialization/JsonObjectConverter.cs
index e1c0f5950d..d8c9778461 100644
--- a/src/Umbraco.Infrastructure/Serialization/JsonObjectConverter.cs
+++ b/src/Umbraco.Infrastructure/Serialization/JsonObjectConverter.cs
@@ -101,8 +101,9 @@ public sealed class JsonObjectConverter : JsonConverter
JsonTokenType.Number when reader.TryGetInt32(out int i) => i,
JsonTokenType.Number when reader.TryGetInt64(out long l) => l,
JsonTokenType.Number => reader.GetDouble(),
+ JsonTokenType.String when reader.TryGetDateTimeOffset(out DateTimeOffset datetime) => datetime,
JsonTokenType.String when reader.TryGetDateTime(out DateTime datetime) => datetime,
- JsonTokenType.String => reader.GetString()!,
+ JsonTokenType.String => reader.GetString(),
_ => JsonDocument.ParseValue(ref reader).RootElement.Clone()
};
}
diff --git a/src/Umbraco.Web.UI.Client b/src/Umbraco.Web.UI.Client
index 9077e80b32..9ec8c79227 160000
--- a/src/Umbraco.Web.UI.Client
+++ b/src/Umbraco.Web.UI.Client
@@ -1 +1 @@
-Subproject commit 9077e80b3298c3ef9ca491fca7a33cc662ea6f5b
+Subproject commit 9ec8c79227312d97e5dcd6b61a6209752e48d76f
diff --git a/src/Umbraco.Web.UI.Login/package-lock.json b/src/Umbraco.Web.UI.Login/package-lock.json
index 33ed12c308..43eaac8a2b 100644
--- a/src/Umbraco.Web.UI.Login/package-lock.json
+++ b/src/Umbraco.Web.UI.Login/package-lock.json
@@ -6,8 +6,8 @@
"": {
"name": "login",
"devDependencies": {
- "@umbraco-cms/backoffice": "file:../Umbraco.Web.UI.Client",
- "@umbraco-ui/uui-css": "^1.8.0-rc.0",
+ "@umbraco-cms/backoffice": "^14.0.0",
+ "@umbraco-ui/uui-css": "^1.8.0",
"msw": "^2.3.0",
"typescript": "^5.4.5",
"vite": "^5.2.11",
@@ -18,94 +18,6 @@
"npm": ">=10.1"
}
},
- "../Umbraco.Web.UI.Client": {
- "name": "@umbraco-cms/backoffice",
- "version": "14.0.0-rc2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/diff": "^5.0.9",
- "@types/dompurify": "^3.0.5",
- "@types/uuid": "^9.0.8",
- "@umbraco-ui/uui": "1.8.0-rc.3",
- "@umbraco-ui/uui-css": "1.8.0-rc.0",
- "base64-js": "^1.5.1",
- "diff": "^5.2.0",
- "dompurify": "^3.1.4",
- "element-internals-polyfill": "^1.3.10",
- "lit": "^3.1.2",
- "marked": "^12.0.0",
- "monaco-editor": "^0.46.0",
- "rxjs": "^7.8.1",
- "tinymce": "^6.8.3",
- "tinymce-i18n": "^24.1.29",
- "uuid": "^9.0.1"
- },
- "devDependencies": {
- "@babel/core": "^7.24.3",
- "@hey-api/openapi-ts": "^0.37.3",
- "@mdx-js/react": "^3.0.0",
- "@open-wc/testing": "^4.0.0",
- "@playwright/test": "^1.41.1",
- "@rollup/plugin-commonjs": "^25.0.7",
- "@rollup/plugin-json": "^6.1.0",
- "@rollup/plugin-node-resolve": "^15.2.3",
- "@rollup/plugin-replace": "^5.0.5",
- "@storybook/addon-a11y": "^7.6.17",
- "@storybook/addon-actions": "^7.6.17",
- "@storybook/addon-essentials": "^7.6.17",
- "@storybook/addon-links": "^7.6.17",
- "@storybook/mdx2-csf": "^1.1.0",
- "@storybook/web-components": "^7.6.17",
- "@storybook/web-components-vite": "^7.6.17",
- "@types/chai": "^4.3.5",
- "@types/mocha": "^10.0.1",
- "@typescript-eslint/eslint-plugin": "^7.1.0",
- "@typescript-eslint/parser": "^7.1.0",
- "@web/dev-server-esbuild": "^1.0.2",
- "@web/dev-server-import-maps": "^0.2.0",
- "@web/dev-server-rollup": "^0.6.1",
- "@web/test-runner": "^0.18.1",
- "@web/test-runner-playwright": "^0.11.0",
- "babel-loader": "^9.1.3",
- "eslint": "^8.56.0",
- "eslint-config-prettier": "^9.1.0",
- "eslint-import-resolver-typescript": "^3.6.1",
- "eslint-plugin-import": "^2.29.1",
- "eslint-plugin-lit": "^1.11.0",
- "eslint-plugin-lit-a11y": "^4.1.1",
- "eslint-plugin-local-rules": "^2.0.1",
- "eslint-plugin-storybook": "^0.6.15",
- "eslint-plugin-wc": "^2.0.4",
- "glob": "^10.3.10",
- "lucide-static": "^0.367.0",
- "msw": "^1.3.2",
- "playwright-msw": "^3.0.1",
- "prettier": "3.2.5",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "remark-gfm": "^3.0.1",
- "rollup": "^4.14.1",
- "rollup-plugin-esbuild": "^6.1.1",
- "rollup-plugin-import-css": "^3.5.0",
- "rollup-plugin-web-worker-loader": "^1.6.1",
- "simple-icons": "^11.11.0",
- "storybook": "^7.6.17",
- "tiny-glob": "^0.2.9",
- "tsc-alias": "^1.8.8",
- "typedoc": "^0.25.10",
- "typescript": "^5.4.5",
- "typescript-json-schema": "^0.63.0",
- "vite": "^5.2.9",
- "vite-plugin-static-copy": "^1.0.2",
- "vite-tsconfig-paths": "^4.3.2",
- "web-component-analyzer": "^2.0.0"
- },
- "engines": {
- "node": ">=20.9 <21",
- "npm": ">=10.1 < 11"
- }
- },
"node_modules/@bundled-es-modules/cookie": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.0.tgz",
@@ -125,9 +37,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
- "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
"cpu": [
"ppc64"
],
@@ -141,9 +53,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
- "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
"cpu": [
"arm"
],
@@ -157,9 +69,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
- "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
"cpu": [
"arm64"
],
@@ -173,9 +85,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
- "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
"cpu": [
"x64"
],
@@ -189,9 +101,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
- "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
"cpu": [
"arm64"
],
@@ -205,9 +117,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
- "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
"cpu": [
"x64"
],
@@ -221,9 +133,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
- "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
"cpu": [
"arm64"
],
@@ -237,9 +149,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
- "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
"cpu": [
"x64"
],
@@ -253,9 +165,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
- "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
"cpu": [
"arm"
],
@@ -269,9 +181,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
- "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
"cpu": [
"arm64"
],
@@ -285,9 +197,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
- "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
"cpu": [
"ia32"
],
@@ -301,9 +213,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
- "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
"cpu": [
"loong64"
],
@@ -317,9 +229,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
- "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
"cpu": [
"mips64el"
],
@@ -333,9 +245,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
- "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
"cpu": [
"ppc64"
],
@@ -349,9 +261,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
- "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
"cpu": [
"riscv64"
],
@@ -365,9 +277,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
- "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
"cpu": [
"s390x"
],
@@ -381,9 +293,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
- "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
"cpu": [
"x64"
],
@@ -397,9 +309,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
- "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
"cpu": [
"x64"
],
@@ -413,9 +325,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
- "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
"cpu": [
"x64"
],
@@ -429,9 +341,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
- "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
"cpu": [
"x64"
],
@@ -445,9 +357,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
- "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
"cpu": [
"arm64"
],
@@ -461,9 +373,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
- "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
"cpu": [
"ia32"
],
@@ -477,9 +389,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
- "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
"cpu": [
"x64"
],
@@ -493,35 +405,34 @@
}
},
"node_modules/@inquirer/confirm": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.0.0.tgz",
- "integrity": "sha512-LHeuYP1D8NmQra1eR4UqvZMXwxEdDXyElJmmZfU44xdNLL6+GcQBS0uE16vyfZVjH8c22p9e+DStROfE/hyHrg==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.10.tgz",
+ "integrity": "sha512-/aAHu83Njy6yf44T+ZrRPUkMcUqprrOiIKsyMvf9jOV+vF5BNb2ja1aLP33MK36W8eaf91MTL/mU/e6METuENg==",
"dev": true,
"dependencies": {
- "@inquirer/core": "^7.0.0",
- "@inquirer/type": "^1.2.0"
+ "@inquirer/core": "^8.2.3",
+ "@inquirer/type": "^1.3.3"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@inquirer/core": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-7.0.0.tgz",
- "integrity": "sha512-g13W5yEt9r1sEVVriffJqQ8GWy94OnfxLCreNSOTw0HPVcszmc/If1KIf7YBmlwtX4klmvwpZHnQpl3N7VX2xA==",
+ "version": "8.2.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-8.2.3.tgz",
+ "integrity": "sha512-WrpDVPAaxJQjHid3Ra4FhUO70YBzkHSYVyW5X48L5zHYdudoPISJqTRRWSeamHfaXda7PNNaC5Py5MEo7QwBNA==",
"dev": true,
"dependencies": {
- "@inquirer/type": "^1.2.0",
+ "@inquirer/figures": "^1.0.3",
+ "@inquirer/type": "^1.3.3",
"@types/mute-stream": "^0.0.4",
- "@types/node": "^20.11.16",
+ "@types/node": "^20.14.6",
"@types/wrap-ansi": "^3.0.0",
"ansi-escapes": "^4.3.2",
"chalk": "^4.1.2",
"cli-spinners": "^2.9.2",
"cli-width": "^4.1.0",
- "figures": "^3.2.0",
"mute-stream": "^1.0.0",
- "run-async": "^3.0.0",
"signal-exit": "^4.1.0",
"strip-ansi": "^6.0.1",
"wrap-ansi": "^6.2.0"
@@ -530,24 +441,19 @@
"node": ">=18"
}
},
- "node_modules/@inquirer/core/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "node_modules/@inquirer/figures": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.3.tgz",
+ "integrity": "sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==",
"dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
"node_modules/@inquirer/type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.2.0.tgz",
- "integrity": "sha512-/vvkUkYhrjbm+RolU7V1aUFDydZVKNKqKHR5TsE+j5DXgXFwrsOPcoGUJ02K0O7q7O53CU2DOTMYCHeGZ25WHA==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.3.3.tgz",
+ "integrity": "sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==",
"dev": true,
"engines": {
"node": ">=18"
@@ -571,9 +477,9 @@
}
},
"node_modules/@mswjs/cookies": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-1.1.0.tgz",
- "integrity": "sha512-0ZcCVQxifZmhwNBoQIrystCb+2sWBY2Zw8lpfJBPCHGCA/HWqehITeCRVIv4VMy8MPlaHo2w2pTHFV2pFfqKPw==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-1.1.1.tgz",
+ "integrity": "sha512-W68qOHEjx1iD+4VjQudlx26CPIoxmIAtK4ZCexU0/UJBG6jYhcuyzKJx+Iw8uhBIGd9eba64XgWVgo20it1qwA==",
"dev": true,
"engines": {
"node": ">=18"
@@ -619,9 +525,9 @@
"dev": true
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz",
- "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz",
+ "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==",
"cpu": [
"arm"
],
@@ -632,9 +538,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz",
- "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz",
+ "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==",
"cpu": [
"arm64"
],
@@ -645,9 +551,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz",
- "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz",
+ "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==",
"cpu": [
"arm64"
],
@@ -658,9 +564,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz",
- "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz",
+ "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==",
"cpu": [
"x64"
],
@@ -671,9 +577,22 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz",
- "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz",
+ "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz",
+ "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==",
"cpu": [
"arm"
],
@@ -684,9 +603,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz",
- "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz",
+ "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==",
"cpu": [
"arm64"
],
@@ -697,9 +616,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz",
- "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz",
+ "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==",
"cpu": [
"arm64"
],
@@ -709,10 +628,23 @@
"linux"
]
},
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz",
+ "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz",
- "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz",
+ "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==",
"cpu": [
"riscv64"
],
@@ -722,10 +654,23 @@
"linux"
]
},
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz",
+ "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz",
- "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz",
+ "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==",
"cpu": [
"x64"
],
@@ -736,9 +681,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz",
- "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz",
+ "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==",
"cpu": [
"x64"
],
@@ -749,9 +694,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz",
- "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz",
+ "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==",
"cpu": [
"arm64"
],
@@ -762,9 +707,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz",
- "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz",
+ "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==",
"cpu": [
"ia32"
],
@@ -775,9 +720,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz",
- "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz",
+ "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==",
"cpu": [
"x64"
],
@@ -793,6 +738,23 @@
"integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
"dev": true
},
+ "node_modules/@types/diff": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.2.1.tgz",
+ "integrity": "sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@types/dompurify": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz",
+ "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/trusted-types": "*"
+ }
+ },
"node_modules/@types/estree": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
@@ -809,18 +771,18 @@
}
},
"node_modules/@types/node": {
- "version": "20.11.17",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.17.tgz",
- "integrity": "sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==",
+ "version": "20.14.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz",
+ "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==",
"dev": true,
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@types/statuses": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.4.tgz",
- "integrity": "sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz",
+ "integrity": "sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==",
"dev": true
},
"node_modules/@types/trusted-types": {
@@ -830,6 +792,13 @@
"dev": true,
"peer": true
},
+ "node_modules/@types/uuid": {
+ "version": "9.0.8",
+ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
+ "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/@types/wrap-ansi": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz",
@@ -837,18 +806,1009 @@
"dev": true
},
"node_modules/@umbraco-cms/backoffice": {
- "resolved": "../Umbraco.Web.UI.Client",
- "link": true
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-cms/backoffice/-/backoffice-14.0.0.tgz",
+ "integrity": "sha512-PpJXHBeqDEEKTf4L/K7d8Ua9E2G9VuXHL76lBmBrf+1Sa7iWVuqf5BCvSa0wy1hKLrU1ytLsmByvVHEcix4XOw==",
+ "dev": true,
+ "engines": {
+ "node": ">=20.9 <21",
+ "npm": ">=10.1 < 11"
+ },
+ "peerDependencies": {
+ "@types/diff": "^5.2.1",
+ "@types/dompurify": "^3.0.5",
+ "@types/uuid": "^9.0.8",
+ "@umbraco-ui/uui": "1.8.1",
+ "@umbraco-ui/uui-css": "1.8.0",
+ "base64-js": "^1.5.1",
+ "diff": "^5.2.0",
+ "dompurify": "^3.1.4",
+ "element-internals-polyfill": "^1.3.11",
+ "lit": "^3.1.3",
+ "marked": "^12.0.2",
+ "monaco-editor": "^0.48.0",
+ "rxjs": "^7.8.1",
+ "tinymce": "^6.8.3",
+ "tinymce-i18n": "^24.5.8",
+ "uuid": "^9.0.1"
+ }
+ },
+ "node_modules/@umbraco-ui/uui": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.8.1.tgz",
+ "integrity": "sha512-KWKtuSQdxeCbGH2gezumuFysf+33q2TZy4h85zCABFvHgOeeR1EB7/S2jUNGoe2IOqYLktYl0GdQszfmyFN1dg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-action-bar": "1.8.0",
+ "@umbraco-ui/uui-avatar": "1.8.0",
+ "@umbraco-ui/uui-avatar-group": "1.8.0",
+ "@umbraco-ui/uui-badge": "1.8.0",
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-boolean-input": "1.8.0",
+ "@umbraco-ui/uui-box": "1.8.0",
+ "@umbraco-ui/uui-breadcrumbs": "1.8.0",
+ "@umbraco-ui/uui-button": "1.8.0",
+ "@umbraco-ui/uui-button-group": "1.8.0",
+ "@umbraco-ui/uui-button-inline-create": "1.8.0",
+ "@umbraco-ui/uui-card": "1.8.0",
+ "@umbraco-ui/uui-card-block-type": "1.8.0",
+ "@umbraco-ui/uui-card-content-node": "1.8.0",
+ "@umbraco-ui/uui-card-media": "1.8.0",
+ "@umbraco-ui/uui-card-user": "1.8.0",
+ "@umbraco-ui/uui-caret": "1.8.0",
+ "@umbraco-ui/uui-checkbox": "1.8.0",
+ "@umbraco-ui/uui-color-area": "1.8.0",
+ "@umbraco-ui/uui-color-picker": "1.8.0",
+ "@umbraco-ui/uui-color-slider": "1.8.0",
+ "@umbraco-ui/uui-color-swatch": "1.8.0",
+ "@umbraco-ui/uui-color-swatches": "1.8.0",
+ "@umbraco-ui/uui-combobox": "1.8.0",
+ "@umbraco-ui/uui-combobox-list": "1.8.0",
+ "@umbraco-ui/uui-css": "1.8.0",
+ "@umbraco-ui/uui-dialog": "1.8.0",
+ "@umbraco-ui/uui-dialog-layout": "1.8.0",
+ "@umbraco-ui/uui-file-dropzone": "1.8.0",
+ "@umbraco-ui/uui-file-preview": "1.8.0",
+ "@umbraco-ui/uui-form": "1.8.0",
+ "@umbraco-ui/uui-form-layout-item": "1.8.1",
+ "@umbraco-ui/uui-form-validation-message": "1.8.1",
+ "@umbraco-ui/uui-icon": "1.8.0",
+ "@umbraco-ui/uui-icon-registry": "1.8.0",
+ "@umbraco-ui/uui-icon-registry-essential": "1.8.0",
+ "@umbraco-ui/uui-input": "1.8.0",
+ "@umbraco-ui/uui-input-file": "1.8.0",
+ "@umbraco-ui/uui-input-lock": "1.8.0",
+ "@umbraco-ui/uui-input-password": "1.8.0",
+ "@umbraco-ui/uui-keyboard-shortcut": "1.8.0",
+ "@umbraco-ui/uui-label": "1.8.0",
+ "@umbraco-ui/uui-loader": "1.8.0",
+ "@umbraco-ui/uui-loader-bar": "1.8.0",
+ "@umbraco-ui/uui-loader-circle": "1.8.0",
+ "@umbraco-ui/uui-menu-item": "1.8.0",
+ "@umbraco-ui/uui-modal": "1.8.0",
+ "@umbraco-ui/uui-pagination": "1.8.0",
+ "@umbraco-ui/uui-popover": "1.8.0",
+ "@umbraco-ui/uui-popover-container": "1.8.0",
+ "@umbraco-ui/uui-progress-bar": "1.8.0",
+ "@umbraco-ui/uui-radio": "1.8.0",
+ "@umbraco-ui/uui-range-slider": "1.8.0",
+ "@umbraco-ui/uui-ref": "1.8.0",
+ "@umbraco-ui/uui-ref-list": "1.8.0",
+ "@umbraco-ui/uui-ref-node": "1.8.0",
+ "@umbraco-ui/uui-ref-node-data-type": "1.8.0",
+ "@umbraco-ui/uui-ref-node-document-type": "1.8.0",
+ "@umbraco-ui/uui-ref-node-form": "1.8.0",
+ "@umbraco-ui/uui-ref-node-member": "1.8.0",
+ "@umbraco-ui/uui-ref-node-package": "1.8.0",
+ "@umbraco-ui/uui-ref-node-user": "1.8.0",
+ "@umbraco-ui/uui-scroll-container": "1.8.0",
+ "@umbraco-ui/uui-select": "1.8.0",
+ "@umbraco-ui/uui-slider": "1.8.0",
+ "@umbraco-ui/uui-symbol-expand": "1.8.0",
+ "@umbraco-ui/uui-symbol-file": "1.8.0",
+ "@umbraco-ui/uui-symbol-file-dropzone": "1.8.0",
+ "@umbraco-ui/uui-symbol-file-thumbnail": "1.8.0",
+ "@umbraco-ui/uui-symbol-folder": "1.8.0",
+ "@umbraco-ui/uui-symbol-lock": "1.8.0",
+ "@umbraco-ui/uui-symbol-more": "1.8.0",
+ "@umbraco-ui/uui-symbol-sort": "1.8.0",
+ "@umbraco-ui/uui-table": "1.8.0",
+ "@umbraco-ui/uui-tabs": "1.8.0",
+ "@umbraco-ui/uui-tag": "1.8.0",
+ "@umbraco-ui/uui-textarea": "1.8.0",
+ "@umbraco-ui/uui-toast-notification": "1.8.0",
+ "@umbraco-ui/uui-toast-notification-container": "1.8.0",
+ "@umbraco-ui/uui-toast-notification-layout": "1.8.0",
+ "@umbraco-ui/uui-toggle": "1.8.0",
+ "@umbraco-ui/uui-visually-hidden": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-action-bar": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.8.0.tgz",
+ "integrity": "sha512-IRs42chstgXFo5b3i0j80Emt+uZSt/WmDDv7gTtB768FL1C+k0BR5sYVleEmUdkfCOv+WIVo1FAqd+9CPFkDDw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-button-group": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-avatar": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.8.0.tgz",
+ "integrity": "sha512-ek6SFYEvEbu1Jf1FVrqBDHuWqCnekkU1hm4XDHEpEyhPE5OOC70SyYLB6brT0kvgBE0QKB2txYu7u8ZbWzy+OQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-avatar-group": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.8.0.tgz",
+ "integrity": "sha512-AS6+GzeoAOS6vuZ6okP30iik8cvYPjBvoWtSYcnV0gScw52FIg9ak+j5L+rQHzE8LCqT8c6RE63HsAsJe7f6oA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-avatar": "1.8.0",
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-badge": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.8.0.tgz",
+ "integrity": "sha512-mKHkkXIwN7oUybeQo5J5TOgqghinJH5gE9lJwOemNCy/oiV/TeYHOr7MqHxIJ+13Nwl9O6JbSRWbPbOD9TSkVw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-base": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.8.0.tgz",
+ "integrity": "sha512-LIPS3sfgOr/cgpDueTqpX+t6Bw0BpNISQSrAeyC+c6X0WiahKLuwob6UXSnefh9j5xIYa5+GY1gEUDgI4wlRhg==",
+ "dev": true,
+ "peer": true,
+ "peerDependencies": {
+ "lit": ">=2.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-boolean-input": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.8.0.tgz",
+ "integrity": "sha512-6GqzuALrzrJIWIAdsYAau9t3sxYL0P+OKSKpcvj+4/DkbhbWjk54CtVFyWBAzYa9LhZHauGl2VYzxSvmGWARSA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-box": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.8.0.tgz",
+ "integrity": "sha512-/j/69od/uWd1Utb2IzU5pq5cvKpsq0cV4F+pS9e6HejzpcVUCz1AtdKNQvgpyOzd/oS9r8Z6pYL/V/gEydyqwg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-css": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-breadcrumbs": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.8.0.tgz",
+ "integrity": "sha512-Hv5NAfRzfaXcDYcuribjpaooZk1LVcHNTaLwoxVAUN64sufYS8kfw0sN8+jsacumUP3rpy0XgR9Ic37JUoIkBw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-button": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.8.0.tgz",
+ "integrity": "sha512-M0pLzpGt2CuzQAHqiHQwVdzFOyb9EznCT7b+YMQOlJCMfeVmN2KBF2xUlfb/3M2LVDukTHyGHzqaWj8Lj6YUbA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-icon-registry-essential": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-button-group": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.8.0.tgz",
+ "integrity": "sha512-5K/cvrOWvRmoXByuI1illF2e9sCzzegmlEpS4XbVk1XW/6quzRJpXSCrY+awj01kFrxB+UC8mB1DIECHKNyeVg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-button-inline-create": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.8.0.tgz",
+ "integrity": "sha512-smSZKMG0cAp+BTZe0wRaYotcQElja8gqznGaIyuGuWvvpvWEiuWMC9xjMytFNvaawCN1+uLc5fdcCArPmFjH+w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-card": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.8.0.tgz",
+ "integrity": "sha512-wwHaDbwDmragvIhhAtv/D2Ys47kXFPBKvE+/ahofXUygjTGbmjbKJ57Qfo6x8sD1BM3bSTDU6gUWaf4s0/D3WQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-card-block-type": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-block-type/-/uui-card-block-type-1.8.0.tgz",
+ "integrity": "sha512-8Ydat2K4LipsQaCEhDTN4DeVHiqOCdEOY4Z43XCf6bTU91lNPGdagtC0ZE9b4M28E03ou4E19Ms7o2m59g0OWw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-card": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-card-content-node": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.8.0.tgz",
+ "integrity": "sha512-R0SYtKk5Z+on0xQ0cD1z2z43mSTgYi7sKtQDrhwoP/sWbp9xIS2wPOO+PoMiUonwXPo4JuSZ9ghgT4HzsQce1A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-card": "1.8.0",
+ "@umbraco-ui/uui-icon": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-card-media": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.8.0.tgz",
+ "integrity": "sha512-C1xsdO9mWJ/gzE8nLfF2k5NfpFzJ2yMQYzJVtov3s9C33iy6NVq7OM67o+QugCqDuwwYSkonjgNJLHTav78KVg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-card": "1.8.0",
+ "@umbraco-ui/uui-symbol-file": "1.8.0",
+ "@umbraco-ui/uui-symbol-folder": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-card-user": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.8.0.tgz",
+ "integrity": "sha512-b6LiMCl/oFaW6MnPXBMCPqlVDHF/TT3LByQOTJ8rE+WHzY/zE9toVLy/LccxB62Ur/Hz7XakhU8xHaugH+zs3w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-avatar": "1.8.0",
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-card": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-caret": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.8.0.tgz",
+ "integrity": "sha512-LxS0vLKZYNKsef/FgNXFh/CBauf+6Dgac+n5VyCu6FElh8UTP+NOeAA/4KEVSJh8gThJ0Fmb8qoMSFop+41wLg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-checkbox": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.8.0.tgz",
+ "integrity": "sha512-Gf/kZ4q5SuLNEEfcL1/YRzcOI5CZTsMyo2+9LuksCZqRzWtxoo1meB42GZRjE4GTCFZfQOr4Ayz7ZNRaizuM+Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-boolean-input": "1.8.0",
+ "@umbraco-ui/uui-icon-registry-essential": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-color-area": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.8.0.tgz",
+ "integrity": "sha512-V3+iph2Vq58T9f4FoJvxsjq0LpH5VJhC2P2VkAWvMO1m528QOULDP+b5csYWH1pF78RxSZ5Lm042Dnw9XOqN2w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "colord": "^2.9.3"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-color-picker": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.8.0.tgz",
+ "integrity": "sha512-DQtKN4ivIRx54SYUhxdlbFf5ibmnp5/mscOiC98HObYVTeM9ZJUrKfFGTU9Qfekz3q+rPzzv7eec8E0Zb6qfwg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-popover-container": "1.8.0",
+ "colord": "^2.9.3"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-color-slider": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.8.0.tgz",
+ "integrity": "sha512-DHCFX0JZXqI6wp2fRe+lOd9TAJVzTC9ghDNP+qMGattsxRnTf/pxoYucW7F5ee/ggiBIsS8i47kFa2wDmausiA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-color-swatch": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.8.0.tgz",
+ "integrity": "sha512-z9RQ0R5E9SErqiY1/kU6Rnp+LQBM119OKqAexHo32cM/9iyzLIEUY4CwzCYE9/ogeXDgljXLTGX21jddCNCv9A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-icon-registry-essential": "1.8.0",
+ "colord": "^2.9.3"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-color-swatches": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.8.0.tgz",
+ "integrity": "sha512-qCHYtHPhPsubrVn/cydmigbAde0fc+kJC7ZBxCcuJjyP+wiUhq2/d6dSfYumCcVw1N3Hyj7BRJ/8ZedUIZQ5/w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-color-swatch": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-combobox": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.8.0.tgz",
+ "integrity": "sha512-FVc3PlBYU8S48Zr75pig+5YXh05R3wRKdLl41l7vFBDGGWsgjIsM+vJ6LaM+VoshnTzUTOVvKLE/N0FNTVUvrg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-button": "1.8.0",
+ "@umbraco-ui/uui-combobox-list": "1.8.0",
+ "@umbraco-ui/uui-icon": "1.8.0",
+ "@umbraco-ui/uui-popover-container": "1.8.0",
+ "@umbraco-ui/uui-scroll-container": "1.8.0",
+ "@umbraco-ui/uui-symbol-expand": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-combobox-list": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.8.0.tgz",
+ "integrity": "sha512-3w353u7FdYNLCz6YV+Pk+lxlTeHd2H6rmxzwb+0BHCjbwaw9MLojbhE4JGTCpf/qtk54Xc8Dzg++aznKAYpbVw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
},
"node_modules/@umbraco-ui/uui-css": {
- "version": "1.8.0-rc.0",
- "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.8.0-rc.0.tgz",
- "integrity": "sha512-trwLCgJtT91iP2b20QlHWjuj44AF4lWCg4CqBZoT2Z8a5IedqflnQstXCZRYm/F5Re32YGTwlR9lF1rAXqq4gg==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.8.0.tgz",
+ "integrity": "sha512-9o9OGUXQK8D9i/VSmH3gUTvH7se+4Ey22dSfbn4Jzcbe6AyGmxKocr/8eZXdkIYwNvK2aUIz/b7GIEbQc4utbA==",
"dev": true,
"peerDependencies": {
"lit": ">=2.8.0"
}
},
+ "node_modules/@umbraco-ui/uui-dialog": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.8.0.tgz",
+ "integrity": "sha512-QI/Oa7BJ7eEdHcy7hSuFhMPbbPitxnIb2BHVmQzy+YpBShrR3C1GW0FGcYFgJlI/S+jodf3A59VDnVL69gyliQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-css": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-dialog-layout": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.8.0.tgz",
+ "integrity": "sha512-iv4wEfb6QhCOm8lxg/zH7yrJuVSEEBGgAN67qdvZ9Tu2SFzUCGTzrUcBXlL+U10cbIlq7j6KKvSQvE/IHX40Tg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-file-dropzone": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.8.0.tgz",
+ "integrity": "sha512-Fpl/aGprUbcdPngB6xpR8/i7o8HKAWNCUze+N1pXiIVBRXmthEWO6fSm4+LkkkRoZwvYqQSaeu6Mw+Sj+MzHGA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-symbol-file-dropzone": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-file-preview": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.8.0.tgz",
+ "integrity": "sha512-WhE/9klwIUjch6PxF+DuFlu+ql0h9YbefMxj/xU4rGUTE/dK4CgA7eVQ/YfAp+WrdtwUFHyp3fThyJvfrodSgA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-symbol-file": "1.8.0",
+ "@umbraco-ui/uui-symbol-file-thumbnail": "1.8.0",
+ "@umbraco-ui/uui-symbol-folder": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-form": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.8.0.tgz",
+ "integrity": "sha512-9NtavsRoh9X39ezzLtwwbK77mUecavcjxP58Jdba/2/6wXRx+vx7qsWV5Rn3OC9XG4tZi6VLFFKahbV8N/jgjw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-form-layout-item": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.8.1.tgz",
+ "integrity": "sha512-QHBZayR4T49MAyS9N2jy1rgQ5Yk1JpwoWvWBpbI/WDE718zTjwUJxbLfukq+NnJx7Q1DplZ+IHTnHZkInMC2GQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-form-validation-message": "1.8.1"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-form-validation-message": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.8.1.tgz",
+ "integrity": "sha512-o4WfGHRtV+DrN064DtzyljRkUGYMYEkLHxxbawLowpdmdwyvLByaGOkxfuEJvHgPnncR02//gM04EjulEbGitw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-icon": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.8.0.tgz",
+ "integrity": "sha512-hub+KNcwiy+SKxEpI/ei3w1Ficr1SWxcLfwL67MOKS5YyB6RDwSl2FOXx+MkttTAO7PvGBbAgkiiXEkI/rxivg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-icon-registry": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.8.0.tgz",
+ "integrity": "sha512-+55qGgxOBlHmQerxIhKkKJYJgPwnXwsLOBVwF8oYIM1sV58bu7BrGQRUw/K0ytFavrFOb+Easkn62wqzisXsRQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-icon": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-icon-registry-essential": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.8.0.tgz",
+ "integrity": "sha512-6+bM30t3+YpknxIjcCHi07eS+MXMkDRP+GBfrUgULqH/EqnJN/OuwMzSdbwFuwzqxmC7thx74Zfl6+JBuIs9lw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-icon-registry": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-input": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.8.0.tgz",
+ "integrity": "sha512-abtQbWWDT+3uo4KVaU+ZbDVKSNtB8r0C/3L7Ql/7xJ2BNI2oSUSAcWoSV6V8Vx0DYh1XWlEQpfSAbk5Fdr7u4w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-input-file": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.8.0.tgz",
+ "integrity": "sha512-20fXbIwjyLZWIVsqFt06ldQqA8sHEPm8Y0hmPwbb0nagYfjmIblIE1thT76JA95do7qcU50xGBN9mHt8KvPpQA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-action-bar": "1.8.0",
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-button": "1.8.0",
+ "@umbraco-ui/uui-file-dropzone": "1.8.0",
+ "@umbraco-ui/uui-icon": "1.8.0",
+ "@umbraco-ui/uui-icon-registry-essential": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-input-lock": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.8.0.tgz",
+ "integrity": "sha512-ZFBssrhCPrCiSfoS6Y9yA9u2dktzNDCRFQ95Z9nQEthhVm2okyqMS3daGz57Vdm4+LVB0HrqIjpEHC6dOqNTBg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-button": "1.8.0",
+ "@umbraco-ui/uui-icon": "1.8.0",
+ "@umbraco-ui/uui-input": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-input-password": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.8.0.tgz",
+ "integrity": "sha512-Ra7bR40GzjX11qobHsog2FPGd3FsPzgxPpGLFyMTHzDg2gchYU+KQKkmt6CTzGPgSFuN7DsEW0BMnFnWJ+2moQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-icon-registry-essential": "1.8.0",
+ "@umbraco-ui/uui-input": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-keyboard-shortcut": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.8.0.tgz",
+ "integrity": "sha512-XBO06bZbo7H39k33pm8EoWxm9MP/NXh7W430dLqB5E3q1EOO24PQw2voLsOyegVM3IqgKyMBTO7xHR8NmeZkyg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-label": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.8.0.tgz",
+ "integrity": "sha512-Qj3CtfVIv3rVIanTbMvg6UAB2faWGu2mMtvVfmr9kkEP9MGfmA/xgQN94lKlDI7ic54FVkCV4N+1kA5yNkeDSQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-loader": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.8.0.tgz",
+ "integrity": "sha512-CL+n3Icp4ugfn7SBbhbYC4WTBQ+kT27WwJIesOcjw2lmt2l20RQUyBBbZAABx2ayyDuvIzEWnFEzWW8VyVworw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-loader-bar": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.8.0.tgz",
+ "integrity": "sha512-KuUtQ4r/wkbVl4IJVgUb9DCXvV1yvupDw6AAnWuOu7zexuzPfrl32cKBLlnNmhGqnEGcQonX6jf24Lf8T7W6Nw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-loader-circle": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.8.0.tgz",
+ "integrity": "sha512-L5RyH10Es/stG7CzNzS0bKOzCY+zLSwmqyh0dc8HwzZCvc6XtFHV0KgcxMjmtWWulLsQPgzIOIigf3wefr2VNQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-menu-item": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.8.0.tgz",
+ "integrity": "sha512-0zEMhcw35Evw7cEq1W0GYNVCzIorTVMzFquU7Sg2QiZmk3eiF6HvkF/gHr4d0WR7HvztM1k/eVm+RTs6zp+96g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-loader-bar": "1.8.0",
+ "@umbraco-ui/uui-symbol-expand": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-modal": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.8.0.tgz",
+ "integrity": "sha512-Cqd4pabMLnpnMEa35MKOwXCKQ+5okHYWdvdFRA8x1HqI3AEcz4FNx48nXVH94vhbELv8+fWFAPfrr1v0rvjK6w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-pagination": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.8.0.tgz",
+ "integrity": "sha512-SvnWMzbQcTDEN+XQJ0/lVCJ1wL+2L7LA9pfSxJgXIj/pB55Pf3Tt3zMnW8B7RT7i/74atMufaqSSKElZrcPfHQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-button": "1.8.0",
+ "@umbraco-ui/uui-button-group": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-popover": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.8.0.tgz",
+ "integrity": "sha512-bHERyYItLAvtWbpOdPgmuPFgYs2TuKImm3h04DtQRatYP4dq8wg0tftVyZK3k9TVfLMvStOy2EyzybTD+1ZmBg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-popover-container": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover-container/-/uui-popover-container-1.8.0.tgz",
+ "integrity": "sha512-FHaX4sIa7q4HTVzMr9w3Z6zuunPuDROnHjVS6QkovqHLEgQjeTQB8hGAxN6cd3QsFbgbtC9fzBo8zTn9yxJLmA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-progress-bar": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.8.0.tgz",
+ "integrity": "sha512-WX+YjiH0HCljtzTImR6Q8bf06wm+jcCgEOE10pMRri0r4nyBCAN7Zms23sHj6rR+S/oxoYcuREqdWXWP4eRfFA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-radio": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.8.0.tgz",
+ "integrity": "sha512-3kPWyc0ZbtAIeOHxAKudSslomg1zKy4RMgrfDeNumQhuCei0VWhVn76Xyfu/Gl2n4XnLIzZY3zv4XCaxwWvJZw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-range-slider": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.8.0.tgz",
+ "integrity": "sha512-ThDfLvxRMfP93HQobgLaglR860vQiwCM63PXp2igXWZl69ikDDa7HuraupEpmdL13VLKAv5L1BMue1ItC1x2MA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-ref": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.8.0.tgz",
+ "integrity": "sha512-mcw7faAXeG/2QfLeuYsB950seU0FQH5Pd+aSfi6zwgWkCasxKWLrlslVTP1U5zD5WFkNt4ls6RnMGZhN6bq7mQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-ref-list": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.8.0.tgz",
+ "integrity": "sha512-9iiTYVyw+dpO1gEB2oMJSe2DOVvA3a2uY5FLwkRgpAjvzbhD9hhyGLcVgtvM1rxUYc9SvJbGJXk2tPY4Nit3pA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-ref-node": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.8.0.tgz",
+ "integrity": "sha512-KOGy10QhPUQFNFNPkmqro1YqFg5Y5b2N/DwkcYP/xyu4Kc1f5FuE+Uo5L41i2KdbDP6O+Tz5gsU6HpPvpEAc7Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-icon": "1.8.0",
+ "@umbraco-ui/uui-ref": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-ref-node-data-type": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.8.0.tgz",
+ "integrity": "sha512-x7PicpHE7PPZrVDojKO5ornG7HZoRB9/pjCZWV+8wxPznyGmFvcJpbRQLdIVvvXVkL1a0c4uLY2CsUO+K52Rbg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-ref-node": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-ref-node-document-type": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.8.0.tgz",
+ "integrity": "sha512-QjeC8DvgA/WFb3wOUXMOALK5SoKeDAvYqNp1wNvU5AMxJY+5CTfi6JNWKZsI4K+Mh3lfzPP+HaWx5MTwt5epNQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-ref-node": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-ref-node-form": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.8.0.tgz",
+ "integrity": "sha512-sm0xSru6pv8yK9qepzF5Wzzd1jarMBZFtzgqw5H65pGTP6pNhNG4GIkeXLfd2TH9g3e6biJNKAOFJ5w8Tz4O9A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-ref-node": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-ref-node-member": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.8.0.tgz",
+ "integrity": "sha512-z9l44zCER4KmNMSnCy6BFxXZ6awr/L405pJJJzqb3GAXsBip47pCzhYgxCbekB+xSY+E0hS1EuG1JJ5wn05yiQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-ref-node": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-ref-node-package": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.8.0.tgz",
+ "integrity": "sha512-bpWVBOm39tl5jY3Y+qn5dnikmnaAOrHEg2SBf/11d7aHOauEgDiJZQmM9BzjAeionaZrj4beYJw5szazaVkpDQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-ref-node": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-ref-node-user": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.8.0.tgz",
+ "integrity": "sha512-Z91Me56phGFyt/hJaRDnXrorlYVjrL6WaUWRDZAi+mqqThFriG1DVeaFEewZ1yeD3Hy6haHanDa7dtwm2FLsBQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-ref-node": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-scroll-container": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.8.0.tgz",
+ "integrity": "sha512-PHxOZhsM53J3SQaXhH0euUwshr6Ka06iFEmtNKaqVe+nPwTjYHWHDuulvp7/qm/btjzSIrJqKgs02ft8wGqXwA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-select": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.8.0.tgz",
+ "integrity": "sha512-xFXo7IlAtofZCWIqnhyThIjP8ORRwo6786fv5yarayhqlKeAwJRD5t6QtX4z5z/1b/zW11oF2GkJzrzp4KN4vw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-slider": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.8.0.tgz",
+ "integrity": "sha512-qKgWyVzMKF8RVwwgpdMvKfCS3TEyMbZj/ZKClgTJJfs+3r8Q002F7irx7Lgh+mDww+jLsuMtG/cu0xSXU4HC4w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-symbol-expand": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.8.0.tgz",
+ "integrity": "sha512-AfpoR4dTOL4gEfP9lnEVymU3mlNfjFSuk8TGbqy0jVMTMbYeol5Bcl6jJFqqPd1npfgT7FPZH9zrMkcFogfSSw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-symbol-file": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.8.0.tgz",
+ "integrity": "sha512-/2O0TNl+Sx/cCy2kQlSCOujvRwz+Rxg9JxyMX5Vc14ZqrVJ4FsD2S/jJWLtE2YJ+EtLoc15Zzw2GogZO7aBcLQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-symbol-file-dropzone": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.8.0.tgz",
+ "integrity": "sha512-n2QRKTEnvQQgiyTQ7uVbz7XsGL0HRwaEtLqEMbaON6oYCsGWFFsbp8QqyHdB8iBQSrlV9I1J4sS0e5Ry+W25YQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-symbol-file-thumbnail": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.8.0.tgz",
+ "integrity": "sha512-KdFOrfVIwtjavoa+S5ro1gi2Er8IPqXnY6gpTRpAgfO/f+/ZRg6AwPKn4SCc7QqJ8ThHpsg8wki8WGiK04rfbA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-symbol-folder": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.8.0.tgz",
+ "integrity": "sha512-g7FIonq/5wHH2+e/+DhB+t3E4wu7dM4MrKxLsP6b8JmYz7Y0t9OlTBT5J+i3P8YnJKYY6i5V5Eip4QNWJqC+sQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-symbol-lock": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.8.0.tgz",
+ "integrity": "sha512-+/K59hTkBJr6bYOrTgPtvZEVsr59MPNwvIHhGm685WZPZrNA9dGPZrO9vnw1eyNq70XYuHkiNkmKUmna9mQmIA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-symbol-more": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.8.0.tgz",
+ "integrity": "sha512-BSWQ05XYJSS6WKpA6//QnSnMehV5py5j8bxl7bZzmrthr2SwyejwS+pGYq7rTqWw7BBk1mA8I7Zkl+kVph/7+g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-symbol-sort": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.8.0.tgz",
+ "integrity": "sha512-+IFJYlPsUvJYNDc8sWB4zan/dTCCj4vkqwXALW3xLSxpsKSvtSvXPzXK/i4YwaT4Azx4hfrWIW2cz6/h5JDonA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-table": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.8.0.tgz",
+ "integrity": "sha512-nbRoValRn17SadfpGKKT1RfyoRlCLhvij2BRMw1KyldztWlWGozPQSDjqhcEPSzJZCrNV76nIMbg5FLfsTl4iA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-tabs": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.8.0.tgz",
+ "integrity": "sha512-xnZvjjmRHJbyC9bd6LMYfHA8Jjb51GTJuFAd4j4S9NVZYomQDBFl7IKVWtUFzQvVzk93zJHVSWO8vmtNLQZreg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-button": "1.8.0",
+ "@umbraco-ui/uui-popover-container": "1.8.0",
+ "@umbraco-ui/uui-symbol-more": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-tag": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.8.0.tgz",
+ "integrity": "sha512-5Dt7EsvACfs75bsncIDvqitXYub2Rfntbrc3gzXLHjqOQy2YBL5s/HNGz3xsf5msKuDAR0dmTyxhItaDAi7EkQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-textarea": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.8.0.tgz",
+ "integrity": "sha512-WYWiD3x1DXbsAALmTT2txoeeqiZ9J/FlkTGL1Wasu89jfm8bAgxUG5wuoa8SL4r79rAF+RUDrJPygeUqDm0N8A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-toast-notification": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.8.0.tgz",
+ "integrity": "sha512-62q36/jggXp+GdRSzseQ7d63hUIXtHIXe/5bnSSHXcxxIcnbf9Sy3pkBkOYM7CXgBUUwt9T9IHLZ6eGw/6K9Xw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-button": "1.8.0",
+ "@umbraco-ui/uui-css": "1.8.0",
+ "@umbraco-ui/uui-icon": "1.8.0",
+ "@umbraco-ui/uui-icon-registry-essential": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-toast-notification-container": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.8.0.tgz",
+ "integrity": "sha512-NdILHgGvKFF+JZGejTJnXt1LdJIl/MxmPUj6+rvEGCO2SDhZmIOHjnIohT8HFytxmJqyWJpryPQjo6KJezRVbQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-toast-notification": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-toast-notification-layout": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.8.0.tgz",
+ "integrity": "sha512-NyGFv3kAcU8XMxLAyDhy3dt1oIHOwbAYO5+Utm4CFAAvcJzVTNn948Sp0dTdcfSjXjZG+3Ufv/Qb/OpcrybJ/w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-css": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-toggle": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.8.0.tgz",
+ "integrity": "sha512-PNk2qeaL7bJXnSkG0T1J5pheNy7yTeaVbdyXuL/9fkoIdb9IkD/h6XLE9niiyWYF1xrdjpgAKZ32u0Oc4qXVyA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0",
+ "@umbraco-ui/uui-boolean-input": "1.8.0"
+ }
+ },
+ "node_modules/@umbraco-ui/uui-visually-hidden": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-visually-hidden/-/uui-visually-hidden-1.8.0.tgz",
+ "integrity": "sha512-3a4/B2uM3YfXjI9dyfSL2Z47ziwW7HuYoozNderKO/I7l0CgxgoHIOwF1sRb3QgOlsFhhfeKdndvU7SbD6tazQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@umbraco-ui/uui-base": "1.8.0"
+ }
+ },
"node_modules/ansi-escapes": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -900,6 +1860,27 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "peer": true
+ },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -951,6 +1932,23 @@
"node": ">=12"
}
},
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -969,6 +1967,13 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/cookie": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
@@ -979,9 +1984,9 @@
}
},
"node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
@@ -995,6 +2000,30 @@
}
}
},
+ "node_modules/diff": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/dompurify": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.5.tgz",
+ "integrity": "sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/element-internals-polyfill": {
+ "version": "1.3.11",
+ "resolved": "https://registry.npmjs.org/element-internals-polyfill/-/element-internals-polyfill-1.3.11.tgz",
+ "integrity": "sha512-SQLQNVY4wMdpnP/F/HtalJbpEenQd46Avtjm5hvUdeTs3QU0zHFNX5/AmtQIPPcfzePb0ipCkQGY4GwYJIhLJA==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -1002,9 +2031,9 @@
"dev": true
},
"node_modules/esbuild": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
- "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
"dev": true,
"hasInstallScript": true,
"bin": {
@@ -1014,64 +2043,40 @@
"node": ">=12"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.20.2",
- "@esbuild/android-arm": "0.20.2",
- "@esbuild/android-arm64": "0.20.2",
- "@esbuild/android-x64": "0.20.2",
- "@esbuild/darwin-arm64": "0.20.2",
- "@esbuild/darwin-x64": "0.20.2",
- "@esbuild/freebsd-arm64": "0.20.2",
- "@esbuild/freebsd-x64": "0.20.2",
- "@esbuild/linux-arm": "0.20.2",
- "@esbuild/linux-arm64": "0.20.2",
- "@esbuild/linux-ia32": "0.20.2",
- "@esbuild/linux-loong64": "0.20.2",
- "@esbuild/linux-mips64el": "0.20.2",
- "@esbuild/linux-ppc64": "0.20.2",
- "@esbuild/linux-riscv64": "0.20.2",
- "@esbuild/linux-s390x": "0.20.2",
- "@esbuild/linux-x64": "0.20.2",
- "@esbuild/netbsd-x64": "0.20.2",
- "@esbuild/openbsd-x64": "0.20.2",
- "@esbuild/sunos-x64": "0.20.2",
- "@esbuild/win32-arm64": "0.20.2",
- "@esbuild/win32-ia32": "0.20.2",
- "@esbuild/win32-x64": "0.20.2"
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
}
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"dev": true,
"engines": {
"node": ">=6"
}
},
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
- "dev": true,
- "dependencies": {
- "escape-string-regexp": "^1.0.5"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -1102,9 +2107,9 @@
"dev": true
},
"node_modules/graphql": {
- "version": "16.8.1",
- "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz",
- "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==",
+ "version": "16.9.0",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz",
+ "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
@@ -1120,9 +2125,9 @@
}
},
"node_modules/headers-polyfill": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.2.tgz",
- "integrity": "sha512-EWGTfnTqAO2L/j5HZgoM/3z82L7necsJ0pO9Tp0X1wil3PDLrkypTBRgVO2ExehEEvUycejZD3FuRaXpZZc3kw==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz",
+ "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==",
"dev": true
},
"node_modules/is-fullwidth-code-point": {
@@ -1141,9 +2146,9 @@
"dev": true
},
"node_modules/lit": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.3.tgz",
- "integrity": "sha512-l4slfspEsnCcHVRTvaP7YnkTZEZggNFywLEIhQaGhYDczG+tu/vlgm/KaWIEjIp+ZyV20r2JnZctMb8LeLCG7Q==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.4.tgz",
+ "integrity": "sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==",
"dev": true,
"peer": true,
"dependencies": {
@@ -1153,9 +2158,9 @@
}
},
"node_modules/lit-element": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.5.tgz",
- "integrity": "sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q==",
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.6.tgz",
+ "integrity": "sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==",
"dev": true,
"peer": true,
"dependencies": {
@@ -1165,15 +2170,35 @@
}
},
"node_modules/lit-html": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.3.tgz",
- "integrity": "sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.4.tgz",
+ "integrity": "sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==",
"dev": true,
"peer": true,
"dependencies": {
"@types/trusted-types": "^2.0.2"
}
},
+ "node_modules/marked": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
+ "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/monaco-editor": {
+ "version": "0.48.0",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.48.0.tgz",
+ "integrity": "sha512-goSDElNqFfw7iDHMg8WDATkfcyeLTNpBHQpO8incK6p5qZt5G/1j41X0xdGzpIkGojGXM+QiRQyLjnfDVvrpwA==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -1181,9 +2206,9 @@
"dev": true
},
"node_modules/msw": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/msw/-/msw-2.3.0.tgz",
- "integrity": "sha512-cDr1q/QTMzaWhY8n9lpGhceY209k29UZtdTgJ3P8Bzne3TSMchX2EM/ldvn4ATLOktpCefCU2gcEgzHc31GTPw==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/msw/-/msw-2.3.1.tgz",
+ "integrity": "sha512-ocgvBCLn/5l3jpl1lssIb3cniuACJLoOfZu01e3n5dbJrpA5PeeWn28jCLgQDNt6d7QT8tF2fYRzm9JoEHtiig==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@@ -1257,9 +2282,9 @@
"dev": true
},
"node_modules/path-to-regexp": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
- "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz",
+ "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==",
"dev": true
},
"node_modules/picocolors": {
@@ -1306,9 +2331,9 @@
}
},
"node_modules/rollup": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz",
- "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==",
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz",
+ "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==",
"dev": true,
"dependencies": {
"@types/estree": "1.0.5"
@@ -1321,29 +2346,33 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.13.0",
- "@rollup/rollup-android-arm64": "4.13.0",
- "@rollup/rollup-darwin-arm64": "4.13.0",
- "@rollup/rollup-darwin-x64": "4.13.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.13.0",
- "@rollup/rollup-linux-arm64-gnu": "4.13.0",
- "@rollup/rollup-linux-arm64-musl": "4.13.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.13.0",
- "@rollup/rollup-linux-x64-gnu": "4.13.0",
- "@rollup/rollup-linux-x64-musl": "4.13.0",
- "@rollup/rollup-win32-arm64-msvc": "4.13.0",
- "@rollup/rollup-win32-ia32-msvc": "4.13.0",
- "@rollup/rollup-win32-x64-msvc": "4.13.0",
+ "@rollup/rollup-android-arm-eabi": "4.18.0",
+ "@rollup/rollup-android-arm64": "4.18.0",
+ "@rollup/rollup-darwin-arm64": "4.18.0",
+ "@rollup/rollup-darwin-x64": "4.18.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.18.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.18.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.18.0",
+ "@rollup/rollup-linux-arm64-musl": "4.18.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.18.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.18.0",
+ "@rollup/rollup-linux-x64-gnu": "4.18.0",
+ "@rollup/rollup-linux-x64-musl": "4.18.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.18.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.18.0",
+ "@rollup/rollup-win32-x64-msvc": "4.18.0",
"fsevents": "~2.3.2"
}
},
- "node_modules/run-async": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz",
- "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==",
+ "node_modules/rxjs": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"dev": true,
- "engines": {
- "node": ">=0.12.0"
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.1.0"
}
},
"node_modules/signal-exit": {
@@ -1420,10 +2449,24 @@
"node": ">=8"
}
},
+ "node_modules/tinymce": {
+ "version": "6.8.4",
+ "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.8.4.tgz",
+ "integrity": "sha512-okoJyxuPv1gzASxQDNgQbnUXOdAIyoOSXcXcZZu7tiW0PSKEdf3SdASxPBupRj+64/E3elHwVRnzSdo82Emqbg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/tinymce-i18n": {
+ "version": "24.6.24",
+ "resolved": "https://registry.npmjs.org/tinymce-i18n/-/tinymce-i18n-24.6.24.tgz",
+ "integrity": "sha512-FToQhgKzZLqEg+twKVjUcS8gPJbZprOtiyGhGHhxGZMeqJITgbD0imc2QV7cZ82cZbHTBOkK2aOvgmbhk5uaTw==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/tsconfck": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.0.3.tgz",
- "integrity": "sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.0.tgz",
+ "integrity": "sha512-CMjc5zMnyAjcS9sPLytrbFmj89st2g+JYtY/c02ug4Q+CZaAtCgbyviI0n1YvjZE/pzoc6FbNsINS13DOL1B9w==",
"dev": true,
"bin": {
"tsconfck": "bin/tsconfck.js"
@@ -1440,10 +2483,17 @@
}
}
},
+ "node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/type-fest": {
- "version": "4.10.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.2.tgz",
- "integrity": "sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==",
+ "version": "4.20.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.20.1.tgz",
+ "integrity": "sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==",
"dev": true,
"engines": {
"node": ">=16"
@@ -1453,9 +2503,9 @@
}
},
"node_modules/typescript": {
- "version": "5.4.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
- "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz",
+ "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -1471,13 +2521,27 @@
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true
},
+ "node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "peer": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/vite": {
- "version": "5.2.11",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz",
- "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz",
+ "integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==",
"dev": true,
"dependencies": {
- "esbuild": "^0.20.1",
+ "esbuild": "^0.21.3",
"postcss": "^8.4.38",
"rollup": "^4.13.0"
},
@@ -1546,9 +2610,9 @@
}
},
"node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.0.0",
@@ -1556,10 +2620,7 @@
"strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "node": ">=8"
}
},
"node_modules/y18n": {
diff --git a/src/Umbraco.Web.UI.Login/package.json b/src/Umbraco.Web.UI.Login/package.json
index 05aaf0a018..7b0e3455c4 100644
--- a/src/Umbraco.Web.UI.Login/package.json
+++ b/src/Umbraco.Web.UI.Login/package.json
@@ -15,8 +15,8 @@
"dependencies": {
},
"devDependencies": {
- "@umbraco-cms/backoffice": "file:../Umbraco.Web.UI.Client",
- "@umbraco-ui/uui-css": "^1.8.0-rc.0",
+ "@umbraco-cms/backoffice": "^14.0.0",
+ "@umbraco-ui/uui-css": "^1.8.0",
"msw": "^2.3.0",
"typescript": "^5.4.5",
"vite": "^5.2.11",
diff --git a/src/Umbraco.Web.UI.Login/public/mockServiceWorker.js b/src/Umbraco.Web.UI.Login/public/mockServiceWorker.js
index bdfdb11d38..24fe3a25f0 100644
--- a/src/Umbraco.Web.UI.Login/public/mockServiceWorker.js
+++ b/src/Umbraco.Web.UI.Login/public/mockServiceWorker.js
@@ -8,7 +8,7 @@
* - Please do NOT serve this file on production.
*/
-const PACKAGE_VERSION = '2.3.0'
+const PACKAGE_VERSION = '2.3.1'
const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423'
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
const activeClientIds = new Set()
diff --git a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json
index 7916e3cb54..f3fa4a9e36 100644
--- a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json
+++ b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json
@@ -7,8 +7,8 @@
"name": "acceptancetest",
"hasInstallScript": true,
"dependencies": {
- "@umbraco/json-models-builders": "^2.0.7",
- "@umbraco/playwright-testhelpers": "^2.0.0-beta.63",
+ "@umbraco/json-models-builders": "^2.0.9",
+ "@umbraco/playwright-testhelpers": "^2.0.0-beta.65",
"camelize": "^1.0.0",
"dotenv": "^16.3.1",
"faker": "^4.1.0",
@@ -132,25 +132,19 @@
}
},
"node_modules/@umbraco/json-models-builders": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/@umbraco/json-models-builders/-/json-models-builders-2.0.7.tgz",
- "integrity": "sha512-roR5A+jzIFN9z1BhogMGOEzSzoR8jOrIYIAevT7EnyS3H3OM0m0uREgvjYCQo0+QMfVws4zq4Ydjx2TIfGYvlQ==",
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/@umbraco/json-models-builders/-/json-models-builders-2.0.9.tgz",
+ "integrity": "sha512-p6LjcE38WsFCvLtRRRVOCuMvris3OXeoueFu0FZBOHk2r7PXiqYCBUls/KbKxqpixzVDAb48RBd1hV7sKPcm5A==",
"dependencies": {
- "camelize": "^1.0.1",
- "faker": "^6.6.6"
+ "camelize": "^1.0.1"
}
},
- "node_modules/@umbraco/json-models-builders/node_modules/faker": {
- "version": "6.6.6",
- "resolved": "https://registry.npmjs.org/faker/-/faker-6.6.6.tgz",
- "integrity": "sha512-9tCqYEDHI5RYFQigXFwF1hnCwcWCOJl/hmll0lr5D2Ljjb0o4wphb69wikeJDz5qCEzXCoPvG6ss5SDP6IfOdg=="
- },
"node_modules/@umbraco/playwright-testhelpers": {
- "version": "2.0.0-beta.63",
- "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.63.tgz",
- "integrity": "sha512-fLXUcWNJupfGKkD6zOGg6WcU5cmqQ6gQkyIyG+UsKSrkgCxK23+N5LrOz2OVp2NZ8GQ8kB5pJ4izvCp+yMMOnA==",
+ "version": "2.0.0-beta.65",
+ "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.65.tgz",
+ "integrity": "sha512-plSD/4hhVaMl2TItAaBOUQyuy0Qo5rW3EGIF0TvL3a01s6hNoW1DrOCZhWsOOsMTkgf+oScLEsVIBMk0uDLQrg==",
"dependencies": {
- "@umbraco/json-models-builders": "2.0.7",
+ "@umbraco/json-models-builders": "2.0.9",
"camelize": "^1.0.0",
"faker": "^4.1.0",
"form-data": "^4.0.0",
diff --git a/tests/Umbraco.Tests.AcceptanceTest/package.json b/tests/Umbraco.Tests.AcceptanceTest/package.json
index 8126ebf602..f0f2a60b94 100644
--- a/tests/Umbraco.Tests.AcceptanceTest/package.json
+++ b/tests/Umbraco.Tests.AcceptanceTest/package.json
@@ -21,8 +21,8 @@
"wait-on": "^7.2.0"
},
"dependencies": {
- "@umbraco/json-models-builders": "^2.0.7",
- "@umbraco/playwright-testhelpers": "^2.0.0-beta.63",
+ "@umbraco/json-models-builders": "^2.0.9",
+ "@umbraco/playwright-testhelpers": "^2.0.0-beta.65",
"camelize": "^1.0.0",
"dotenv": "^16.3.1",
"faker": "^4.1.0",
diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithCheckboxList.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithCheckboxList.spec.ts
new file mode 100644
index 0000000000..71706203ea
--- /dev/null
+++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithCheckboxList.spec.ts
@@ -0,0 +1,85 @@
+import { ConstantHelper, test, AliasHelper } from '@umbraco/playwright-testhelpers';
+import {expect} from "@playwright/test";
+
+const contentName = 'TestContent';
+const documentTypeName = 'TestDocumentTypeForContent';
+const dataTypeName = 'Checkbox list';
+
+test.beforeEach(async ({umbracoApi, umbracoUi}) => {
+ await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
+ await umbracoApi.document.ensureNameNotExists(contentName);
+ await umbracoUi.goToBackOffice();
+});
+
+test.afterEach(async ({umbracoApi}) => {
+ await umbracoApi.document.ensureNameNotExists(contentName);
+ await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
+});
+
+test('can create content with the checkbox list data type', async ({umbracoApi, umbracoUi}) => {
+ // Arrange
+ const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
+ await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
+ await umbracoUi.content.goToSection(ConstantHelper.sections.content);
+
+ // Act
+ await umbracoUi.content.clickActionsMenuAtRoot();
+ await umbracoUi.content.clickCreateButton();
+ await umbracoUi.content.chooseDocumentType(documentTypeName);
+ await umbracoUi.content.enterContentName(contentName);
+ await umbracoUi.content.clickSaveButton();
+
+ // Assert
+ await umbracoUi.content.isSuccessNotificationVisible();
+ expect(await umbracoApi.document.doesNameExist(contentName)).toBeTruthy();
+ const contentData = await umbracoApi.document.getByName(contentName);
+ expect(contentData.values).toEqual([]);
+});
+
+test('can publish content with the checkbox list data type', async ({umbracoApi, umbracoUi}) => {
+ // Arrange
+ const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
+ await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
+ await umbracoUi.content.goToSection(ConstantHelper.sections.content);
+
+ // Act
+ await umbracoUi.content.clickActionsMenuAtRoot();
+ await umbracoUi.content.clickCreateButton();
+ await umbracoUi.content.chooseDocumentType(documentTypeName);
+ await umbracoUi.content.enterContentName(contentName);
+ await umbracoUi.content.clickSaveAndPublishButton();
+
+ // Assert
+ await umbracoUi.content.doesSuccessNotificationsHaveCount(2);
+ expect(await umbracoApi.document.doesNameExist(contentName)).toBeTruthy();
+ const contentData = await umbracoApi.document.getByName(contentName);
+ expect(contentData.values).toEqual([]);
+});
+
+test('can create content with the custom approved color data type', async ({umbracoApi, umbracoUi}) => {
+ // Arrange
+ const customDataTypeName = 'CustomCheckboxList';
+ const optionValues = ['testOption1', 'testOption2'];
+ const customDataTypeId = await umbracoApi.dataType.createCheckboxListDataType(customDataTypeName, optionValues);
+ await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, customDataTypeName, customDataTypeId);
+ await umbracoUi.content.goToSection(ConstantHelper.sections.content);
+
+ // Act
+ await umbracoUi.content.clickActionsMenuAtRoot();
+ await umbracoUi.content.clickCreateButton();
+ await umbracoUi.content.chooseDocumentType(documentTypeName);
+ await umbracoUi.content.enterContentName(contentName);
+ await umbracoUi.content.chooseCheckboxListOption(optionValues[0]);
+ await umbracoUi.content.clickSaveAndPublishButton();
+
+ // Assert
+ await umbracoUi.content.doesSuccessNotificationsHaveCount(2);
+ expect(await umbracoApi.document.doesNameExist(contentName)).toBeTruthy();
+ const contentData = await umbracoApi.document.getByName(contentName);
+ expect(contentData.values[0].alias).toEqual(AliasHelper.toAlias(customDataTypeName));
+ expect(contentData.values[0].value).toEqual([optionValues[0]]);
+
+ // Clean
+ await umbracoApi.dataType.ensureNameNotExists(customDataTypeName);
+});
+
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Templates/HtmlLocalLinkParserTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Templates/HtmlLocalLinkParserTests.cs
index c9d3f3ab9b..93b0d5bba3 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Templates/HtmlLocalLinkParserTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Templates/HtmlLocalLinkParserTests.cs
@@ -13,6 +13,7 @@ using Umbraco.Cms.Core.Routing;
using Umbraco.Cms.Core.Templates;
using Umbraco.Cms.Tests.Common;
using Umbraco.Cms.Tests.UnitTests.TestHelpers.Objects;
+using Umbraco.Extensions;
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Templates;
@@ -21,6 +22,32 @@ public class HtmlLocalLinkParserTests
{
[Test]
public void Returns_Udis_From_LocalLinks()
+ {
+ var input = @"
+
+
+media
+
";
+
+ var umbracoContextAccessor = new TestUmbracoContextAccessor();
+ var parser = new HtmlLocalLinkParser(umbracoContextAccessor, Mock.Of());
+
+ var result = parser.FindUdisFromLocalLinks(input).ToList();
+
+ Assert.Multiple(() =>
+ {
+ Assert.AreEqual(2, result.Count);
+ Assert.Contains(UdiParser.Parse("umb://document/eed5fc6b-96fd-45a5-a0f1-b1adfb483c2f"), result);
+ Assert.Contains(UdiParser.Parse("umb://media/7e21a725-b905-4c5f-86dc-8c41ec116e39"), result);
+ });
+ }
+
+ // todo remove at some point and the implementation.
+ [Test]
+ public void Returns_Udis_From_Legacy_LocalLinks()
{
var input = @"
@@ -36,12 +63,59 @@ public class HtmlLocalLinkParserTests
var result = parser.FindUdisFromLocalLinks(input).ToList();
- Assert.AreEqual(2, result.Count);
- Assert.AreEqual(UdiParser.Parse("umb://document/C093961595094900AAF9170DDE6AD442"), result[0]);
- Assert.AreEqual(UdiParser.Parse("umb://document-type/2D692FCB070B4CDA92FB6883FDBFD6E2"), result[1]);
+ Assert.Multiple(() =>
+ {
+ Assert.AreEqual(2, result.Count);
+ Assert.Contains(UdiParser.Parse("umb://document/C093961595094900AAF9170DDE6AD442"), result);
+ Assert.Contains(UdiParser.Parse("umb://document-type/2D692FCB070B4CDA92FB6883FDBFD6E2"), result);
+ });
+ }
+
+ // todo remove at some point and the implementation.
+ [Test]
+ public void Returns_Udis_From_Legacy_And_Current_LocalLinks()
+ {
+ var input = @"
+
+
+hello
+
+
+
+
+media
+
";
+
+ var umbracoContextAccessor = new TestUmbracoContextAccessor();
+ var parser = new HtmlLocalLinkParser(umbracoContextAccessor, Mock.Of
());
+
+ var result = parser.FindUdisFromLocalLinks(input).ToList();
+
+ Assert.Multiple(() =>
+ {
+ Assert.AreEqual(4, result.Count);
+ Assert.Contains(UdiParser.Parse("umb://document/eed5fc6b-96fd-45a5-a0f1-b1adfb483c2f"), result);
+ Assert.Contains(UdiParser.Parse("umb://media/7e21a725-b905-4c5f-86dc-8c41ec116e39"), result);
+ Assert.Contains(UdiParser.Parse("umb://document/C093961595094900AAF9170DDE6AD442"), result);
+ Assert.Contains(UdiParser.Parse("umb://document-type/2D692FCB070B4CDA92FB6883FDBFD6E2"), result);
+ });
}
[TestCase("", "")]
+ // current
+ [TestCase(
+ "world ",
+ "world ")]
+ [TestCase(
+ "world ",
+ "world ")]
+ // legacy
[TestCase(
"hello href=\"{localLink:1234}\" world ",
"hello href=\"/my-test-url\" world ")]
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/DeliveryApi/ApiRichTextMarkupParserTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/DeliveryApi/ApiRichTextMarkupParserTests.cs
new file mode 100644
index 0000000000..43ec2136f7
--- /dev/null
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/DeliveryApi/ApiRichTextMarkupParserTests.cs
@@ -0,0 +1,200 @@
+using Microsoft.Extensions.Logging;
+using Moq;
+using NUnit.Framework;
+using Umbraco.Cms.Core;
+using Umbraco.Cms.Core.DeliveryApi;
+using Umbraco.Cms.Core.Models.DeliveryApi;
+using Umbraco.Cms.Core.Models.PublishedContent;
+using Umbraco.Cms.Core.PublishedCache;
+using Umbraco.Cms.Infrastructure.DeliveryApi;
+
+namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Infrastructure.DeliveryApi;
+
+[TestFixture]
+public class ApiRichTextMarkupParserTests
+{
+ private Mock _apiContentRouteBuilder;
+ private Mock _apiMediaUrlProvider;
+ private Mock _publishedSnapshotAccessor;
+
+ [Test]
+ public void Can_Parse_Legacy_LocalLinks()
+ {
+ var key1 = Guid.Parse("a1c5d649977f4ea59b1cb26055f3eed3");
+ var data1 = new MockData()
+ .WithKey(key1)
+ .WithRoutePath("/inline/")
+ .WithRouteStartPath("inline");
+
+ var mockData = new Dictionary
+ {
+ { key1, data1 },
+ };
+
+ var parser = BuildDefaultSut(mockData);
+
+ var legacyHtml =
+ "link to another page
";
+
+ var expectedOutput =
+ "link to another page
";
+
+ var parsedHtml = parser.Parse(legacyHtml);
+
+ Assert.AreEqual(expectedOutput, parsedHtml);
+ }
+
+ [Test]
+ public void Can_Parse_LocalLinks()
+ {
+ var key1 = Guid.Parse("eed5fc6b-96fd-45a5-a0f1-b1adfb483c2f");
+ var data1 = new MockData()
+ .WithKey(key1)
+ .WithRoutePath("/self/")
+ .WithRouteStartPath("self");
+
+ var key2 = Guid.Parse("cc143afe-4cbf-46e5-b399-c9f451384373");
+ var data2 = new MockData()
+ .WithKey(key2)
+ .WithRoutePath("/other/")
+ .WithRouteStartPath("other");
+
+ var mockData = new Dictionary
+ {
+ { key1, data1 },
+ { key2, data2 },
+ };
+
+ var parser = BuildDefaultSut(mockData);
+
+ var html =
+ @"Rich text outside of the blocks with a link to itself
+and to the other page
";
+
+ var expectedOutput =
+ @"Rich text outside of the blocks with a link to itself
+and to the other page
";
+
+ var parsedHtml = parser.Parse(html);
+
+ Assert.AreEqual(expectedOutput, parsedHtml);
+ }
+
+ [Test]
+ public void Can_Parse_Legacy_LocalImages()
+ {
+ var key1 = Guid.Parse("395bdc0e8f4d4ad4af7f3a3f6265651e");
+ var data1 = new MockData()
+ .WithKey(key1)
+ .WithMediaUrl("https://localhost:44331/media/bdofwokn/77gtp8fbrxmgkefatp10aw.webp");
+
+ var mockData = new Dictionary
+ {
+ { key1, data1 },
+ };
+ var parser = BuildDefaultSut(mockData);
+
+ var legacyHtml =
+ @"An image
\n
";
+
+ var expectedOutput =
+ @"An image
\n
";
+
+ var parsedHtml = parser.Parse(legacyHtml);
+
+ Assert.AreEqual(expectedOutput, parsedHtml);
+ }
+
+ private ApiRichTextMarkupParser BuildDefaultSut(Dictionary mockData)
+ {
+ var contentCacheMock = new Mock();
+
+ contentCacheMock.Setup(cc => cc.GetById(It.IsAny(), It.IsAny()))
+ .Returns((preview, key) => mockData[key].PublishedContent);
+ contentCacheMock.Setup(cc => cc.GetById(It.IsAny()))
+ .Returns(key => mockData[key].PublishedContent);
+ contentCacheMock.Setup(cc => cc.GetById(It.IsAny(), It.IsAny()))
+ .Returns((preview, udi) => mockData[((GuidUdi)udi).Guid].PublishedContent);
+ contentCacheMock.Setup(cc => cc.GetById(It.IsAny()))
+ .Returns(udi => mockData[((GuidUdi)udi).Guid].PublishedContent);
+
+ var mediaCacheMock = new Mock();
+ mediaCacheMock.Setup(cc => cc.GetById(It.IsAny(), It.IsAny()))
+ .Returns((preview, key) => mockData[key].PublishedContent);
+ mediaCacheMock.Setup(cc => cc.GetById(It.IsAny()))
+ .Returns(key => mockData[key].PublishedContent);
+ mediaCacheMock.Setup(cc => cc.GetById(It.IsAny(), It.IsAny()))
+ .Returns((preview, udi) => mockData[((GuidUdi)udi).Guid].PublishedContent);
+ mediaCacheMock.Setup(cc => cc.GetById(It.IsAny()))
+ .Returns(udi => mockData[((GuidUdi)udi).Guid].PublishedContent);
+
+ var snapshotMock = new Mock();
+ snapshotMock.SetupGet(ss => ss.Content)
+ .Returns(contentCacheMock.Object);
+ snapshotMock.SetupGet(ss => ss.Media)
+ .Returns(mediaCacheMock.Object);
+
+ var snapShot = snapshotMock.Object;
+
+ _publishedSnapshotAccessor = new Mock();
+ _publishedSnapshotAccessor.Setup(psa => psa.TryGetPublishedSnapshot(out snapShot))
+ .Returns(true);
+
+ _apiMediaUrlProvider = new Mock();
+ _apiMediaUrlProvider.Setup(mup => mup.GetUrl(It.IsAny()))
+ .Returns(ipc => mockData[ipc.Key].MediaUrl);
+
+ _apiContentRouteBuilder = new Mock();
+ _apiContentRouteBuilder.Setup(acrb => acrb.Build(It.IsAny(), It.IsAny()))
+ .Returns((content, culture) => mockData[content.Key].ApiContentRoute);
+
+ return new ApiRichTextMarkupParser(
+ _apiContentRouteBuilder.Object,
+ _apiMediaUrlProvider.Object,
+ _publishedSnapshotAccessor.Object,
+ Mock.Of>());
+ }
+
+ private class MockData
+ {
+ private Mock _publishedContentMock = new Mock();
+ private Mock _apiContentRouteMock = new Mock();
+ private Mock _apiContentStartItem = new Mock();
+
+ public IPublishedContent PublishedContent => _publishedContentMock.Object;
+
+ public IApiContentRoute ApiContentRoute => _apiContentRouteMock.Object;
+
+ public string MediaUrl { get; set; } = string.Empty;
+
+ public MockData()
+ {
+ _apiContentRouteMock.SetupGet(r => r.StartItem).Returns(_apiContentStartItem.Object);
+ }
+
+ public MockData WithKey(Guid key)
+ {
+ _publishedContentMock.SetupGet(i => i.Key).Returns(key);
+ _apiContentStartItem.SetupGet(rsi => rsi.Id).Returns(key);
+ return this;
+ }
+
+ public MockData WithRoutePath(string path)
+ {
+ _apiContentRouteMock.SetupGet(r => r.Path).Returns(path);
+ return this;
+ }
+
+ public MockData WithRouteStartPath(string path)
+ {
+ _apiContentStartItem.SetupGet(rsi => rsi.Path).Returns(path);
+ return this;
+ }
+
+ public MockData WithMediaUrl(string url)
+ {
+ MediaUrl = url;
+ return this;
+ }
+ }
+}
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/BackOfficeAreaRoutesTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/BackOfficeAreaRoutesTests.cs
index c444e591ab..e1a0638fc6 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/BackOfficeAreaRoutesTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Common/Routing/BackOfficeAreaRoutesTests.cs
@@ -45,7 +45,7 @@ public class BackOfficeAreaRoutesTests
var endpoints = new TestRouteBuilder();
routes.CreateRoutes(endpoints);
- Assert.AreEqual(1, endpoints.DataSources.Count);
+ Assert.AreEqual(2, endpoints.DataSources.Count);
var route = endpoints.DataSources.First();
Assert.AreEqual(2, route.Endpoints.Count);
diff --git a/umbraco.sln b/umbraco.sln
index 1e7a6e3326..59015768a8 100644
--- a/umbraco.sln
+++ b/umbraco.sln
@@ -140,6 +140,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{20CE9C97
ProjectSection(SolutionItems) = preProject
build\azure-pipelines.yml = build\azure-pipelines.yml
build\nightly-build-trigger.yml = build\nightly-build-trigger.yml
+ build\templates\backoffice-install.yml = build\templates\backoffice-install.yml
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "csharp-docs", "csharp-docs", "{F2BF84D9-0A14-40AF-A0F3-B9BBBBC16A44}"
diff --git a/version.json b/version.json
index cf30f7b7d2..31fd8e32c7 100644
--- a/version.json
+++ b/version.json
@@ -1,6 +1,6 @@
{
"$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json",
- "version": "14.1.0-rc",
+ "version": "14.1.0-rc2",
"assemblyVersion": {
"precision": "build"
},