From 09177fcaa090bd4b441ce6a3322bf593abe6dd14 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 28 Jul 2021 15:16:25 +0800 Subject: [PATCH 01/26] Add tenant info to IdentityClients. --- framework/Volo.Abp.sln | 7 ++++ .../IdentityModel/AbpIdentityClientOptions.cs | 34 ++++++++++++++- .../IdentityModelAuthenticationService.cs | 14 +------ .../Volo.Abp.IdentityModel.Tests.csproj | 24 +++++++++++ .../AbpIdentityClientOptions_Tests.cs | 42 +++++++++++++++++++ .../IdentityModel/AbpIdentityModelTestBase.cs | 12 ++++++ .../AbpIdentityModelTestModule.cs | 10 +++++ .../appsettings.json | 40 ++++++++++++++++++ 8 files changed, 169 insertions(+), 14 deletions(-) create mode 100644 framework/test/Volo.Abp.IdentityModel.Tests/Volo.Abp.IdentityModel.Tests.csproj create mode 100644 framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityClientOptions_Tests.cs create mode 100644 framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityModelTestBase.cs create mode 100644 framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityModelTestModule.cs create mode 100644 framework/test/Volo.Abp.IdentityModel.Tests/appsettings.json diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index 0605f5c103..95ac94f7c0 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -383,6 +383,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.TextTemplating.Scr EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.MongoDB.Tests.SecondContext", "test\Volo.Abp.MongoDB.Tests.SecondContext\Volo.Abp.MongoDB.Tests.SecondContext.csproj", "{90B1866A-EF99-40B9-970E-B898E5AA523F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.IdentityModel.Tests", "test\Volo.Abp.IdentityModel.Tests\Volo.Abp.IdentityModel.Tests.csproj", "{40C6740E-BFCA-4D37-8344-3D84E2044BB2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1141,6 +1143,10 @@ Global {90B1866A-EF99-40B9-970E-B898E5AA523F}.Debug|Any CPU.Build.0 = Debug|Any CPU {90B1866A-EF99-40B9-970E-B898E5AA523F}.Release|Any CPU.ActiveCfg = Release|Any CPU {90B1866A-EF99-40B9-970E-B898E5AA523F}.Release|Any CPU.Build.0 = Release|Any CPU + {40C6740E-BFCA-4D37-8344-3D84E2044BB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {40C6740E-BFCA-4D37-8344-3D84E2044BB2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {40C6740E-BFCA-4D37-8344-3D84E2044BB2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {40C6740E-BFCA-4D37-8344-3D84E2044BB2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1334,6 +1340,7 @@ Global {C996F458-98FB-483D-9306-4701290E2FC1} = {447C8A77-E5F0-4538-8687-7383196D04EA} {75D8DADB-3FA9-4C1D-B23A-DBFD08133B7C} = {447C8A77-E5F0-4538-8687-7383196D04EA} {90B1866A-EF99-40B9-970E-B898E5AA523F} = {447C8A77-E5F0-4538-8687-7383196D04EA} + {40C6740E-BFCA-4D37-8344-3D84E2044BB2} = {447C8A77-E5F0-4538-8687-7383196D04EA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/AbpIdentityClientOptions.cs b/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/AbpIdentityClientOptions.cs index 0e877ee441..e8a8bfcd61 100644 --- a/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/AbpIdentityClientOptions.cs +++ b/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/AbpIdentityClientOptions.cs @@ -1,4 +1,9 @@ -namespace Volo.Abp.IdentityModel +using System; +using System.Collections.Generic; +using System.Linq; +using Volo.Abp.MultiTenancy; + +namespace Volo.Abp.IdentityModel { public class AbpIdentityClientOptions { @@ -8,5 +13,30 @@ { IdentityClients = new IdentityClientConfigurationDictionary(); } + + public IdentityClientConfiguration GetClientConfiguration(ICurrentTenant currentTenant, string identityClientName = null) + { + if (identityClientName.IsNullOrWhiteSpace()) + { + identityClientName = IdentityClientConfigurationDictionary.DefaultName; + } + + if (currentTenant.Id.HasValue) + { + var tenantConfiguration = IdentityClients.FirstOrDefault(x => x.Key == $"{identityClientName}.{currentTenant.Id}"); + if (tenantConfiguration.Key == null && !currentTenant.Name.IsNullOrWhiteSpace()) + { + tenantConfiguration = IdentityClients.FirstOrDefault(x => x.Key == $"{identityClientName}.{currentTenant.Name}"); + } + + if (tenantConfiguration.Key != null) + { + return tenantConfiguration.Value; + } + } + + return IdentityClients.GetOrDefault(identityClientName) ?? + IdentityClients.Default; + } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/IdentityModelAuthenticationService.cs b/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/IdentityModelAuthenticationService.cs index cc0b470a1e..f3c67c7b95 100644 --- a/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/IdentityModelAuthenticationService.cs +++ b/framework/src/Volo.Abp.IdentityModel/Volo/Abp/IdentityModel/IdentityModelAuthenticationService.cs @@ -66,7 +66,7 @@ namespace Volo.Abp.IdentityModel protected virtual async Task GetAccessTokenOrNullAsync(string identityClientName) { - var configuration = GetClientConfiguration(identityClientName); + var configuration = ClientOptions.GetClientConfiguration(CurrentTenant, identityClientName); if (configuration == null) { Logger.LogWarning($"Could not find {nameof(IdentityClientConfiguration)} for {identityClientName}. Either define a configuration for {identityClientName} or set a default configuration."); @@ -114,17 +114,6 @@ namespace Volo.Abp.IdentityModel client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); } - private IdentityClientConfiguration GetClientConfiguration(string identityClientName = null) - { - if (identityClientName.IsNullOrEmpty()) - { - return ClientOptions.IdentityClients.Default; - } - - return ClientOptions.IdentityClients.GetOrDefault(identityClientName) ?? - ClientOptions.IdentityClients.Default; - } - protected virtual async Task GetTokenEndpoint(IdentityClientConfiguration configuration) { //TODO: Can use (configuration.Authority + /connect/token) directly? @@ -205,6 +194,7 @@ namespace Volo.Abp.IdentityModel UserName = configuration.UserName, Password = configuration.UserPassword }; + IdentityModelHttpRequestMessageOptions.ConfigureHttpRequestMessage?.Invoke(request); AddParametersToRequestAsync(configuration, request); diff --git a/framework/test/Volo.Abp.IdentityModel.Tests/Volo.Abp.IdentityModel.Tests.csproj b/framework/test/Volo.Abp.IdentityModel.Tests/Volo.Abp.IdentityModel.Tests.csproj new file mode 100644 index 0000000000..f2323aaeef --- /dev/null +++ b/framework/test/Volo.Abp.IdentityModel.Tests/Volo.Abp.IdentityModel.Tests.csproj @@ -0,0 +1,24 @@ + + + + + + net5.0 + + + + + + + + + + + + + + Always + + + + diff --git a/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityClientOptions_Tests.cs b/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityClientOptions_Tests.cs new file mode 100644 index 0000000000..ef7bd895f5 --- /dev/null +++ b/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityClientOptions_Tests.cs @@ -0,0 +1,42 @@ +using System; +using Microsoft.Extensions.Options; +using Shouldly; +using Volo.Abp.MultiTenancy; +using Xunit; + +namespace Volo.Abp.IdentityModel +{ + public class AbpIdentityClientOptions_Tests : AbpIdentityModelTestBase + { + private readonly ICurrentTenant _currentTenant; + private readonly AbpIdentityClientOptions _identityClientOptions; + + public AbpIdentityClientOptions_Tests() + { + _currentTenant = GetRequiredService(); + _identityClientOptions = GetRequiredService>().Value; + } + + [Fact] + public void GetClientConfiguration_Test() + { + var hostDefaultConfiguration = _identityClientOptions.GetClientConfiguration(_currentTenant); + hostDefaultConfiguration.UserName.ShouldBe("host_default_admin"); + + var hostIdentityConfiguration = _identityClientOptions.GetClientConfiguration(_currentTenant, "Identity"); + hostIdentityConfiguration.UserName.ShouldBe("host_identity_admin"); + + using (_currentTenant.Change(Guid.Parse("f72a344f-651e-49f0-85f6-be260a10e4df"), "Test_Tenant1")) + { + var tenantDefaultConfiguration = _identityClientOptions.GetClientConfiguration(_currentTenant); + tenantDefaultConfiguration.UserName.ShouldBe("tenant_default_admin"); + } + + using (_currentTenant.Change(Guid.Parse("f72a344f-651e-49f0-85f6-be260a10e4df"))) + { + var tenantIdentityConfiguration = _identityClientOptions.GetClientConfiguration(_currentTenant, "Identity"); + tenantIdentityConfiguration.UserName.ShouldBe("tenant_identity_admin"); + } + } + } +} diff --git a/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityModelTestBase.cs b/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityModelTestBase.cs new file mode 100644 index 0000000000..80ee47ae37 --- /dev/null +++ b/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityModelTestBase.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Testing; + +namespace Volo.Abp.IdentityModel +{ + public abstract class AbpIdentityModelTestBase : AbpIntegratedTest + { + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) + { + options.UseAutofac(); + } + } +} diff --git a/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityModelTestModule.cs b/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityModelTestModule.cs new file mode 100644 index 0000000000..2a17244e42 --- /dev/null +++ b/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityModelTestModule.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Modularity; + +namespace Volo.Abp.IdentityModel +{ + [DependsOn(typeof(AbpIdentityModelModule))] + public class AbpIdentityModelTestModule : AbpModule + { + + } +} diff --git a/framework/test/Volo.Abp.IdentityModel.Tests/appsettings.json b/framework/test/Volo.Abp.IdentityModel.Tests/appsettings.json new file mode 100644 index 0000000000..f4d01ff407 --- /dev/null +++ b/framework/test/Volo.Abp.IdentityModel.Tests/appsettings.json @@ -0,0 +1,40 @@ +{ + "IdentityClients": { + "Default": { + "GrantType": "password", + "ClientId": "Test_App", + "ClientSecret": "1q2w3e*", + "UserName": "host_default_admin", + "UserPassword": "1q2w3E*", + "Authority": "https://localhost:44395", + "Scope": "Test_Scope" + }, + "Default.Test_Tenant1": { + "GrantType": "password", + "ClientId": "Test_App", + "ClientSecret": "1q2w3e*", + "UserName": "tenant_default_admin", + "UserPassword": "1q2w3E*", + "Authority": "https://localhost:44395", + "Scope": "Test_Scope" + }, + "Identity": { + "GrantType": "password", + "ClientId": "Test_App", + "ClientSecret": "1q2w3e*", + "UserName": "host_identity_admin", + "UserPassword": "1q2w3E*", + "Authority": "https://localhost:44395", + "Scope": "Test_Scope" + }, + "Identity.f72a344f-651e-49f0-85f6-be260a10e4df": { + "GrantType": "password", + "ClientId": "Test_App", + "ClientSecret": "1q2w3e*", + "UserName": "tenant_identity_admin", + "UserPassword": "1q2w3E*", + "Authority": "https://localhost:44395", + "Scope": "Test_Scope" + } + } +} From 35e136ba8f15d64c356563bb15f6a9996dde4e4b Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 28 Jul 2021 15:35:22 +0800 Subject: [PATCH 02/26] Fallback to default if the tenant configure is not exists. --- .../Abp/IdentityModel/AbpIdentityClientOptions_Tests.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityClientOptions_Tests.cs b/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityClientOptions_Tests.cs index ef7bd895f5..1f36ab32f6 100644 --- a/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityClientOptions_Tests.cs +++ b/framework/test/Volo.Abp.IdentityModel.Tests/Volo/Abp/IdentityModel/AbpIdentityClientOptions_Tests.cs @@ -37,6 +37,15 @@ namespace Volo.Abp.IdentityModel var tenantIdentityConfiguration = _identityClientOptions.GetClientConfiguration(_currentTenant, "Identity"); tenantIdentityConfiguration.UserName.ShouldBe("tenant_identity_admin"); } + + using (_currentTenant.Change(Guid.NewGuid())) + { + var configuration = _identityClientOptions.GetClientConfiguration(_currentTenant); + configuration.UserName.ShouldBe("host_default_admin"); + + configuration = _identityClientOptions.GetClientConfiguration(_currentTenant, "Identity"); + configuration.UserName.ShouldBe("host_identity_admin"); + } } } } From 2362b0dbf7b4da5a3923a6ad13f424b669faff3b Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 3 Aug 2021 15:39:32 +0800 Subject: [PATCH 03/26] Implement delayed jobs for RabbitMQ integration --- .../AbpRabbitMqBackgroundJobOptions.cs | 6 ++++ .../Abp/BackgroundJobs/RabbitMQ/JobQueue.cs | 22 +++++++++--- .../RabbitMQ/JobQueueConfiguration.cs | 35 +++++++++++++++---- 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/AbpRabbitMqBackgroundJobOptions.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/AbpRabbitMqBackgroundJobOptions.cs index 8d588debe9..82c505f050 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/AbpRabbitMqBackgroundJobOptions.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/AbpRabbitMqBackgroundJobOptions.cs @@ -15,10 +15,16 @@ namespace Volo.Abp.BackgroundJobs.RabbitMQ /// public string DefaultQueueNamePrefix { get; set; } + /// + /// Default value: "AbpBackgroundJobsDelayed." + /// + public string DefaultDelayedQueueNamePrefix { get; set;} + public AbpRabbitMqBackgroundJobOptions() { JobQueues = new Dictionary(); DefaultQueueNamePrefix = "AbpBackgroundJobs."; + DefaultDelayedQueueNamePrefix = "AbpBackgroundJobsDelayed."; } } } diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs index 3d7e8c05ff..1d16e12683 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueue.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; @@ -64,7 +65,8 @@ namespace Volo.Abp.BackgroundJobs.RabbitMQ return AbpRabbitMqBackgroundJobOptions.JobQueues.GetOrDefault(typeof(TArgs)) ?? new JobQueueConfiguration( typeof(TArgs), - AbpRabbitMqBackgroundJobOptions.DefaultQueueNamePrefix + JobConfiguration.JobName + AbpRabbitMqBackgroundJobOptions.DefaultQueueNamePrefix + JobConfiguration.JobName, + AbpRabbitMqBackgroundJobOptions.DefaultDelayedQueueNamePrefix + JobConfiguration.JobName ); } @@ -133,6 +135,9 @@ namespace Volo.Abp.BackgroundJobs.RabbitMQ var result = QueueConfiguration.Declare(ChannelAccessor.Channel); Logger.LogDebug($"RabbitMQ Queue '{QueueConfiguration.QueueName}' has {result.MessageCount} messages and {result.ConsumerCount} consumers."); + // Declare delayed queue + QueueConfiguration.DeclareDelayed(ChannelAccessor.Channel); + if (AbpBackgroundJobOptions.IsJobExecutionEnabled) { Consumer = new AsyncEventingBasicConsumer(ChannelAccessor.Channel); @@ -154,12 +159,21 @@ namespace Volo.Abp.BackgroundJobs.RabbitMQ BackgroundJobPriority priority = BackgroundJobPriority.Normal, TimeSpan? delay = null) { - //TODO: How to handle priority & delay? + //TODO: How to handle priority + + var routingKey = QueueConfiguration.QueueName; + var basicProperties = CreateBasicPropertiesToPublish(); + + if (delay.HasValue) + { + routingKey = QueueConfiguration.DelayedQueueName; + basicProperties.Expiration = delay.Value.TotalMilliseconds.ToString(); + } ChannelAccessor.Channel.BasicPublish( exchange: "", - routingKey: QueueConfiguration.QueueName, - basicProperties: CreateBasicPropertiesToPublish(), + routingKey: routingKey, + basicProperties: basicProperties, body: Serializer.Serialize(args) ); diff --git a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueueConfiguration.cs b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueueConfiguration.cs index 959952de22..453c3f9257 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueueConfiguration.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.RabbitMQ/Volo/Abp/BackgroundJobs/RabbitMQ/JobQueueConfiguration.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using RabbitMQ.Client; using Volo.Abp.RabbitMQ; namespace Volo.Abp.BackgroundJobs.RabbitMQ @@ -9,21 +11,42 @@ namespace Volo.Abp.BackgroundJobs.RabbitMQ public string ConnectionName { get; set; } + public string DelayedQueueName { get; set; } + public JobQueueConfiguration( - Type jobArgsType, - string queueName, + Type jobArgsType, + string queueName, + string delayedQueueName, string connectionName = null, bool durable = true, bool exclusive = false, bool autoDelete = false) : base( - queueName, - durable, - exclusive, + queueName, + durable, + exclusive, autoDelete) { JobArgsType = jobArgsType; ConnectionName = connectionName; + DelayedQueueName = delayedQueueName; + } + + public virtual QueueDeclareOk DeclareDelayed(IModel channel) + { + var delayedArguments = new Dictionary(Arguments) + { + ["x-dead-letter-routing-key"] = QueueName, + ["x-dead-letter-exchange"] = string.Empty + }; + + return channel.QueueDeclare( + queue: DelayedQueueName, + durable: Durable, + exclusive: Exclusive, + autoDelete: AutoDelete, + arguments: delayedArguments + ); } } -} \ No newline at end of file +} From fa565f21a5b142d3aef95ef2b9b02dd28cf57c60 Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Fri, 17 Sep 2021 10:20:17 +0300 Subject: [PATCH 04/26] create @abp/ng.components/chart.js entrypoint --- .../apps/dev-app/src/app/app.module.ts | 2 + .../components/chart.js/ng-package.json | 7 + .../chart.js/src/chart.component.html | 11 ++ .../chart.js/src/chart.component.ts | 141 ++++++++++++++++++ .../components/chart.js/src/chart.module.ts | 29 ++++ .../components/chart.js/src/public-api.ts | 4 + .../components/chart.js/src/widget-utils.ts | 16 ++ npm/ng-packs/tsconfig.base.json | 1 + npm/ng-packs/yarn.lock | 5 + 9 files changed, 216 insertions(+) create mode 100644 npm/ng-packs/packages/components/chart.js/ng-package.json create mode 100644 npm/ng-packs/packages/components/chart.js/src/chart.component.html create mode 100644 npm/ng-packs/packages/components/chart.js/src/chart.component.ts create mode 100644 npm/ng-packs/packages/components/chart.js/src/chart.module.ts create mode 100644 npm/ng-packs/packages/components/chart.js/src/public-api.ts create mode 100644 npm/ng-packs/packages/components/chart.js/src/widget-utils.ts diff --git a/npm/ng-packs/apps/dev-app/src/app/app.module.ts b/npm/ng-packs/apps/dev-app/src/app/app.module.ts index 9c89658357..21eb869af0 100644 --- a/npm/ng-packs/apps/dev-app/src/app/app.module.ts +++ b/npm/ng-packs/apps/dev-app/src/app/app.module.ts @@ -1,4 +1,5 @@ import { AccountConfigModule } from '@abp/ng.account/config'; +import { ChartModule } from '@abp/ng.components/chart.js'; import { CoreModule } from '@abp/ng.core'; import { registerLocale } from '@abp/ng.core/locale'; import { IdentityConfigModule } from '@abp/ng.identity/config'; @@ -31,6 +32,7 @@ import { APP_ROUTE_PROVIDER } from './route.provider'; TenantManagementConfigModule.forRoot(), SettingManagementConfigModule.forRoot(), ThemeBasicModule.forRoot(), + ChartModule.forRoot() ], providers: [APP_ROUTE_PROVIDER], declarations: [AppComponent], diff --git a/npm/ng-packs/packages/components/chart.js/ng-package.json b/npm/ng-packs/packages/components/chart.js/ng-package.json new file mode 100644 index 0000000000..cc98fd4e36 --- /dev/null +++ b/npm/ng-packs/packages/components/chart.js/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../../dist/packages/components/chart.js", + "lib": { + "entryFile": "src/public-api.ts" + } +} diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.component.html b/npm/ng-packs/packages/components/chart.js/src/chart.component.html new file mode 100644 index 0000000000..211614c90d --- /dev/null +++ b/npm/ng-packs/packages/components/chart.js/src/chart.component.html @@ -0,0 +1,11 @@ +
+ +
diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts new file mode 100644 index 0000000000..499b0b5e33 --- /dev/null +++ b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts @@ -0,0 +1,141 @@ +import { + AfterViewInit, + ChangeDetectorRef, + Component, + ElementRef, + EventEmitter, + Input, + OnDestroy, + Output +} from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; +import { chartJsLoaded$ } from './widget-utils'; +declare const Chart: any; + +@Component({ + selector: 'abp-chart', + templateUrl: './chart.component.html', +}) +export class ChartComponent implements AfterViewInit, OnDestroy { + @Input() type: string; + + @Input() options: any = {}; + + @Input() plugins: any[] = []; + + @Input() width: string; + + @Input() height: string; + + @Input() responsive = true; + + // eslint-disable-next-line @angular-eslint/no-output-on-prefix + @Output() readonly onDataSelect: EventEmitter = new EventEmitter(); + + @Output() readonly initialized = new BehaviorSubject(this); + + private _initialized: boolean; + + _data: any; + + chart: any; + + constructor(public el: ElementRef, private cdRef: ChangeDetectorRef) {} + + @Input() get data(): any { + return this._data; + } + + set data(val: any) { + this._data = val; + this.reinit(); + } + + get canvas() { + return this.el.nativeElement.children[0].children[0]; + } + + get base64Image() { + return this.chart.toBase64Image(); + } + + ngAfterViewInit() { + chartJsLoaded$.subscribe(() => { + this.testChartJs(); + + this.initChart(); + this._initialized = true; + }); + } + + testChartJs() { + try { + Chart; + } catch (error) { + throw new Error(`Chart is not found. Import the Chart from app.module like shown below: + import('chart.js'); + `); + } + } + + onCanvasClick = event => { + if (this.chart) { + const element = this.chart.getElementAtEvent(event); + const dataset = this.chart.getDatasetAtEvent(event); + if (element && element.length && dataset) { + this.onDataSelect.emit({ + originalEvent: event, + element: element[0], + dataset, + }); + } + } + }; + + initChart = () => { + const opts = this.options || {}; + opts.responsive = this.responsive; + + // allows chart to resize in responsive mode + if (opts.responsive && (this.height || this.width)) { + opts.maintainAspectRatio = false; + } + + this.chart = new Chart(this.canvas, { + type: this.type, + data: this.data, + options: this.options, + plugins: this.plugins, + }); + + this.cdRef.detectChanges(); + }; + + generateLegend = () => { + if (this.chart) { + return this.chart.generateLegend(); + } + }; + + refresh = () => { + if (this.chart) { + this.chart.update(); + this.cdRef.detectChanges(); + } + }; + + reinit = () => { + if (this.chart) { + this.chart.destroy(); + this.initChart(); + } + }; + + ngOnDestroy() { + if (this.chart) { + this.chart.destroy(); + this._initialized = false; + this.chart = null; + } + } +} diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.module.ts b/npm/ng-packs/packages/components/chart.js/src/chart.module.ts new file mode 100644 index 0000000000..47e422174c --- /dev/null +++ b/npm/ng-packs/packages/components/chart.js/src/chart.module.ts @@ -0,0 +1,29 @@ +import { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core'; +import { ChartComponent } from './chart.component'; + +declare const Chart: any + +@NgModule({ + imports: [], + exports: [], + declarations: [ChartComponent], + providers: [], +}) +export class ChartModule { + static forRoot(): ModuleWithProviders { + return { + ngModule: ChartModule, + providers: [{ + provide: APP_INITIALIZER, + multi: true, + useFactory: (injector: Injector) => () => { + import('chart.js/auto').then((module) => { + console.dir(module) + }) + return Promise.resolve() + }, + deps: [Injector] + }] + } + } +} diff --git a/npm/ng-packs/packages/components/chart.js/src/public-api.ts b/npm/ng-packs/packages/components/chart.js/src/public-api.ts new file mode 100644 index 0000000000..399f89f358 --- /dev/null +++ b/npm/ng-packs/packages/components/chart.js/src/public-api.ts @@ -0,0 +1,4 @@ +export * from './chart.component'; +export * from './chart.module'; +export * from './widget-utils'; + diff --git a/npm/ng-packs/packages/components/chart.js/src/widget-utils.ts b/npm/ng-packs/packages/components/chart.js/src/widget-utils.ts new file mode 100644 index 0000000000..dfe81c973c --- /dev/null +++ b/npm/ng-packs/packages/components/chart.js/src/widget-utils.ts @@ -0,0 +1,16 @@ +import { ReplaySubject } from 'rxjs'; + +export function getRandomBackgroundColor(count) { + const colors = []; + + for (let i = 0; i < count; i++) { + const r = ((i + 5) * (i + 5) * 474) % 255; + const g = ((i + 5) * (i + 5) * 1600) % 255; + const b = ((i + 5) * (i + 5) * 84065) % 255; + colors.push('rgba(' + r + ', ' + g + ', ' + b + ', 0.7)'); + } + + return colors; +} + +export const chartJsLoaded$ = new ReplaySubject(1); diff --git a/npm/ng-packs/tsconfig.base.json b/npm/ng-packs/tsconfig.base.json index 415fcd2ce5..674468c130 100644 --- a/npm/ng-packs/tsconfig.base.json +++ b/npm/ng-packs/tsconfig.base.json @@ -17,6 +17,7 @@ "@abp/ng.account.core": ["packages/account-core/src/public-api.ts"], "@abp/ng.account/config": ["packages/account/config/src/public-api.ts"], "@abp/ng.components": ["packages/components/src/public-api.ts"], + "@abp/ng.components/chart.js": ["packages/components/chart.js/src/public-api.ts"], "@abp/ng.components/page": ["packages/components/page/src/public-api.ts"], "@abp/ng.components/tree": ["packages/components/tree/src/public-api.ts"], "@abp/ng.core": ["packages/core/src/public-api.ts"], diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index dbc51cc020..0af1a56c06 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -4945,6 +4945,11 @@ chart.js@^2.9.3: chartjs-color "^2.1.0" moment "^2.10.2" +chart.js@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-3.5.1.tgz#73e24d23a4134a70ccdb5e79a917f156b6f3644a" + integrity sha512-m5kzt72I1WQ9LILwQC4syla/LD/N413RYv2Dx2nnTkRS9iv/ey1xLTt0DnPc/eWV4zI+BgEgDYBIzbQhZHc/PQ== + chartjs-color-string@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz#1df096621c0e70720a64f4135ea171d051402f71" From f509833f42c2e266c65138724dd98762686b2066 Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Fri, 17 Sep 2021 10:20:28 +0300 Subject: [PATCH 05/26] update chart.js version to the latest --- npm/ng-packs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index da4d291dcd..d8718d737f 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -86,7 +86,7 @@ "@typescript-eslint/parser": "~4.28.3", "angular-oauth2-oidc": "^12.1.0", "bootstrap": "^4.5.0", - "chart.js": "^2.9.3", + "chart.js": "^3.5.1", "cypress": "^7.3.0", "dotenv": "~10.0.0", "eslint": "7.22.0", From a7626e28c0103027bf0e5ae8026023dd4caf42ef Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 17 Sep 2021 21:56:53 +0800 Subject: [PATCH 06/26] Update Volo.Abp.IdentityModel.Tests.csproj --- .../Volo.Abp.IdentityModel.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/test/Volo.Abp.IdentityModel.Tests/Volo.Abp.IdentityModel.Tests.csproj b/framework/test/Volo.Abp.IdentityModel.Tests/Volo.Abp.IdentityModel.Tests.csproj index f2323aaeef..dd7ba0d439 100644 --- a/framework/test/Volo.Abp.IdentityModel.Tests/Volo.Abp.IdentityModel.Tests.csproj +++ b/framework/test/Volo.Abp.IdentityModel.Tests/Volo.Abp.IdentityModel.Tests.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 From 216c4a8b8dca5dfe27ada3235628dca8038a97f2 Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Fri, 17 Sep 2021 22:10:27 +0300 Subject: [PATCH 07/26] improve chart component --- .../chart.js/src/chart.component.html | 11 -- .../chart.js/src/chart.component.ts | 130 +++++++++--------- .../components/chart.js/src/chart.module.ts | 5 +- 3 files changed, 70 insertions(+), 76 deletions(-) delete mode 100644 npm/ng-packs/packages/components/chart.js/src/chart.component.html diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.component.html b/npm/ng-packs/packages/components/chart.js/src/chart.component.html deleted file mode 100644 index 211614c90d..0000000000 --- a/npm/ng-packs/packages/components/chart.js/src/chart.component.html +++ /dev/null @@ -1,11 +0,0 @@ -
- -
diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts index 499b0b5e33..abf9cae4e5 100644 --- a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts +++ b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts @@ -1,24 +1,42 @@ import { AfterViewInit, + ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, + OnChanges, OnDestroy, - Output + Output, + SimpleChanges } from '@angular/core'; -import { BehaviorSubject } from 'rxjs'; -import { chartJsLoaded$ } from './widget-utils'; -declare const Chart: any; + +let Chart: any; @Component({ selector: 'abp-chart', - templateUrl: './chart.component.html', + template: ` +
+ +
+ `, + changeDetection: ChangeDetectionStrategy.OnPush, + exportAs: 'abpChart', }) -export class ChartComponent implements AfterViewInit, OnDestroy { +export class ChartComponent implements AfterViewInit, OnDestroy, OnChanges { @Input() type: string; + @Input() data: any = {}; + @Input() options: any = {}; @Input() plugins: any[] = []; @@ -29,68 +47,43 @@ export class ChartComponent implements AfterViewInit, OnDestroy { @Input() responsive = true; - // eslint-disable-next-line @angular-eslint/no-output-on-prefix - @Output() readonly onDataSelect: EventEmitter = new EventEmitter(); - - @Output() readonly initialized = new BehaviorSubject(this); + @Output() dataSelect = new EventEmitter(); - private _initialized: boolean; + initialized: boolean - _data: any; chart: any; - constructor(public el: ElementRef, private cdRef: ChangeDetectorRef) {} - - @Input() get data(): any { - return this._data; - } - - set data(val: any) { - this._data = val; - this.reinit(); - } - - get canvas() { - return this.el.nativeElement.children[0].children[0]; - } - - get base64Image() { - return this.chart.toBase64Image(); - } + constructor(public el: ElementRef, private cdr: ChangeDetectorRef) {} ngAfterViewInit() { - chartJsLoaded$.subscribe(() => { - this.testChartJs(); - + import('chart.js/auto').then(module => { + Chart = module.default; this.initChart(); - this._initialized = true; + this.initialized = true; }); } - testChartJs() { - try { - Chart; - } catch (error) { - throw new Error(`Chart is not found. Import the Chart from app.module like shown below: - import('chart.js'); - `); - } - } - - onCanvasClick = event => { + onCanvasClick(event) { if (this.chart) { - const element = this.chart.getElementAtEvent(event); - const dataset = this.chart.getDatasetAtEvent(event); - if (element && element.length && dataset) { - this.onDataSelect.emit({ - originalEvent: event, - element: element[0], - dataset, - }); + const element = this.chart.getElementsAtEventForMode( + event, + 'nearest', + { intersect: true }, + false, + ); + const dataset = this.chart.getElementsAtEventForMode( + event, + 'dataset', + { intersect: true }, + false, + ); + + if (element && element[0] && dataset) { + this.dataSelect.emit({ originalEvent: event, element: element[0], dataset: dataset }); } } - }; + } initChart = () => { const opts = this.options || {}; @@ -101,15 +94,20 @@ export class ChartComponent implements AfterViewInit, OnDestroy { opts.maintainAspectRatio = false; } - this.chart = new Chart(this.canvas, { - type: this.type, + this.chart = new Chart(this.el.nativeElement.children[0].children[0], { + type: this.type as any, data: this.data, options: this.options, - plugins: this.plugins, }); + } - this.cdRef.detectChanges(); - }; + getCanvas = () => { + return this.el.nativeElement.children[0].children[0]; + } + + getBase64Image = () => { + return this.chart.toBase64Image(); + } generateLegend = () => { if (this.chart) { @@ -120,22 +118,28 @@ export class ChartComponent implements AfterViewInit, OnDestroy { refresh = () => { if (this.chart) { this.chart.update(); - this.cdRef.detectChanges(); + this.cdr.detectChanges(); } }; reinit = () => { - if (this.chart) { + if (!this.chart) return; this.chart.destroy(); this.initChart(); - } }; ngOnDestroy() { if (this.chart) { this.chart.destroy(); - this._initialized = false; + this.initialized = false; this.chart = null; } } + + ngOnChanges(changes: SimpleChanges) { + if (changes.data?.currentValue || changes.options?.currentValue) { + this.chart.destroy(); + this.initChart(); + } + } } diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.module.ts b/npm/ng-packs/packages/components/chart.js/src/chart.module.ts index 47e422174c..58a0ccc84f 100644 --- a/npm/ng-packs/packages/components/chart.js/src/chart.module.ts +++ b/npm/ng-packs/packages/components/chart.js/src/chart.module.ts @@ -1,11 +1,12 @@ +import { CommonModule } from '@angular/common'; import { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core'; import { ChartComponent } from './chart.component'; declare const Chart: any @NgModule({ - imports: [], - exports: [], + imports: [CommonModule], + exports: [ChartComponent], declarations: [ChartComponent], providers: [], }) From c78ce58f07a15322459e0e406465ebee454a1c6a Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 20 Sep 2021 08:23:52 +0300 Subject: [PATCH 08/26] remove chart.component from theme-shared --- .../lib/components/chart/chart.component.html | 11 -- .../lib/components/chart/chart.component.ts | 141 ------------------ .../theme-shared/src/lib/components/index.ts | 3 +- .../src/lib/theme-shared.module.ts | 2 - 4 files changed, 1 insertion(+), 156 deletions(-) delete mode 100644 npm/ng-packs/packages/theme-shared/src/lib/components/chart/chart.component.html delete mode 100644 npm/ng-packs/packages/theme-shared/src/lib/components/chart/chart.component.ts diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/chart/chart.component.html b/npm/ng-packs/packages/theme-shared/src/lib/components/chart/chart.component.html deleted file mode 100644 index 211614c90d..0000000000 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/chart/chart.component.html +++ /dev/null @@ -1,11 +0,0 @@ -
- -
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/chart/chart.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/chart/chart.component.ts deleted file mode 100644 index 16fe78d661..0000000000 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/chart/chart.component.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { - AfterViewInit, - ChangeDetectorRef, - Component, - ElementRef, - EventEmitter, - Input, - OnDestroy, - Output, -} from '@angular/core'; -import { BehaviorSubject } from 'rxjs'; -import { chartJsLoaded$ } from '../../utils/widget-utils'; -declare const Chart: any; - -@Component({ - selector: 'abp-chart', - templateUrl: './chart.component.html', -}) -export class ChartComponent implements AfterViewInit, OnDestroy { - @Input() type: string; - - @Input() options: any = {}; - - @Input() plugins: any[] = []; - - @Input() width: string; - - @Input() height: string; - - @Input() responsive = true; - - // eslint-disable-next-line @angular-eslint/no-output-on-prefix - @Output() readonly onDataSelect: EventEmitter = new EventEmitter(); - - @Output() readonly initialized = new BehaviorSubject(this); - - private _initialized: boolean; - - _data: any; - - chart: any; - - constructor(public el: ElementRef, private cdRef: ChangeDetectorRef) {} - - @Input() get data(): any { - return this._data; - } - - set data(val: any) { - this._data = val; - this.reinit(); - } - - get canvas() { - return this.el.nativeElement.children[0].children[0]; - } - - get base64Image() { - return this.chart.toBase64Image(); - } - - ngAfterViewInit() { - chartJsLoaded$.subscribe(() => { - this.testChartJs(); - - this.initChart(); - this._initialized = true; - }); - } - - testChartJs() { - try { - Chart; - } catch (error) { - throw new Error(`Chart is not found. Import the Chart from app.module like shown below: - import('chart.js'); - `); - } - } - - onCanvasClick = event => { - if (this.chart) { - const element = this.chart.getElementAtEvent(event); - const dataset = this.chart.getDatasetAtEvent(event); - if (element && element.length && dataset) { - this.onDataSelect.emit({ - originalEvent: event, - element: element[0], - dataset, - }); - } - } - }; - - initChart = () => { - const opts = this.options || {}; - opts.responsive = this.responsive; - - // allows chart to resize in responsive mode - if (opts.responsive && (this.height || this.width)) { - opts.maintainAspectRatio = false; - } - - this.chart = new Chart(this.canvas, { - type: this.type, - data: this.data, - options: this.options, - plugins: this.plugins, - }); - - this.cdRef.detectChanges(); - }; - - generateLegend = () => { - if (this.chart) { - return this.chart.generateLegend(); - } - }; - - refresh = () => { - if (this.chart) { - this.chart.update(); - this.cdRef.detectChanges(); - } - }; - - reinit = () => { - if (this.chart) { - this.chart.destroy(); - this.initChart(); - } - }; - - ngOnDestroy() { - if (this.chart) { - this.chart.destroy(); - this._initialized = false; - this.chart = null; - } - } -} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/index.ts index 45036680be..5fe1fbb572 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/index.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/index.ts @@ -1,13 +1,12 @@ export * from './breadcrumb/breadcrumb.component'; export * from './button/button.component'; -export * from './chart/chart.component'; export * from './confirmation/confirmation.component'; export * from './http-error-wrapper/http-error-wrapper.component'; export * from './loader-bar/loader-bar.component'; export * from './loading/loading.component'; -export * from './modal/modal.component'; export * from './modal/modal-close.directive'; export * from './modal/modal-ref.service'; +export * from './modal/modal.component'; export * from './sort-order-icon/sort-order-icon.component'; export * from './table-empty-message/table-empty-message.component'; export * from './table/table.component'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts index 11a2ce3493..8a9b6ed201 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts @@ -12,7 +12,6 @@ import { import { NgxDatatableModule } from '@swimlane/ngx-datatable'; import { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component'; import { ButtonComponent } from './components/button/button.component'; -import { ChartComponent } from './components/chart/chart.component'; import { ConfirmationComponent } from './components/confirmation/confirmation.component'; import { HttpErrorWrapperComponent } from './components/http-error-wrapper/http-error-wrapper.component'; import { LoaderBarComponent } from './components/loader-bar/loader-bar.component'; @@ -43,7 +42,6 @@ import { DateParserFormatter } from './utils/date-parser-formatter'; const declarationsWithExports = [ BreadcrumbComponent, ButtonComponent, - ChartComponent, ConfirmationComponent, LoaderBarComponent, LoadingComponent, From eefb875d78ec1da9971503dc4641512c1c9db218 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 20 Sep 2021 08:24:34 +0300 Subject: [PATCH 09/26] move widget utils to components package --- .../components/chart.js/src/widget-utils.ts | 4 ---- .../packages/theme-shared/src/lib/utils/index.ts | 1 - .../theme-shared/src/lib/utils/widget-utils.ts | 16 ---------------- 3 files changed, 21 deletions(-) delete mode 100644 npm/ng-packs/packages/theme-shared/src/lib/utils/widget-utils.ts diff --git a/npm/ng-packs/packages/components/chart.js/src/widget-utils.ts b/npm/ng-packs/packages/components/chart.js/src/widget-utils.ts index dfe81c973c..6e70e2cac5 100644 --- a/npm/ng-packs/packages/components/chart.js/src/widget-utils.ts +++ b/npm/ng-packs/packages/components/chart.js/src/widget-utils.ts @@ -1,5 +1,3 @@ -import { ReplaySubject } from 'rxjs'; - export function getRandomBackgroundColor(count) { const colors = []; @@ -12,5 +10,3 @@ export function getRandomBackgroundColor(count) { return colors; } - -export const chartJsLoaded$ = new ReplaySubject(1); diff --git a/npm/ng-packs/packages/theme-shared/src/lib/utils/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/utils/index.ts index 9f290b5ca3..8f159e0a49 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/utils/index.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/utils/index.ts @@ -1,3 +1,2 @@ export * from './date-parser-formatter'; export * from './validation-utils'; -export * from './widget-utils'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/utils/widget-utils.ts b/npm/ng-packs/packages/theme-shared/src/lib/utils/widget-utils.ts deleted file mode 100644 index dfe81c973c..0000000000 --- a/npm/ng-packs/packages/theme-shared/src/lib/utils/widget-utils.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ReplaySubject } from 'rxjs'; - -export function getRandomBackgroundColor(count) { - const colors = []; - - for (let i = 0; i < count; i++) { - const r = ((i + 5) * (i + 5) * 474) % 255; - const g = ((i + 5) * (i + 5) * 1600) % 255; - const b = ((i + 5) * (i + 5) * 84065) % 255; - colors.push('rgba(' + r + ', ' + g + ', ' + b + ', 0.7)'); - } - - return colors; -} - -export const chartJsLoaded$ = new ReplaySubject(1); From a3a707b64d444dafd9a17331b0942ad3d725234f Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 20 Sep 2021 08:24:51 +0300 Subject: [PATCH 10/26] imporove chart component --- .../apps/dev-app/src/app/app.module.ts | 2 -- .../chart.js/src/chart.component.ts | 18 +++++------ .../components/chart.js/src/chart.module.ts | 31 ++++--------------- 3 files changed, 14 insertions(+), 37 deletions(-) diff --git a/npm/ng-packs/apps/dev-app/src/app/app.module.ts b/npm/ng-packs/apps/dev-app/src/app/app.module.ts index 21eb869af0..9c89658357 100644 --- a/npm/ng-packs/apps/dev-app/src/app/app.module.ts +++ b/npm/ng-packs/apps/dev-app/src/app/app.module.ts @@ -1,5 +1,4 @@ import { AccountConfigModule } from '@abp/ng.account/config'; -import { ChartModule } from '@abp/ng.components/chart.js'; import { CoreModule } from '@abp/ng.core'; import { registerLocale } from '@abp/ng.core/locale'; import { IdentityConfigModule } from '@abp/ng.identity/config'; @@ -32,7 +31,6 @@ import { APP_ROUTE_PROVIDER } from './route.provider'; TenantManagementConfigModule.forRoot(), SettingManagementConfigModule.forRoot(), ThemeBasicModule.forRoot(), - ChartModule.forRoot() ], providers: [APP_ROUTE_PROVIDER], declarations: [AppComponent], diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts index abf9cae4e5..a1066eac66 100644 --- a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts +++ b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts @@ -9,7 +9,7 @@ import { OnChanges, OnDestroy, Output, - SimpleChanges + SimpleChanges, } from '@angular/core'; let Chart: any; @@ -49,8 +49,7 @@ export class ChartComponent implements AfterViewInit, OnDestroy, OnChanges { @Output() dataSelect = new EventEmitter(); - initialized: boolean - + @Output() initialized = new EventEmitter(); chart: any; @@ -60,7 +59,7 @@ export class ChartComponent implements AfterViewInit, OnDestroy, OnChanges { import('chart.js/auto').then(module => { Chart = module.default; this.initChart(); - this.initialized = true; + this.initialized.emit(true); }); } @@ -99,15 +98,15 @@ export class ChartComponent implements AfterViewInit, OnDestroy, OnChanges { data: this.data, options: this.options, }); - } + }; getCanvas = () => { return this.el.nativeElement.children[0].children[0]; - } + }; getBase64Image = () => { return this.chart.toBase64Image(); - } + }; generateLegend = () => { if (this.chart) { @@ -124,14 +123,13 @@ export class ChartComponent implements AfterViewInit, OnDestroy, OnChanges { reinit = () => { if (!this.chart) return; - this.chart.destroy(); - this.initChart(); + this.chart.destroy(); + this.initChart(); }; ngOnDestroy() { if (this.chart) { this.chart.destroy(); - this.initialized = false; this.chart = null; } } diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.module.ts b/npm/ng-packs/packages/components/chart.js/src/chart.module.ts index 58a0ccc84f..a34570dc84 100644 --- a/npm/ng-packs/packages/components/chart.js/src/chart.module.ts +++ b/npm/ng-packs/packages/components/chart.js/src/chart.module.ts @@ -1,30 +1,11 @@ import { CommonModule } from '@angular/common'; -import { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core'; +import { NgModule } from '@angular/core'; import { ChartComponent } from './chart.component'; -declare const Chart: any - @NgModule({ - imports: [CommonModule], - exports: [ChartComponent], - declarations: [ChartComponent], - providers: [], + imports: [CommonModule], + exports: [ChartComponent], + declarations: [ChartComponent], + providers: [], }) -export class ChartModule { - static forRoot(): ModuleWithProviders { - return { - ngModule: ChartModule, - providers: [{ - provide: APP_INITIALIZER, - multi: true, - useFactory: (injector: Injector) => () => { - import('chart.js/auto').then((module) => { - console.dir(module) - }) - return Promise.resolve() - }, - deps: [Injector] - }] - } - } -} +export class ChartModule {} From f8af3ed479881a12577407f78541da24a7f1931e Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Mon, 20 Sep 2021 12:11:37 +0300 Subject: [PATCH 11/26] rename tsconfig.base.json to tsconfig.json --- npm/ng-packs/apps/dev-app-e2e/tsconfig.json | 2 +- npm/ng-packs/apps/dev-app/tsconfig.json | 2 +- npm/ng-packs/packages/account-core/tsconfig.json | 2 +- npm/ng-packs/packages/account/tsconfig.json | 2 +- npm/ng-packs/packages/components/tsconfig.json | 2 +- npm/ng-packs/packages/core/tsconfig.json | 2 +- npm/ng-packs/packages/feature-management/tsconfig.json | 2 +- npm/ng-packs/packages/identity/tsconfig.json | 2 +- npm/ng-packs/packages/permission-management/tsconfig.json | 2 +- .../packages/schematics/src/utils/angular/tsconfig.ts | 4 ++-- npm/ng-packs/packages/setting-management/tsconfig.json | 2 +- npm/ng-packs/packages/tenant-management/tsconfig.json | 2 +- npm/ng-packs/packages/theme-basic/tsconfig.json | 2 +- npm/ng-packs/packages/theme-shared/tsconfig.json | 2 +- 14 files changed, 15 insertions(+), 15 deletions(-) diff --git a/npm/ng-packs/apps/dev-app-e2e/tsconfig.json b/npm/ng-packs/apps/dev-app-e2e/tsconfig.json index 08841a7f56..ae9c474004 100644 --- a/npm/ng-packs/apps/dev-app-e2e/tsconfig.json +++ b/npm/ng-packs/apps/dev-app-e2e/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/apps/dev-app/tsconfig.json b/npm/ng-packs/apps/dev-app/tsconfig.json index 54586174b3..13552f8b6a 100644 --- a/npm/ng-packs/apps/dev-app/tsconfig.json +++ b/npm/ng-packs/apps/dev-app/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/packages/account-core/tsconfig.json b/npm/ng-packs/packages/account-core/tsconfig.json index 62ebbd9464..546e940e20 100644 --- a/npm/ng-packs/packages/account-core/tsconfig.json +++ b/npm/ng-packs/packages/account-core/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/packages/account/tsconfig.json b/npm/ng-packs/packages/account/tsconfig.json index 62ebbd9464..546e940e20 100644 --- a/npm/ng-packs/packages/account/tsconfig.json +++ b/npm/ng-packs/packages/account/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/packages/components/tsconfig.json b/npm/ng-packs/packages/components/tsconfig.json index 62ebbd9464..546e940e20 100644 --- a/npm/ng-packs/packages/components/tsconfig.json +++ b/npm/ng-packs/packages/components/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/packages/core/tsconfig.json b/npm/ng-packs/packages/core/tsconfig.json index 692cc17b32..f34e44326c 100644 --- a/npm/ng-packs/packages/core/tsconfig.json +++ b/npm/ng-packs/packages/core/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/packages/feature-management/tsconfig.json b/npm/ng-packs/packages/feature-management/tsconfig.json index 62ebbd9464..546e940e20 100644 --- a/npm/ng-packs/packages/feature-management/tsconfig.json +++ b/npm/ng-packs/packages/feature-management/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/packages/identity/tsconfig.json b/npm/ng-packs/packages/identity/tsconfig.json index 62ebbd9464..546e940e20 100644 --- a/npm/ng-packs/packages/identity/tsconfig.json +++ b/npm/ng-packs/packages/identity/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/packages/permission-management/tsconfig.json b/npm/ng-packs/packages/permission-management/tsconfig.json index 62ebbd9464..546e940e20 100644 --- a/npm/ng-packs/packages/permission-management/tsconfig.json +++ b/npm/ng-packs/packages/permission-management/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/packages/schematics/src/utils/angular/tsconfig.ts b/npm/ng-packs/packages/schematics/src/utils/angular/tsconfig.ts index 290312f3f2..ae9075d94b 100644 --- a/npm/ng-packs/packages/schematics/src/utils/angular/tsconfig.ts +++ b/npm/ng-packs/packages/schematics/src/utils/angular/tsconfig.ts @@ -66,11 +66,11 @@ export function addTsConfigProjectReferences(paths: string[]): Rule { * Throws an exception when the base tsconfig doesn't exists. */ export function verifyBaseTsConfigExists(host: Tree): void { - if (host.exists('tsconfig.base.json')) { + if (host.exists('tsconfig.json')) { return; } throw new SchematicsException( - `Cannot find base TypeScript configuration file 'tsconfig.base.json'.`, + `Cannot find base TypeScript configuration file 'tsconfig.json'.`, ); } diff --git a/npm/ng-packs/packages/setting-management/tsconfig.json b/npm/ng-packs/packages/setting-management/tsconfig.json index 62ebbd9464..546e940e20 100644 --- a/npm/ng-packs/packages/setting-management/tsconfig.json +++ b/npm/ng-packs/packages/setting-management/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/packages/tenant-management/tsconfig.json b/npm/ng-packs/packages/tenant-management/tsconfig.json index 62ebbd9464..546e940e20 100644 --- a/npm/ng-packs/packages/tenant-management/tsconfig.json +++ b/npm/ng-packs/packages/tenant-management/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/packages/theme-basic/tsconfig.json b/npm/ng-packs/packages/theme-basic/tsconfig.json index 692cc17b32..f34e44326c 100644 --- a/npm/ng-packs/packages/theme-basic/tsconfig.json +++ b/npm/ng-packs/packages/theme-basic/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ diff --git a/npm/ng-packs/packages/theme-shared/tsconfig.json b/npm/ng-packs/packages/theme-shared/tsconfig.json index 692cc17b32..f34e44326c 100644 --- a/npm/ng-packs/packages/theme-shared/tsconfig.json +++ b/npm/ng-packs/packages/theme-shared/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.json", "files": [], "include": [], "references": [ From 7eb0b18eaaf22b3ec2cfcb6d026909b7a1b898bb Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Mon, 20 Sep 2021 12:11:45 +0300 Subject: [PATCH 12/26] rename tsconfig.base.json to tsconfig.json --- npm/ng-packs/{tsconfig.base.json => tsconfig.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename npm/ng-packs/{tsconfig.base.json => tsconfig.json} (100%) diff --git a/npm/ng-packs/tsconfig.base.json b/npm/ng-packs/tsconfig.json similarity index 100% rename from npm/ng-packs/tsconfig.base.json rename to npm/ng-packs/tsconfig.json From 1edbe4b501494a44bb207478370acbdf7f37399a Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Mon, 20 Sep 2021 12:12:00 +0300 Subject: [PATCH 13/26] fix some problems --- .../chart.js/src/chart.component.ts | 4 +- .../src/lib/tokens/append-content.token.ts | 3 - npm/ng-packs/yarn.lock | 1079 +++++++++-------- 3 files changed, 550 insertions(+), 536 deletions(-) diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts index a1066eac66..8f02803f5d 100644 --- a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts +++ b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts @@ -9,7 +9,7 @@ import { OnChanges, OnDestroy, Output, - SimpleChanges, + SimpleChanges } from '@angular/core'; let Chart: any; @@ -135,6 +135,8 @@ export class ChartComponent implements AfterViewInit, OnDestroy, OnChanges { } ngOnChanges(changes: SimpleChanges) { + if (!this.chart) return; + if (changes.data?.currentValue || changes.options?.currentValue) { this.chart.destroy(); this.initChart(); diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tokens/append-content.token.ts b/npm/ng-packs/packages/theme-shared/src/lib/tokens/append-content.token.ts index 2ba7898480..ac05d7e6fe 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tokens/append-content.token.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tokens/append-content.token.ts @@ -1,7 +1,6 @@ import { CONTENT_STRATEGY, DomInsertionService } from '@abp/ng.core'; import { inject, InjectionToken } from '@angular/core'; import styles from '../constants/styles'; -import { chartJsLoaded$ } from '../utils/widget-utils'; export const THEME_SHARED_APPEND_CONTENT = new InjectionToken('THEME_SHARED_APPEND_CONTENT', { providedIn: 'root', @@ -9,7 +8,5 @@ export const THEME_SHARED_APPEND_CONTENT = new InjectionToken('THEME_SHARE const domInsertion: DomInsertionService = inject(DomInsertionService); domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles)); - - import('chart.js').then(() => chartJsLoaded$.next(true)); }, }); diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index 0af1a56c06..ccd80d41f1 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -141,24 +141,24 @@ "@angular-devkit/core" "10.2.0" rxjs "6.6.2" -"@angular-devkit/architect@0.1202.5": - version "0.1202.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1202.5.tgz#6e08b4b5d629a37479fb7aacda08e755541809ae" - integrity sha512-HiF8RceDrvP7m8Qm53KWVpekESX0UIK4/tOg9mgFMcS/2utRnPzuu4WbfrcY9DRrsoMWLXQs6j/UVXqf8PzXJw== +"@angular-devkit/architect@0.1202.6": + version "0.1202.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1202.6.tgz#0e6e671e616dba5aad2dc5d6f1db906ca6268fa4" + integrity sha512-DQHK5VGfPof1TuSmRmt2Usw2BuNVLzxKSSy7+tEJbYzqf8N/wQO+1M67ye8qf8gAU88xGo378dD9++DFc/PJZA== dependencies: - "@angular-devkit/core" "12.2.5" + "@angular-devkit/core" "12.2.6" rxjs "6.6.7" "@angular-devkit/build-angular@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-12.2.5.tgz#800c79e56b6f473c8fc0a2465e242f0b490c3854" - integrity sha512-v44FAFMGSXJLKx25REXdoTdW/WzNXV3BDJam9ZKHFOrdtwJek4D/tEdtNHiQP4HberOHzmVjvKffa5VYXzZ40g== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-12.2.6.tgz#a6185ce4495dd9f3949a4cb64022c5e3a651752c" + integrity sha512-FMmN7tuDtAqeCqUv65vzOSnwIG0MOLraZRUOXFqTN10jAE7DCqR97QSNNOhBPuqJcbv9IFxGMVbL1KLpsGwgcA== dependencies: "@ampproject/remapping" "1.0.1" - "@angular-devkit/architect" "0.1202.5" - "@angular-devkit/build-optimizer" "0.1202.5" - "@angular-devkit/build-webpack" "0.1202.5" - "@angular-devkit/core" "12.2.5" + "@angular-devkit/architect" "0.1202.6" + "@angular-devkit/build-optimizer" "0.1202.6" + "@angular-devkit/build-webpack" "0.1202.6" + "@angular-devkit/core" "12.2.6" "@babel/core" "7.14.8" "@babel/generator" "7.14.8" "@babel/helper-annotate-as-pure" "7.14.5" @@ -170,7 +170,7 @@ "@babel/template" "7.14.5" "@discoveryjs/json-ext" "0.5.3" "@jsdevtools/coverage-istanbul-loader" "3.0.5" - "@ngtools/webpack" "12.2.5" + "@ngtools/webpack" "12.2.6" ansi-colors "4.1.1" babel-loader "8.2.2" browserslist "^4.9.1" @@ -232,21 +232,21 @@ "@angular-devkit/architect" "0.1002.0" rxjs "6.6.2" -"@angular-devkit/build-optimizer@0.1202.5": - version "0.1202.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.5.tgz#c5eb6a5f453750fdf50af92df33dea65884ea835" - integrity sha512-ni3OyBQq7y1Jk9U7CtwWMRoI+1TWjQYVdGRWt5JgqvLk0hZcaLoapGwUypBV+CdKvC0/0V+k84RiO5wvs5XpFQ== +"@angular-devkit/build-optimizer@0.1202.6": + version "0.1202.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.6.tgz#53b25036a0a87d1a5944a053bab207740956ecc7" + integrity sha512-r9BZon2hriHVDoAcnYmsL9Rs84Nh7YUuioiDeJhk1qyuIVHL3akFTndl+ISQQIbNvb/kgZZ93DlYFw4D6DZ/NQ== dependencies: source-map "0.7.3" tslib "2.3.0" typescript "4.3.5" -"@angular-devkit/build-webpack@0.1202.5": - version "0.1202.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1202.5.tgz#96f345e78f71744b22e1c64ddfda9c93c98cc3e3" - integrity sha512-wqU2t2zUCZi+fjhuZzFko3eTyqXP6vjdqA3BZQwr3pEhL7IEOvlN4EUYqWAi+h+4SrTtAhk6vZ7m41Hr0y2Ykw== +"@angular-devkit/build-webpack@0.1202.6": + version "0.1202.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1202.6.tgz#2cd4ee1654adbdddceb62a35a3fe50f3f2e3107c" + integrity sha512-SEOIRmfv3KvoDqp9/n0d/99mDVRFxtkAOEkYlzylf4IUb6eP6Oux2+FcAGCIWXiWeedYImt+oK9q9l5iryfAOg== dependencies: - "@angular-devkit/architect" "0.1202.5" + "@angular-devkit/architect" "0.1202.6" rxjs "6.6.7" "@angular-devkit/core@10.2.0": @@ -283,10 +283,10 @@ rxjs "6.6.7" source-map "0.7.3" -"@angular-devkit/core@12.2.5": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-12.2.5.tgz#928fc35b28e1ed84243b0c09db97be1a9c85acdb" - integrity sha512-UBo0Q9nVGPxC+C1PONSzaczPLv5++5Q7PC2orZepDbWmY0jUDwe9VVJrmp8EhLZbzVKFpyCIs1ZE8h0s0LP1zA== +"@angular-devkit/core@12.2.6": + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-12.2.6.tgz#594ef08e8441c7fef57c7949abde603faece06ce" + integrity sha512-E+OhY34Vmwyy1/PaX/nzao40XM70wOr7Urh00sAtV8sPLXMLeW0gHk4DUchCKohxQkrIL0AxYt1aeUVgIc7bSA== dependencies: ajv "8.6.2" ajv-formats "2.1.0" @@ -296,12 +296,12 @@ source-map "0.7.3" "@angular-devkit/schematics-cli@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics-cli/-/schematics-cli-12.2.5.tgz#93a264fe8e8a5fc7b1974a8da13478a8866b2c86" - integrity sha512-JJTj8DisB4jYh61G7bJauJ6TI3VQ+nngvPgH47+p0y2OhmlG8/1osIrxmUXBlFl63DwIIJaE+xFKjnBga+Apog== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics-cli/-/schematics-cli-12.2.6.tgz#604d436870e40b62ac6dbf92c66ece3147b4feac" + integrity sha512-9w3VIux8LxKhAbqCirU4vMoO3Kvi+RTZ7pWsXRrF3oLq2VuaUdkSWqSXWnyWmUrWfPjfES6jTEKSN3zqJF4S0A== dependencies: - "@angular-devkit/core" "12.2.5" - "@angular-devkit/schematics" "12.2.5" + "@angular-devkit/core" "12.2.6" + "@angular-devkit/schematics" "12.2.6" ansi-colors "4.1.1" inquirer "8.1.2" minimist "1.2.5" @@ -316,12 +316,12 @@ ora "5.4.1" rxjs "6.6.7" -"@angular-devkit/schematics@12.2.5": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-12.2.5.tgz#2ca20be4bf5b411e1e29eceb479cb745bda50e16" - integrity sha512-8WAdZ39FZqbU1/ZQQrK+7PeRuj6QUGlxFUgoVXk5nzRbpZo/OSaKhPoC7sC1A0EU+7udLp5vT7R12sDz7Mr9vQ== +"@angular-devkit/schematics@12.2.6": + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-12.2.6.tgz#5ea6bc8a0bf9194688c6dd55d2de276047cab4c5" + integrity sha512-CmDNOdJg08p5QrV8dNdg3O5ErYM1hJT06PLnVZzTWkShAL0y/3zxXAP/Wwdg0vAvt9Kh38jvMtC3YTCOThR/hA== dependencies: - "@angular-devkit/core" "12.2.5" + "@angular-devkit/core" "12.2.6" ora "5.4.1" rxjs "6.6.7" @@ -358,9 +358,9 @@ eslint-scope "^5.1.0" "@angular/animations@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-12.2.5.tgz#b5b534f9f6ba65d1249d937bbad01de6cc9adcac" - integrity sha512-a8jRimgrATq2CS95SO5yjsZo2d4FbfmN2SrPu6lZjWIdstXm4KQSJFslyxovhoUjGNu5cZgzfXTvWkXRxJYCxA== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-12.2.6.tgz#6d544ec7ff0b5f149021d82a92060d3e2a6959c9" + integrity sha512-YVAaQvhNHyeRhHRnBofuLMtpmArv01Dyo5poc1VOBNdr+0AVGo+NIFM0nbXSMscxdeVTedgPdZK88knsIojlag== dependencies: tslib "^2.2.0" @@ -374,23 +374,23 @@ parse5 "^5.0.0" "@angular/cdk@^12.1.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-12.2.5.tgz#005c91eba34aa015a5a67b309b046008f8e69a5d" - integrity sha512-sB+chDISuQ2orEgWumVkEaaQ2Mkf5SDBlNGMwgwUV5a2eSp0wDprZS+3+H8lHc533z2Y4GOh6Apklku8XQT5qw== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-12.2.6.tgz#12aca217e30d96625b38ab83c0ca445f074ba41b" + integrity sha512-93H08rrsxJfY3ZvHINkFmCR4C0R0vFog4+uZ6PuW1YAZGClGVfivzjvMRN5hwqbANLV5xWzgsipMc2x0gIzcpg== dependencies: tslib "^2.2.0" optionalDependencies: parse5 "^5.0.0" "@angular/cli@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-12.2.5.tgz#72e66fd6c9b503eace1644daf49731024567d061" - integrity sha512-O/NqRaFGx2jns03oWwhWBpilV4s7B8Zie6rgo2hJty1T3douGkK5kTO38N4Lebeayw8LTiPhT/JOrQTfFgXSjw== - dependencies: - "@angular-devkit/architect" "0.1202.5" - "@angular-devkit/core" "12.2.5" - "@angular-devkit/schematics" "12.2.5" - "@schematics/angular" "12.2.5" + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-12.2.6.tgz#8f15667721004c769f1bdcd889ac0bc4eebbd235" + integrity sha512-nBCynOi5OVVAXA4ktsVhWP+UyWjjR/7+TlEjNgEfcbtlwkE+HIki+oHETAtXKdn5nPvNum3OXPLZPLX2B8MiRA== + dependencies: + "@angular-devkit/architect" "0.1202.6" + "@angular-devkit/core" "12.2.6" + "@angular-devkit/schematics" "12.2.6" + "@schematics/angular" "12.2.6" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" debug "4.3.2" @@ -408,16 +408,16 @@ uuid "8.3.2" "@angular/common@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-12.2.5.tgz#a377fb9147e68fb343a762ad0707c85c01b02e74" - integrity sha512-iwyaGPx7ILTJn91ed7VtYkvVRRezaZ0EE2V5DzVXwCsBQyzCrBYz/Uo2udVDsJ2FXXhpxa2VjnkW55Uxl9wM0g== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-12.2.6.tgz#373f0a347088f7c46d2c94d89d3281613a920644" + integrity sha512-qDFmiNt1ptz2mVqac8jCXH0kEjcuyoLQTClMtx05R0LJ7EfXU9eBhGcNxiMXsKGkkNf1s2ksPwFz0dNWyZWDcg== dependencies: tslib "^2.2.0" "@angular/compiler-cli@^12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-12.2.5.tgz#4d5221d8131cffadb50e038e76f6d2b7f65a59ef" - integrity sha512-KVpgkWUGZYRPvmJOqY1CZwjvc7VE0DYDPxmvXH/S1C6rzpl/UOTxYtDynxiNzuvLeV0oOnlcOGd4/BmMZJPh/A== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-12.2.6.tgz#d83e39110f94c2f68cc0f947c6f3840f9969bbd6" + integrity sha512-1W7LYqSHJjXO12tR7yUA3TspXXAbTE595Hz2bUCbHISaOUOqVlN6kCd9ccNQUrRL/GEaskAgIK9tNhngMD3LOA== dependencies: "@babel/core" "^7.8.6" "@babel/types" "^7.8.6" @@ -435,30 +435,30 @@ yargs "^17.0.0" "@angular/compiler@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-12.2.5.tgz#6e5b583b316fb99d8ed49ba817c031c1846b9d03" - integrity sha512-J73E3hao95T8+/+hWuCqGyXs9QCPoSsCTXmSPayFlYJW3QF5SG2vhjnf4SAgtNbUBHQWAIwGKxQTqD3VbtvP1A== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-12.2.6.tgz#6fe022ee7f6c35fb208cb834e02c4c133f3ef0a6" + integrity sha512-EhY5xuH0SNTdSDEaw6iD6R9nOb2c3W5baYnn3cSahggvXHlG1dEA7QQ4FS1SJFg32TP4IXHn21XU7KHRzaDx0w== dependencies: tslib "^2.2.0" "@angular/core@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-12.2.5.tgz#52eaabb648a2335ec88ca2e9f4c947a40e2e3560" - integrity sha512-bwxxEy1UrV+hWzjT6ow/Ge8upebglJwlWuKadPdd3ZVrWKPI0saoUUBv4S8EGiIxyW821GfEbzWzmBYUSUCiGQ== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-12.2.6.tgz#061279fc7843ccab2a61460a13978d45daa25bfc" + integrity sha512-yM64SrhKbuw1/9uepz98C7H7yPK1yUc8ni0lsPmMf2JYD850xxya9+fTTc4b/FmotHHadOeRkX1H+Wd3Ylu1Gw== dependencies: tslib "^2.2.0" "@angular/forms@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-12.2.5.tgz#c190c1873ba856101323037147a0be906817bc82" - integrity sha512-Sty4MMrmUrm7KYbYYAkA6egwIMFJ8D8G6ds5W79fN7K3B3LGYtMTRuMIBYQeSvdk8AN5+Evt6BUwlL8PMYq9Rg== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-12.2.6.tgz#89bb8084f15d699ddd26ba45e6feb9eb8745e8ca" + integrity sha512-lY+A1q63C+ZIpbeVp9JP921lLawn7zELslV+DMd0hix7AXCG175OayeQPLXGFbHfYDRHL8QHTT+7X99k7sd3UA== dependencies: tslib "^2.2.0" "@angular/language-service@^12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-12.2.5.tgz#30521f85fc800eaad2dac190582dffe418e347d4" - integrity sha512-UypVxx1/ArXvYiSqzpIc/MUv+NkyQzMgZ96z2rG2ALqEVe+/m0AZEtvT/pD94Z0wlZDeMVaToD3OhRkQ4om2aA== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-12.2.6.tgz#c6b90ac820323d01d3fa4e0ce93a5fb1dcafa0e3" + integrity sha512-4oKiWgJFCFIVIdMUgyNl/SA++rYjLa+rj0fU+Coi9lwtSpBIOWdLd9KnwtaU/JbdZjx1SSogy9+T9ylT/y0CMw== "@angular/localize@~10.0.10": version "10.0.14" @@ -470,23 +470,23 @@ yargs "15.3.0" "@angular/platform-browser-dynamic@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.5.tgz#afce4e8d4127a3f9762ee09dc1774662d35732ad" - integrity sha512-GIAMw+KFYVFFtyvC3Z6znxLCJdZx/IvpfHQVekpQumiv291cng2jSamU3FZjV3xZKXfccS4I4hIXFX85EBMRWA== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.6.tgz#534d7e16d41a938b868a322806975950867bd5ed" + integrity sha512-ZS/ZZJOr7D9tycw6tFsvBHDZ/PDrGS6N+LBfKwLq8gvyK0LGJ4fk2auoRrO4Y6hmGL6GeJC8BdKtrn40jt2FBQ== dependencies: tslib "^2.2.0" "@angular/platform-browser@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-12.2.5.tgz#b53f1e9cad5712961e4ccec1c167364b9634f51d" - integrity sha512-2Vs+0Zx87lGYvC3Bkzy9eT0yXXvMd0e8vrEJ1oIdxfkRhbE/wTL1+LA8JlT5rROqcZwY4joOPiHC9jVFw6dDCQ== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-12.2.6.tgz#c3985894407beba09a222cdfb96ceab134613674" + integrity sha512-uB3hgFhZ6sQM41rLEfyDourzJod3j7l2zr/wuF7I+dDN65ooYz+9inS49jy5YEUMesy9SSfh2AD8A+FZFLVqLA== dependencies: tslib "^2.2.0" "@angular/router@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-12.2.5.tgz#532930124fe15263bcc976dcef9d3f9a771ebd73" - integrity sha512-rfaHzi6ZrLFqdebEQTMPxVEwLuA8MBGOUzyekhLjGTvKwc7L2/m303LPIDECRFyCSik3EIxGLvzPET0l+DVgAw== + version "12.2.6" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-12.2.6.tgz#67707f1963c28b124a636147c948a0950d37398f" + integrity sha512-ao7Xqvopo14bVybOE3dUmIiVeJ3wJ33xauY4oqtoHw+KoBlhFbvwIV7MVUM95yFejc+2ZbUEar/bJUOkXuTCMg== dependencies: tslib "^2.2.0" @@ -729,18 +729,18 @@ "@babel/types" "^7.15.4" "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.14.8", "@babel/helper-module-transforms@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz#962cc629a7f7f9a082dd62d0307fa75fe8788d7c" - integrity sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw== + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226" + integrity sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw== dependencies: "@babel/helper-module-imports" "^7.15.4" "@babel/helper-replace-supers" "^7.15.4" "@babel/helper-simple-access" "^7.15.4" "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-validator-identifier" "^7.15.7" "@babel/template" "^7.15.4" "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/types" "^7.15.6" "@babel/helper-optimise-call-expression@^7.15.4": version "7.15.4" @@ -794,10 +794,10 @@ dependencies: "@babel/types" "^7.15.4" -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" - integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== +"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== "@babel/helper-validator-option@^7.14.5": version "7.14.5" @@ -833,9 +833,9 @@ js-tokens "^4.0.0" "@babel/parser@^7.1.0", "@babel/parser@^7.14.5", "@babel/parser@^7.14.8", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.7.2", "@babel/parser@^7.8.3": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.6.tgz#043b9aa3c303c0722e5377fef9197f4cf1796549" - integrity sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q== + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae" + integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g== "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": version "7.15.4" @@ -1705,27 +1705,27 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^27.0.6", "@jest/console@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.1.1.tgz#e1eb8ef8a410e75e80bb17429047ed5d43411d20" - integrity sha512-VpQJRsWSeAem0zpBjeRtDbcD6DlbNoK11dNYt+PSQ+DDORh9q2/xyEpErfwgnLjWX0EKkSZmTGx/iH9Inzs6vQ== +"@jest/console@^27.0.6", "@jest/console@^27.2.0": + version "27.2.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.2.0.tgz#57f702837ec52899be58c3794dce5941c77a8b63" + integrity sha512-35z+RqsK2CCgNxn+lWyK8X4KkaDtfL4BggT7oeZ0JffIiAiEYFYPo5B67V50ZubqDS1ehBrdCR2jduFnIrZOYw== dependencies: "@jest/types" "^27.1.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.1.1" - jest-util "^27.1.1" + jest-message-util "^27.2.0" + jest-util "^27.2.0" slash "^3.0.0" -"@jest/core@^27.0.3", "@jest/core@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.1.1.tgz#d9d42214920cb96c2a6cc48517cf62d4351da3aa" - integrity sha512-oCkKeTgI0emznKcLoq5OCD0PhxCijA4l7ejDnWW3d5bgSi+zfVaLybVqa+EQOxpNejQWtTna7tmsAXjMN9N43Q== +"@jest/core@^27.0.3", "@jest/core@^27.2.0": + version "27.2.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.2.0.tgz#61fc27b244e9709170ed9ffe41b006add569f1b3" + integrity sha512-E/2NHhq+VMo18DpKkoty8Sjey8Kps5Cqa88A8NP757s6JjYqPdioMuyUBhDiIOGCdQByEp0ou3jskkTszMS0nw== dependencies: - "@jest/console" "^27.1.1" - "@jest/reporters" "^27.1.1" - "@jest/test-result" "^27.1.1" - "@jest/transform" "^27.1.1" + "@jest/console" "^27.2.0" + "@jest/reporters" "^27.2.0" + "@jest/test-result" "^27.2.0" + "@jest/transform" "^27.2.0" "@jest/types" "^27.1.1" "@types/node" "*" ansi-escapes "^4.2.1" @@ -1734,54 +1734,54 @@ exit "^0.1.2" graceful-fs "^4.2.4" jest-changed-files "^27.1.1" - jest-config "^27.1.1" - jest-haste-map "^27.1.1" - jest-message-util "^27.1.1" + jest-config "^27.2.0" + jest-haste-map "^27.2.0" + jest-message-util "^27.2.0" jest-regex-util "^27.0.6" - jest-resolve "^27.1.1" - jest-resolve-dependencies "^27.1.1" - jest-runner "^27.1.1" - jest-runtime "^27.1.1" - jest-snapshot "^27.1.1" - jest-util "^27.1.1" - jest-validate "^27.1.1" - jest-watcher "^27.1.1" + jest-resolve "^27.2.0" + jest-resolve-dependencies "^27.2.0" + jest-runner "^27.2.0" + jest-runtime "^27.2.0" + jest-snapshot "^27.2.0" + jest-util "^27.2.0" + jest-validate "^27.2.0" + jest-watcher "^27.2.0" micromatch "^4.0.4" p-each-series "^2.1.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.1.1.tgz#a1f7a552f7008f773988b9c0e445ede35f77bbb7" - integrity sha512-+y882/ZdxhyqF5RzxIrNIANjHj991WH7jifdcplzMDosDUOyCACFYUyVTBGbSTocbU+s1cesroRzkwi8hZ9SHg== +"@jest/environment@^27.2.0": + version "27.2.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.2.0.tgz#48d1dbfa65f8e4a5a5c6cbeb9c59d1a5c2776f6b" + integrity sha512-iPWmQI0wRIYSZX3wKu4FXHK4eIqkfq6n1DCDJS+v3uby7SOXrHvX4eiTBuEdSvtDRMTIH2kjrSkjHf/F9JIYyQ== dependencies: - "@jest/fake-timers" "^27.1.1" + "@jest/fake-timers" "^27.2.0" "@jest/types" "^27.1.1" "@types/node" "*" jest-mock "^27.1.1" -"@jest/fake-timers@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.1.1.tgz#557a1c0d067d33bcda4dfae9a7d8f96a15a954b5" - integrity sha512-u8TJ5VlsVYTsGFatoyIae2l25pku4Bu15QCPTx2Gs5z+R//Ee3tHN85462Vc9yGVcdDvgADbqNkhOLxbEwPjMQ== +"@jest/fake-timers@^27.2.0": + version "27.2.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.2.0.tgz#560841bc21ae7fbeff0cbff8de8f5cf43ad3561d" + integrity sha512-gSu3YHvQOoVaTWYGgHFB7IYFtcF2HBzX4l7s47VcjvkUgL4/FBnE20x7TNLa3W6ABERtGd5gStSwsA8bcn+c4w== dependencies: "@jest/types" "^27.1.1" "@sinonjs/fake-timers" "^7.0.2" "@types/node" "*" - jest-message-util "^27.1.1" + jest-message-util "^27.2.0" jest-mock "^27.1.1" - jest-util "^27.1.1" + jest-util "^27.2.0" -"@jest/globals@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.1.1.tgz#cfe5f4d5b37483cef62b79612128ccc7e3c951d8" - integrity sha512-Q3JcTPmY+DAEHnr4MpnBV3mwy50EGrTC6oSDTNnW7FNGGacTJAfpWNk02D7xv422T1OzK2A2BKx+26xJOvHkyw== +"@jest/globals@^27.2.0": + version "27.2.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.2.0.tgz#4d7085f51df5ac70c8240eb3501289676503933d" + integrity sha512-raqk9Gf9WC3hlBa57rmRmJfRl9hom2b+qEE/ifheMtwn5USH5VZxzrHHOZg0Zsd/qC2WJ8UtyTwHKQAnNlDMdg== dependencies: - "@jest/environment" "^27.1.1" + "@jest/environment" "^27.2.0" "@jest/types" "^27.1.1" - expect "^27.1.1" + expect "^27.2.0" "@jest/reporters@27.0.6": version "27.0.6" @@ -1813,15 +1813,15 @@ terminal-link "^2.0.0" v8-to-istanbul "^8.0.0" -"@jest/reporters@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.1.1.tgz#ee5724092f197bb78c60affb9c6f34b6777990c2" - integrity sha512-cEERs62n1P4Pqox9HWyNOEkP57G95aK2mBjB6D8Ruz1Yc98fKH53b58rlVEnsY5nLmkLNZk65fxNi9C0Yds/8w== +"@jest/reporters@^27.2.0": + version "27.2.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.2.0.tgz#629886d9a42218e504a424889a293abb27919e25" + integrity sha512-7wfkE3iRTLaT0F51h1mnxH3nQVwDCdbfgXiLuCcNkF1FnxXLH9utHqkSLIiwOTV1AtmiE0YagHbOvx4rnMP/GA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.1.1" - "@jest/test-result" "^27.1.1" - "@jest/transform" "^27.1.1" + "@jest/console" "^27.2.0" + "@jest/test-result" "^27.2.0" + "@jest/transform" "^27.2.0" "@jest/types" "^27.1.1" chalk "^4.0.0" collect-v8-coverage "^1.0.0" @@ -1833,10 +1833,10 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^27.1.1" - jest-resolve "^27.1.1" - jest-util "^27.1.1" - jest-worker "^27.1.1" + jest-haste-map "^27.2.0" + jest-resolve "^27.2.0" + jest-util "^27.2.0" + jest-worker "^27.2.0" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" @@ -1862,30 +1862,30 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-result@^27.0.6", "@jest/test-result@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.1.1.tgz#1086b39af5040b932a55e7f1fa1bc4671bed4781" - integrity sha512-8vy75A0Jtfz9DqXFUkjC5Co/wRla+D7qRFdShUY8SbPqBS3GBx3tpba7sGKFos8mQrdbe39n+c1zgVKtarfy6A== +"@jest/test-result@^27.0.6", "@jest/test-result@^27.2.0": + version "27.2.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.2.0.tgz#377b46a41a6415dd4839fd0bed67b89fecea6b20" + integrity sha512-JPPqn8h0RGr4HyeY1Km+FivDIjTFzDROU46iAvzVjD42ooGwYoqYO/MQTilhfajdz6jpVnnphFrKZI5OYrBONA== dependencies: - "@jest/console" "^27.1.1" + "@jest/console" "^27.2.0" "@jest/types" "^27.1.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.0.6", "@jest/test-sequencer@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.1.1.tgz#cea3722ec6f6330000240fd999ad3123adaf5992" - integrity sha512-l8zD3EdeixvwmLNlJoMX3hhj8iIze95okj4sqmBzOq/zW8gZLElUveH4bpKEMuR+Nweazjlwc7L6g4C26M/y6Q== +"@jest/test-sequencer@^27.0.6", "@jest/test-sequencer@^27.2.0": + version "27.2.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.2.0.tgz#b02b507687825af2fdc84e90c539d36fd8cf7bc9" + integrity sha512-PrqarcpzOU1KSAK7aPwfL8nnpaqTMwPe7JBPnaOYRDSe/C6AoJiL5Kbnonqf1+DregxZIRAoDg69R9/DXMGqXA== dependencies: - "@jest/test-result" "^27.1.1" + "@jest/test-result" "^27.2.0" graceful-fs "^4.2.4" - jest-haste-map "^27.1.1" - jest-runtime "^27.1.1" + jest-haste-map "^27.2.0" + jest-runtime "^27.2.0" -"@jest/transform@^27.0.6", "@jest/transform@^27.1.1": - version "27.1.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.1.1.tgz#51a22f5a48d55d796c02757117c02fcfe4da13d7" - integrity sha512-qM19Eu75U6Jc5zosXXVnq900Nl9JDpoGaZ4Mg6wZs7oqbu3heYSMOZS19DlwjlhWdfNRjF4UeAgkrCJCK3fEXg== +"@jest/transform@^27.0.6", "@jest/transform@^27.2.0": + version "27.2.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.2.0.tgz#e7e6e49d2591792db2385c33cdbb4379d407068d" + integrity sha512-Q8Q/8xXIZYllk1AF7Ou5sV3egOZsdY/Wlv09CSbcexBRcC1Qt6lVZ7jRFAZtbHsEEzvOCyFEC4PcrwKwyjXtCg== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^27.1.1" @@ -1894,9 +1894,9 @@ convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^27.1.1" + jest-haste-map "^27.2.0" jest-regex-util "^27.0.6" - jest-util "^27.1.1" + jest-util "^27.2.0" micromatch "^4.0.4" pirates "^4.0.1" slash "^3.0.0" @@ -2629,10 +2629,10 @@ replace-in-file "6.2.0" tslib "^2.1.0" -"@ngtools/webpack@12.2.5": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-12.2.5.tgz#f0077e302434b00bc67924142c88a844f320f7b9" - integrity sha512-wc+ovfJucCxAjoP3ExnJll8K3nAoNCiFyDEO8dgHkriY/IWhGdwOu1eduHgfT/mWS40Awj/inJJir9oTi4YBVg== +"@ngtools/webpack@12.2.6": + version "12.2.6" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-12.2.6.tgz#9bb1c1b9b21deceee183e5eae96db7350caefdcd" + integrity sha512-LuQXKVH0m85+GT8tldrSBmmgyHycxXkbLaJNtuYGK358dJ9tBdyOPXn7GZzHvpVL5Zdpu/ahuFN2PbFzN+qX/A== "@ngx-validate/core@^0.0.13": version "0.0.13" @@ -2891,9 +2891,9 @@ yargs-parser "20.0.0" "@octokit/auth-token@^2.4.4": - version "2.4.5" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3" - integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" + integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== dependencies: "@octokit/types" "^6.0.3" @@ -2928,10 +2928,10 @@ "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^10.1.0": - version "10.1.1" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-10.1.1.tgz#74607482d193e9c9cc7e23ecf04b1bde3eabb6d8" - integrity sha512-ygp/6r25Ezb1CJuVMnFfOsScEtPF0zosdTJDZ7mZ+I8IULl7DP1BS5ZvPRwglcarGPXOvS5sHdR0bjnVDDfQdQ== +"@octokit/openapi-types@^10.2.2": + version "10.2.2" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-10.2.2.tgz#6c1c839d7d169feabaf1d2a69c79439c75d979cd" + integrity sha512-EVcXQ+ZrC04cg17AMg1ofocWMxHDn17cB66ZHgYc0eUwjFtxS0oBzkyw2VqIrHBwVgtfoYrq1WMQfQmMjUwthw== "@octokit/plugin-enterprise-rest@^6.0.1": version "6.0.1" @@ -2939,11 +2939,11 @@ integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== "@octokit/plugin-paginate-rest@^2.16.0": - version "2.16.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.16.0.tgz#09dbda2e5fbca022e3cdf76b63618f7b357c9f0c" - integrity sha512-8YYzALPMvEZ35kgy5pdYvQ22Roz+BIuEaedO575GwE2vb/ACDqQn0xQrTJR4tnZCJn7pi8+AWPVjrFDaERIyXQ== + version "2.16.3" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.16.3.tgz#6dbf74a12a53e04da6ca731d4c93f20c0b5c6fe9" + integrity sha512-kdc65UEsqze/9fCISq6BxLzeB9qf0vKvKojIfzgwf4tEF+Wy6c9dXnPFE6vgpoDFB1Z5Jek5WFVU6vL1w22+Iw== dependencies: - "@octokit/types" "^6.26.0" + "@octokit/types" "^6.28.1" "@octokit/plugin-request-log@^1.0.4": version "1.0.4" @@ -2951,11 +2951,11 @@ integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== "@octokit/plugin-rest-endpoint-methods@^5.9.0": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.10.1.tgz#9683c4cf476fb6c80f668c4b468919e69c71f66a" - integrity sha512-Rf1iMl40I0dIxjh1g32qZ6Ym/uT8QWZMm2vYGG5Vi8SX1MwZvbuxEGXYgmzTUWSD3PYWSLilE2+4L8kmdLGTMg== + version "5.10.4" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.10.4.tgz#97e85eb7375e30b9bf193894670f9da205e79408" + integrity sha512-Dh+EAMCYR9RUHwQChH94Skl0lM8Fh99auT8ggck/xTzjJrwVzvsd0YH68oRPqp/HxICzmUjLfaQ9sy1o1sfIiA== dependencies: - "@octokit/types" "^6.27.0" + "@octokit/types" "^6.28.1" deprecation "^2.3.1" "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": @@ -2989,12 +2989,12 @@ "@octokit/plugin-request-log" "^1.0.4" "@octokit/plugin-rest-endpoint-methods" "^5.9.0" -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.26.0", "@octokit/types@^6.27.0": - version "6.27.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.27.0.tgz#2ffcd4d1cf344285f4151978c6fd36a2edcdf922" - integrity sha512-ha27f8DToxXBPEJdzHCCuqpw7AgKfjhWGdNf3yIlBAhAsaexBXTfWw36zNSsncALXGvJq4EjLy1p3Wz45Aqb4A== +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.28.1": + version "6.28.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.28.1.tgz#ab990d1fe952226055e81c7650480e6bacfb877c" + integrity sha512-XlxDoQLFO5JnFZgKVQTYTvXRsQFfr/GwDUU108NJ9R5yFPkA2qXhTJjYuul3vE4eLXP40FA2nysOu2zd6boE+w== dependencies: - "@octokit/openapi-types" "^10.1.0" + "@octokit/openapi-types" "^10.2.2" "@phenomnomnominal/tsquery@4.1.1": version "4.1.1" @@ -3044,13 +3044,13 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@schematics/angular@12.2.5", "@schematics/angular@~12.2.0": - version "12.2.5" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-12.2.5.tgz#5ff5f0fdd219a5994f9f4b94ec4f6b24f63d672b" - integrity sha512-Ln2GyO7Y00PrQKjqCONCDb4dwGzGboH3zIJvicWzFO+ZgkNLr/dsitGKm8b8OfR/UEiBcnK72xwPj9FWfXA4EQ== +"@schematics/angular@12.2.6", "@schematics/angular@~12.2.0": + version "12.2.6" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-12.2.6.tgz#bf48e80e9b1db406d0eb7a5200d0f8661d1d05f2" + integrity sha512-53yVIB43jPpqitJXT5IxPm9Kq1P8AyRgzrCIKAl4mESsPsOIFR6ZCpuNRlaumEinHnbMpgzZ2M+RlialzAOS6w== dependencies: - "@angular-devkit/core" "12.2.5" - "@angular-devkit/schematics" "12.2.5" + "@angular-devkit/core" "12.2.6" + "@angular-devkit/schematics" "12.2.6" jsonc-parser "3.0.0" "@schematics/angular@~12.1.0": @@ -3063,9 +3063,9 @@ jsonc-parser "3.0.0" "@sindresorhus/is@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.1.0.tgz#3853c0c48b47f0ebcdd3cd9a66fdd0d277173e78" - integrity sha512-Cgva8HxclecUCmAImsWsbZGUh6p5DSzQ8l2Uzxuj9ANiD7LVhLM1UJ2hX/R2Y+ILpvqgW9QjmTCaBkXtj8+UOg== + version "4.2.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.2.0.tgz#667bfc6186ae7c9e0b45a08960c551437176e1ca" + integrity sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw== "@sinonjs/commons@^1.7.0": version "1.8.3" @@ -3119,10 +3119,10 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@trysound/sax@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.1.1.tgz#3348564048e7a2d7398c935d466c0414ebb6a669" - integrity sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow== +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/aria-query@^4.2.0": version "4.2.2" @@ -3273,9 +3273,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node@*": - version "16.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708" - integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== + version "16.9.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.4.tgz#a12f0ee7847cf17a97f6fdf1093cb7a9af23cca4" + integrity sha512-KDazLNYAGIuJugdbULwFZULF9qQ13yNWEBFnfVpqlpgAAo6H/qnM9RjBgh0A0kmHf3XxAKLdN5mTIng9iUvVLA== "@types/node@14.14.33": version "14.14.33" @@ -3283,9 +3283,9 @@ integrity sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g== "@types/node@^14.14.31": - version "14.17.15" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.15.tgz#d5ebfb62a69074ebb85cbe0529ad917bb8f2bae8" - integrity sha512-D1sdW0EcSCmNdLKBGMYb38YsHUS6JcM7yQ6sLQ9KuZ35ck7LYCKE7kYFHOO59ayFOY3zobWVZxf4KXhYHcHYFA== + version "14.17.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.17.tgz#4ec7b71bbcb01a4e55455b60b18b1b6a783fe31d" + integrity sha512-niAjcewgEYvSPCZm3OaM9y6YQrL2SEPH9PymtE6fuZAvFiP6ereCcvApGl2jKTq7copTIguX3PBvfP08LN4LvQ== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -3937,7 +3937,7 @@ ajv@8.6.0: require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@8.6.2, ajv@^8.0.0, ajv@^8.0.1: +ajv@8.6.2: version "8.6.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== @@ -3947,6 +3947,16 @@ ajv@8.6.2, ajv@^8.0.0, ajv@^8.0.1: require-from-string "^2.0.2" uri-js "^4.2.2" +ajv@^8.0.0, ajv@^8.0.1: + version "8.6.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" + integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -4005,9 +4015,9 @@ ansi-regex@^4.1.0: integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^2.2.1: version "2.2.1" @@ -4274,16 +4284,16 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^27.0.6, babel-jest@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.1.1.tgz#9359c45995d0940b84d2176ab83423f9eed07617" - integrity sha512-JA+dzJl4n2RBvWQEnph6HJaTHrsIPiXGQYatt/D8nR4UpX9UG4GaDzykVVPQBbrdTebZREkRb6SOxyIXJRab6Q== +babel-jest@^27.0.6, babel-jest@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.2.0.tgz#c0f129a81f1197028aeb4447acbc04564c8bfc52" + integrity sha512-bS2p+KGGVVmWXBa8+i6SO/xzpiz2Q/2LnqLbQknPKefWXVZ67YIjA4iXup/jMOEZplga9PpWn+wrdb3UdDwRaA== dependencies: - "@jest/transform" "^27.1.1" + "@jest/transform" "^27.2.0" "@jest/types" "^27.1.1" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^27.0.6" + babel-preset-jest "^27.2.0" chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" @@ -4316,10 +4326,10 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz#f7c6b3d764af21cb4a2a1ab6870117dbde15b456" - integrity sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw== +babel-plugin-jest-hoist@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz#79f37d43f7e5c4fdc4b2ca3e10cc6cf545626277" + integrity sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -4368,12 +4378,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz#909ef08e9f24a4679768be2f60a3df0856843f9d" - integrity sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw== +babel-preset-jest@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz#556bbbf340608fed5670ab0ea0c8ef2449fba885" + integrity sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg== dependencies: - babel-plugin-jest-hoist "^27.0.6" + babel-plugin-jest-hoist "^27.2.0" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -4877,9 +4887,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001254: - version "1.0.30001255" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001255.tgz#f3b09b59ab52e39e751a569523618f47c4298ca0" - integrity sha512-F+A3N9jTZL882f/fg/WWVnKSu6IOo3ueLz4zwaOPbPYHNmM/ZaDUyzyJwS1mZhX7Ex5jqTyW599Gdelh5PDYLQ== + version "1.0.30001258" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001258.tgz#b604eed80cc54a578e4bf5a02ae3ed49f869d252" + integrity sha512-RBByOG6xWXUp0CR2/WU2amXz3stjKpSl5J1xU49F1n2OxD//uBZO4wCKUiG+QMGf7CHGfDDcqoKriomoGVxTeA== canonical-path@1.0.0: version "1.0.0" @@ -5204,7 +5214,7 @@ colord@^2.0.1, colord@^2.6: resolved "https://registry.yarnpkg.com/colord/-/colord-2.7.0.tgz#706ea36fe0cd651b585eb142fe64b6480185270e" integrity sha512-pZJBqsHz+pYyw3zpX6ZRXWoCHM1/cvFikY9TV8G3zcejCaKE0lhankoj8iScyrrePA8C7yJ5FStfA9zbcOnw7Q== -colorette@^1.2.1, colorette@^1.2.2, colorette@^1.3.0: +colorette@^1.2.1, colorette@^1.2.2, colorette@^1.3.0, colorette@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== @@ -5499,17 +5509,17 @@ copy-webpack-plugin@9.0.1: serialize-javascript "^6.0.0" core-js-compat@^3.14.0, core-js-compat@^3.15.0, core-js-compat@^3.16.0: - version "3.17.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.17.3.tgz#b39c8e4dec71ecdc735c653ce5233466e561324e" - integrity sha512-+in61CKYs4hQERiADCJsdgewpdl/X0GhEX77pjKgbeibXviIt2oxEjTc8O2fqHX8mDdBrDvX8MYD/RYsBv4OiA== + version "3.18.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.0.tgz#fb360652201e8ac8da812718c008cd0482ed9b42" + integrity sha512-tRVjOJu4PxdXjRMEgbP7lqWy1TWJu9a01oBkn8d+dNrhgmBwdTkzhHZpVJnEmhISLdoJI1lX08rcBcHi3TZIWg== dependencies: browserslist "^4.17.0" semver "7.0.0" core-js-pure@^3.16.0: - version "3.17.3" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.17.3.tgz#98ea3587188ab7ef4695db6518eeb71aec42604a" - integrity sha512-YusrqwiOTTn8058JDa0cv9unbXdIiIgcgI9gXso0ey4WgkFLd3lYlV9rp9n7nDCsYxXsMDTjA4m1h3T348mdlQ== + version "3.18.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.0.tgz#e5187347bae66448c9e2d67c01c34c4df3261dc5" + integrity sha512-ZnK+9vyuMhKulIGqT/7RHGRok8RtkHMEX/BGPHkHx+ouDkq+MUvf9mfIgdqhpmPDu8+V5UtRn/CbCRc9I4lX4w== core-js@3.16.0: version "3.16.0" @@ -5517,9 +5527,9 @@ core-js@3.16.0: integrity sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g== core-js@^3.6.5: - version "3.17.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.17.3.tgz#8e8bd20e91df9951e903cabe91f9af4a0895bc1e" - integrity sha512-lyvajs+wd8N1hXfzob1LdOCCHFU4bGMbqqmLn1Q4QlCpDqWPpGf+p0nj+LNrvDDG33j0hZXw2nsvvVpHysxyNw== + version "3.18.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.18.0.tgz#9af3f4a6df9ba3428a3fb1b171f1503b3f40cc49" + integrity sha512-WJeQqq6jOYgVgg4NrXKL0KLQhi0CT4ZOCvFL+3CQ5o7I6J8HkT5wd53EadMfqTDp1so/MT1J+w2ujhWcCJtN7w== core-util-is@1.0.2: version "1.0.2" @@ -5931,9 +5941,9 @@ data-urls@^2.0.0: whatwg-url "^8.0.0" date-fns@^2.10.0: - version "2.23.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.23.0.tgz#4e886c941659af0cf7b30fafdd1eaa37e88788a9" - integrity sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA== + version "2.24.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.24.0.tgz#7d86dc0d93c87b76b63d213b4413337cfd1c105d" + integrity sha512-6ujwvwgPID6zbI0o7UbURi2vlLDR9uP26+tW6Lg+Ji3w7dd0i3DOcjcClLjLPranT60SSEFBwdSyYwn/ZkPIuw== dateformat@^3.0.0: version "3.0.3" @@ -6348,9 +6358,9 @@ ejs@^3.1.5: jake "^10.6.1" electron-to-chromium@^1.3.830: - version "1.3.835" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.835.tgz#98fa4402ab7bc6afbe4953a8ca9b63cb3a6bf08b" - integrity sha512-rHQszGg2KLMqOWPNTpwCnlp7Kb85haJa8j089DJCreZueykoSN/in+EMlay3SSDMNKR4VGPvfskxofHV18xVJg== + version "1.3.843" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.843.tgz#671489bd2f59fd49b76adddc1aa02c88cd38a5c0" + integrity sha512-OWEwAbzaVd1Lk9MohVw8LxMXFlnYd9oYTYxfX8KS++kLLjDfbovLOcEEXwRhG612dqGQ6+44SZvim0GXuBRiKg== elliptic@^6.5.3: version "6.5.4" @@ -6518,9 +6528,9 @@ esbuild@0.12.24: integrity sha512-C0ibY+HsXzYB6L/pLWEiWjMpghKsIc58Q5yumARwBQsHl9DXPakW+5NI/Y9w4YXiz0PEP6XTGTT/OV4Nnsmb4A== esbuild@^0.12.15: - version "0.12.26" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.26.tgz#35f2d58ac3fa4629df24aa4d6fd72feb5522e94b" - integrity sha512-YmTkhPKjvTJ+G5e96NyhGf69bP+hzO0DscqaVJTi5GM34uaD4Ecj7omu5lJO+NrxCUBRhy2chONLK1h/2LwoXA== + version "0.12.28" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.28.tgz#84da0d2a0d0dee181281545271e0d65cf6fab1ef" + integrity sha512-pZ0FrWZXlvQOATlp14lRSk1N9GkeJ3vLIwOcUoo3ICQn9WNR4rWoNi81pbn6sC1iYUy7QPqNzI3+AEzokwyVcA== escalade@^3.1.1: version "3.1.1" @@ -6560,9 +6570,9 @@ eslint-config-prettier@8.1.0: integrity sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw== eslint-plugin-cypress@^2.10.3: - version "2.11.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.3.tgz#54ee4067aa8192aa62810cd35080eb577e191ab7" - integrity sha512-hOoAid+XNFtpvOzZSNWP5LDrQBEJwbZwjib4XJ1KcRYKjeVj0mAmPmucG4Egli4j/aruv+Ow/acacoloWWCl9Q== + version "2.12.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz#9aeee700708ca8c058e00cdafe215199918c2632" + integrity sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA== dependencies: globals "^11.12.0" @@ -6810,16 +6820,16 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.1.1.tgz#020215da67d41cd6ad805fa00bd030985ca7c093" - integrity sha512-JQAzp0CJoFFHF1RnOtrMUNMdsfx/Tl0+FhRzVl8q0fa23N+JyWdPXwb3T5rkHCvyo9uttnK7lVdKCBl1b/9EDw== +expect@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.2.0.tgz#40eb89a492afb726a3929ccf3611ee0799ab976f" + integrity sha512-oOTbawMQv7AK1FZURbPTgGSzmhxkjFzoARSvDjOMnOpeWuYQx1tP6rXu9MIX5mrACmyCAM7fSNP8IJO2f1p0CQ== dependencies: "@jest/types" "^27.1.1" ansi-styles "^5.0.0" jest-get-type "^27.0.6" - jest-matcher-utils "^27.1.1" - jest-message-util "^27.1.1" + jest-matcher-utils "^27.2.0" + jest-message-util "^27.2.0" jest-regex-util "^27.0.6" express@^4.17.1: @@ -6954,9 +6964,9 @@ fast-sha256@^1.3.0: integrity sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ== fastq@^1.6.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.12.0.tgz#ed7b6ab5d62393fb2cc591c853652a5c318bf794" - integrity sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg== + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" @@ -7133,9 +7143,9 @@ flush-write-stream@^1.0.0: readable-stream "^2.3.6" follow-redirects@^1.0.0: - version "1.14.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.3.tgz#6ada78118d8d24caee595595accdc0ac6abd022e" - integrity sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw== + version "1.14.4" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" + integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== for-in@^1.0.2: version "1.0.2" @@ -8647,46 +8657,46 @@ jest-changed-files@^27.1.1: execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.0.6, jest-circus@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.1.1.tgz#08dd3ec5cbaadce68ce6388ebccbe051d1b34bc6" - integrity sha512-Xed1ApiMFu/yzqGMBToHr8sp2gkX/ARZf4nXoGrHJrXrTUdVIWiVYheayfcOaPdQvQEE/uyBLgW7I7YBLIrAXQ== +jest-circus@^27.0.6, jest-circus@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.2.0.tgz#ad0d6d75514050f539d422bae41344224d2328f9" + integrity sha512-WwENhaZwOARB1nmcboYPSv/PwHBUGRpA4MEgszjr9DLCl97MYw0qZprBwLb7rNzvMwfIvNGG7pefQ5rxyBlzIA== dependencies: - "@jest/environment" "^27.1.1" - "@jest/test-result" "^27.1.1" + "@jest/environment" "^27.2.0" + "@jest/test-result" "^27.2.0" "@jest/types" "^27.1.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.1.1" + expect "^27.2.0" is-generator-fn "^2.0.0" - jest-each "^27.1.1" - jest-matcher-utils "^27.1.1" - jest-message-util "^27.1.1" - jest-runtime "^27.1.1" - jest-snapshot "^27.1.1" - jest-util "^27.1.1" - pretty-format "^27.1.1" + jest-each "^27.2.0" + jest-matcher-utils "^27.2.0" + jest-message-util "^27.2.0" + jest-runtime "^27.2.0" + jest-snapshot "^27.2.0" + jest-util "^27.2.0" + pretty-format "^27.2.0" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" jest-cli@^27.0.3: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.1.1.tgz#6491a0278231ffee61083ad468809328e96a8eb2" - integrity sha512-LCjfEYp9D3bcOeVUUpEol9Y1ijZYMWVqflSmtw/wX+6Fb7zP4IlO14/6s9v1pxsoM4Pn46+M2zABgKuQjyDpTw== + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.2.0.tgz#6da5ecca5bd757e20449f5ec1f1cad5b0303d16b" + integrity sha512-bq1X/B/b1kT9y1zIFMEW3GFRX1HEhFybiqKdbxM+j11XMMYSbU9WezfyWIhrSOmPT+iODLATVjfsCnbQs7cfIA== dependencies: - "@jest/core" "^27.1.1" - "@jest/test-result" "^27.1.1" + "@jest/core" "^27.2.0" + "@jest/test-result" "^27.2.0" "@jest/types" "^27.1.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" - jest-config "^27.1.1" - jest-util "^27.1.1" - jest-validate "^27.1.1" + jest-config "^27.2.0" + jest-util "^27.2.0" + jest-validate "^27.2.0" prompts "^2.0.1" yargs "^16.0.3" @@ -8717,32 +8727,32 @@ jest-config@27.0.6: micromatch "^4.0.4" pretty-format "^27.0.6" -jest-config@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.1.1.tgz#cde823ad27f7ec0b9440035eabc75d4ac1ea024c" - integrity sha512-2iSd5zoJV4MsWPcLCGwUVUY/j6pZXm4Qd3rnbCtrd9EHNTg458iHw8PZztPQXfxKBKJxLfBk7tbZqYF8MGtxJA== +jest-config@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.2.0.tgz#d1c359253927005c53d11ab3e50d3b2f402a673a" + integrity sha512-Z1romHpxeNwLxQtouQ4xt07bY6HSFGKTo0xJcvOK3u6uJHveA4LB2P+ty9ArBLpTh3AqqPxsyw9l9GMnWBYS9A== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.1.1" + "@jest/test-sequencer" "^27.2.0" "@jest/types" "^27.1.1" - babel-jest "^27.1.1" + babel-jest "^27.2.0" chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" is-ci "^3.0.0" - jest-circus "^27.1.1" - jest-environment-jsdom "^27.1.1" - jest-environment-node "^27.1.1" + jest-circus "^27.2.0" + jest-environment-jsdom "^27.2.0" + jest-environment-node "^27.2.0" jest-get-type "^27.0.6" - jest-jasmine2 "^27.1.1" + jest-jasmine2 "^27.2.0" jest-regex-util "^27.0.6" - jest-resolve "^27.1.1" - jest-runner "^27.1.1" - jest-util "^27.1.1" - jest-validate "^27.1.1" + jest-resolve "^27.2.0" + jest-runner "^27.2.0" + jest-util "^27.2.0" + jest-validate "^27.2.0" micromatch "^4.0.4" - pretty-format "^27.1.1" + pretty-format "^27.2.0" jest-diff@^26.0.0: version "26.6.2" @@ -8754,15 +8764,15 @@ jest-diff@^26.0.0: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-diff@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.1.1.tgz#1d1629ca2e3933b10cb27dc260e28e3dba182684" - integrity sha512-m/6n5158rqEriTazqHtBpOa2B/gGgXJijX6nsEgZfbJ/3pxQcdpVXBe+FP39b1dxWHyLVVmuVXddmAwtqFO4Lg== +jest-diff@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.2.0.tgz#bda761c360f751bab1e7a2fe2fc2b0a35ce8518c" + integrity sha512-QSO9WC6btFYWtRJ3Hac0sRrkspf7B01mGrrQEiCW6TobtViJ9RWL0EmOs/WnBsZDsI/Y2IoSHZA2x6offu0sYw== dependencies: chalk "^4.0.0" diff-sequences "^27.0.6" jest-get-type "^27.0.6" - pretty-format "^27.1.1" + pretty-format "^27.2.0" jest-docblock@^27.0.6: version "27.0.6" @@ -8771,41 +8781,41 @@ jest-docblock@^27.0.6: dependencies: detect-newline "^3.0.0" -jest-each@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.1.1.tgz#caa1e7eed77144be346eb18712885b990389348a" - integrity sha512-r6hOsTLavUBb1xN0uDa89jdDeBmJ+K49fWpbyxeGRA2pLY46PlC4z551/cWNQzrj+IUa5/gSRsCIV/01HdNPug== +jest-each@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.2.0.tgz#4c531c7223de289429fc7b2473a86e653c86d61f" + integrity sha512-biDmmUQjg+HZOB7MfY2RHSFL3j418nMoC3TK3pGAj880fQQSxvQe1y2Wy23JJJNUlk6YXiGU0yWy86Le1HBPmA== dependencies: "@jest/types" "^27.1.1" chalk "^4.0.0" jest-get-type "^27.0.6" - jest-util "^27.1.1" - pretty-format "^27.1.1" + jest-util "^27.2.0" + pretty-format "^27.2.0" -jest-environment-jsdom@^27.0.0, jest-environment-jsdom@^27.0.6, jest-environment-jsdom@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.1.1.tgz#e53e98a16e6a764b8ee8db3b29b3a8c27db06f66" - integrity sha512-6vOnoZ6IaExuw7FvnuJhA1qFYv1DDSnN0sQowzolNwxQp7bG1YhLxj2YU1sVXAYA3IR3MbH2mbnJUsLUWfyfzw== +jest-environment-jsdom@^27.0.0, jest-environment-jsdom@^27.0.6, jest-environment-jsdom@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.2.0.tgz#c654dfae50ca2272c2a2e2bb95ff0af298283a3c" + integrity sha512-wNQJi6Rd/AkUWqTc4gWhuTIFPo7tlMK0RPZXeM6AqRHZA3D3vwvTa9ktAktyVyWYmUoXdYstOfyYMG3w4jt7eA== dependencies: - "@jest/environment" "^27.1.1" - "@jest/fake-timers" "^27.1.1" + "@jest/environment" "^27.2.0" + "@jest/fake-timers" "^27.2.0" "@jest/types" "^27.1.1" "@types/node" "*" jest-mock "^27.1.1" - jest-util "^27.1.1" + jest-util "^27.2.0" jsdom "^16.6.0" -jest-environment-node@^27.0.6, jest-environment-node@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.1.1.tgz#97425d4762b2aeab15892ffba08c6cbed7653e75" - integrity sha512-OEGeZh0PwzngNIYWYgWrvTcLygopV8OJbC9HNb0j70VBKgEIsdZkYhwcFnaURX83OHACMqf1pa9Tv5Pw5jemrg== +jest-environment-node@^27.0.6, jest-environment-node@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.2.0.tgz#73ef2151cb62206669becb94cd84f33276252de5" + integrity sha512-WbW+vdM4u88iy6Q3ftUEQOSgMPtSgjm3qixYYK2AKEuqmFO2zmACTw1vFUB0qI/QN88X6hA6ZkVKIdIWWzz+yg== dependencies: - "@jest/environment" "^27.1.1" - "@jest/fake-timers" "^27.1.1" + "@jest/environment" "^27.2.0" + "@jest/fake-timers" "^27.2.0" "@jest/types" "^27.1.1" "@types/node" "*" jest-mock "^27.1.1" - jest-util "^27.1.1" + jest-util "^27.2.0" jest-get-type@^26.3.0: version "26.3.0" @@ -8817,10 +8827,10 @@ jest-get-type@^27.0.6: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== -jest-haste-map@^27.0.6, jest-haste-map@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.1.1.tgz#f7c646b0e417ec29b80b96cf785b57b581384adf" - integrity sha512-NGLYVAdh5C8Ezg5QBFzrNeYsfxptDBPlhvZNaicLiZX77F/rS27a9M6u9ripWAaaD54xnWdZNZpEkdjD5Eo5aQ== +jest-haste-map@^27.0.6, jest-haste-map@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.2.0.tgz#703b3a473e3f2e27d75ab07864ffd7bbaad0d75e" + integrity sha512-laFet7QkNlWjwZtMGHCucLvF8o9PAh2cgePRck1+uadSM4E4XH9J4gnx4do+a6do8ZV5XHNEAXEkIoNg5XUH2Q== dependencies: "@jest/types" "^27.1.1" "@types/graceful-fs" "^4.1.2" @@ -8830,59 +8840,59 @@ jest-haste-map@^27.0.6, jest-haste-map@^27.1.1: graceful-fs "^4.2.4" jest-regex-util "^27.0.6" jest-serializer "^27.0.6" - jest-util "^27.1.1" - jest-worker "^27.1.1" + jest-util "^27.2.0" + jest-worker "^27.2.0" micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.0.6, jest-jasmine2@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.1.1.tgz#efb9e7b70ce834c35c91e1a2f01bb41b462fad43" - integrity sha512-0LAzUmcmvQwjIdJt0cXUVX4G5qjVXE8ELt6nbMNDzv2yAs2hYCCUtQq+Eje70GwAysWCGcS64QeYj5VPHYVxPg== +jest-jasmine2@^27.0.6, jest-jasmine2@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.2.0.tgz#1ece0ee37c348b59ed3dfcfe509fc24e3377b12d" + integrity sha512-NcPzZBk6IkDW3Z2V8orGueheGJJYfT5P0zI/vTO/Jp+R9KluUdgFrgwfvZ0A34Kw6HKgiWFILZmh3oQ/eS+UxA== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.1.1" + "@jest/environment" "^27.2.0" "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.1.1" + "@jest/test-result" "^27.2.0" "@jest/types" "^27.1.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^27.1.1" + expect "^27.2.0" is-generator-fn "^2.0.0" - jest-each "^27.1.1" - jest-matcher-utils "^27.1.1" - jest-message-util "^27.1.1" - jest-runtime "^27.1.1" - jest-snapshot "^27.1.1" - jest-util "^27.1.1" - pretty-format "^27.1.1" + jest-each "^27.2.0" + jest-matcher-utils "^27.2.0" + jest-message-util "^27.2.0" + jest-runtime "^27.2.0" + jest-snapshot "^27.2.0" + jest-util "^27.2.0" + pretty-format "^27.2.0" throat "^6.0.1" -jest-leak-detector@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.1.1.tgz#8e05ec4b339814fc4202f07d875da65189e3d7d4" - integrity sha512-gwSgzmqShoeEsEVpgObymQPrM9P6557jt1EsFW5aCeJ46Cme0EdjYU7xr6llQZ5GpWDl56eOstUaPXiZOfiTKw== +jest-leak-detector@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.2.0.tgz#9a7ca2dad1a21c4e49ad2a8ad7f1214ffdb86a28" + integrity sha512-e91BIEmbZw5+MHkB4Hnrq7S86coTxUMCkz4n7DLmQYvl9pEKmRx9H/JFH87bBqbIU5B2Ju1soKxRWX6/eGFGpA== dependencies: jest-get-type "^27.0.6" - pretty-format "^27.1.1" + pretty-format "^27.2.0" -jest-matcher-utils@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.1.1.tgz#1f444d7491ccf9edca746336b056178789a59651" - integrity sha512-Q1a10w9Y4sh0wegkdP6reQOa/Dtz7nAvDqBgrat1ItZAUvk4jzXAqyhXPu/ZuEtDaXaNKpdRPRQA8bvkOh2Eaw== +jest-matcher-utils@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.2.0.tgz#b4d224ab88655d5fab64b96b989ac349e2f5da43" + integrity sha512-F+LG3iTwJ0gPjxBX6HCyrARFXq6jjiqhwBQeskkJQgSLeF1j6ui1RTV08SR7O51XTUhtc8zqpDj8iCG4RGmdKw== dependencies: chalk "^4.0.0" - jest-diff "^27.1.1" + jest-diff "^27.2.0" jest-get-type "^27.0.6" - pretty-format "^27.1.1" + pretty-format "^27.2.0" -jest-message-util@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.1.1.tgz#980110fb72fcfa711cd9a95e8f10d335207585c6" - integrity sha512-b697BOJV93+AVGvzLRtVZ0cTVRbd59OaWnbB2D75GRaIMc4I+Z9W0wHxbfjW01JWO+TqqW4yevT0aN7Fd0XWng== +jest-message-util@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.2.0.tgz#2f65c71df55267208686b1d7514e18106c91ceaf" + integrity sha512-y+sfT/94CiP8rKXgwCOzO1mUazIEdEhrLjuiu+RKmCP+8O/TJTSne9dqQRbFIHBtlR2+q7cddJlWGir8UATu5w== dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^27.1.1" @@ -8890,7 +8900,7 @@ jest-message-util@^27.1.1: chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.4" - pretty-format "^27.1.1" + pretty-format "^27.2.0" slash "^3.0.0" stack-utils "^2.0.3" @@ -8923,14 +8933,14 @@ jest-regex-util@^27.0.6: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ== -jest-resolve-dependencies@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.1.1.tgz#6f3e0916c1764dd1853c6111ed9d66c66c792e40" - integrity sha512-sYZR+uBjFDCo4VhYeazZf/T+ryYItvdLKu9vHatqkUqHGjDMrdEPOykiqC2iEpaCFTS+3iL/21CYiJuKdRbniw== +jest-resolve-dependencies@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.0.tgz#b56a1aab95b0fd21e0a69a15fda985c05f902b8a" + integrity sha512-EY5jc/Y0oxn+oVEEldTidmmdVoZaknKPyDORA012JUdqPyqPL+lNdRyI3pGti0RCydds6coaw6xt4JQY54dKsg== dependencies: "@jest/types" "^27.1.1" jest-regex-util "^27.0.6" - jest-snapshot "^27.1.1" + jest-snapshot "^27.2.0" jest-resolve@27.0.6: version "27.0.6" @@ -8947,31 +8957,31 @@ jest-resolve@27.0.6: resolve "^1.20.0" slash "^3.0.0" -jest-resolve@^27.0.6, jest-resolve@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.1.1.tgz#3a86762f9affcad9697bc88140b0581b623add33" - integrity sha512-M41YFmWhvDVstwe7XuV21zynOiBLJB5Sk0GrIsYYgTkjfEWNLVXDjAyq1W7PHseaYNOxIc0nOGq/r5iwcZNC1A== +jest-resolve@^27.0.6, jest-resolve@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.2.0.tgz#f5d053693ab3806ec2f778e6df8b0aa4cfaef95f" + integrity sha512-v09p9Ib/VtpHM6Cz+i9lEAv1Z/M5NVxsyghRHRMEUOqwPQs3zwTdwp1xS3O/k5LocjKiGS0OTaJoBSpjbM2Jlw== dependencies: "@jest/types" "^27.1.1" chalk "^4.0.0" escalade "^3.1.1" graceful-fs "^4.2.4" - jest-haste-map "^27.1.1" + jest-haste-map "^27.2.0" jest-pnp-resolver "^1.2.2" - jest-util "^27.1.1" - jest-validate "^27.1.1" + jest-util "^27.2.0" + jest-validate "^27.2.0" resolve "^1.20.0" slash "^3.0.0" -jest-runner@^27.0.6, jest-runner@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.1.1.tgz#1991fdf13a8fe6e49cef47332db33300649357cd" - integrity sha512-lP3MBNQhg75/sQtVkC8dsAQZumvy3lHK/YIwYPfEyqGIX1qEcnYIRxP89q0ZgC5ngvi1vN2P5UFHszQxguWdng== +jest-runner@^27.0.6, jest-runner@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.2.0.tgz#281b255d88a473aebc0b5cb46e58a83a1251cab3" + integrity sha512-Cl+BHpduIc0cIVTjwoyx0pQk4Br8gn+wkr35PmKCmzEdOUnQ2wN7QVXA8vXnMQXSlFkN/+KWnk20TAVBmhgrww== dependencies: - "@jest/console" "^27.1.1" - "@jest/environment" "^27.1.1" - "@jest/test-result" "^27.1.1" - "@jest/transform" "^27.1.1" + "@jest/console" "^27.2.0" + "@jest/environment" "^27.2.0" + "@jest/test-result" "^27.2.0" + "@jest/transform" "^27.2.0" "@jest/types" "^27.1.1" "@types/node" "*" chalk "^4.0.0" @@ -8979,30 +8989,30 @@ jest-runner@^27.0.6, jest-runner@^27.1.1: exit "^0.1.2" graceful-fs "^4.2.4" jest-docblock "^27.0.6" - jest-environment-jsdom "^27.1.1" - jest-environment-node "^27.1.1" - jest-haste-map "^27.1.1" - jest-leak-detector "^27.1.1" - jest-message-util "^27.1.1" - jest-resolve "^27.1.1" - jest-runtime "^27.1.1" - jest-util "^27.1.1" - jest-worker "^27.1.1" + jest-environment-jsdom "^27.2.0" + jest-environment-node "^27.2.0" + jest-haste-map "^27.2.0" + jest-leak-detector "^27.2.0" + jest-message-util "^27.2.0" + jest-resolve "^27.2.0" + jest-runtime "^27.2.0" + jest-util "^27.2.0" + jest-worker "^27.2.0" source-map-support "^0.5.6" throat "^6.0.1" -jest-runtime@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.1.1.tgz#bd0a0958a11c2f7d94d2e5f6f71864ad1c65fe44" - integrity sha512-FEwy+tSzmsvuKaQpyYsUyk31KG5vMmA2r2BSTHgv0yNfcooQdm2Ke91LM9Ud8D3xz8CLDHJWAI24haMFTwrsPg== +jest-runtime@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.2.0.tgz#998295ccd80008b3031eeb5cc60e801e8551024b" + integrity sha512-6gRE9AVVX49hgBbWQ9PcNDeM4upMUXzTpBs0kmbrjyotyUyIJixLPsYjpeTFwAA07PVLDei1iAm2chmWycdGdQ== dependencies: - "@jest/console" "^27.1.1" - "@jest/environment" "^27.1.1" - "@jest/fake-timers" "^27.1.1" - "@jest/globals" "^27.1.1" + "@jest/console" "^27.2.0" + "@jest/environment" "^27.2.0" + "@jest/fake-timers" "^27.2.0" + "@jest/globals" "^27.2.0" "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.1.1" - "@jest/transform" "^27.1.1" + "@jest/test-result" "^27.2.0" + "@jest/transform" "^27.2.0" "@jest/types" "^27.1.1" "@types/yargs" "^16.0.0" chalk "^4.0.0" @@ -9012,14 +9022,14 @@ jest-runtime@^27.1.1: exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-haste-map "^27.1.1" - jest-message-util "^27.1.1" + jest-haste-map "^27.2.0" + jest-message-util "^27.2.0" jest-mock "^27.1.1" jest-regex-util "^27.0.6" - jest-resolve "^27.1.1" - jest-snapshot "^27.1.1" - jest-util "^27.1.1" - jest-validate "^27.1.1" + jest-resolve "^27.2.0" + jest-snapshot "^27.2.0" + jest-util "^27.2.0" + jest-validate "^27.2.0" slash "^3.0.0" strip-bom "^4.0.0" yargs "^16.0.3" @@ -9032,10 +9042,10 @@ jest-serializer@^27.0.6: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.1.1.tgz#3b816e0ca4352fbbd1db48dc692e3d9641d2531b" - integrity sha512-Wi3QGiuRFo3lU+EbQmZnBOks0CJyAMPHvYoG7iJk00Do10jeOyuOEO0Jfoaoun8+8TDv+Nzl7Aswir/IK9+1jg== +jest-snapshot@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.2.0.tgz#7961e7107ac666a46fbb23e7bb48ce0b8c6a9285" + integrity sha512-MukJvy3KEqemCT2FoT3Gum37CQqso/62PKTfIzWmZVTsLsuyxQmJd2PI5KPcBYFqLlA8LgZLHM8ZlazkVt8LsQ== dependencies: "@babel/core" "^7.7.2" "@babel/generator" "^7.7.2" @@ -9043,23 +9053,23 @@ jest-snapshot@^27.1.1: "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/transform" "^27.1.1" + "@jest/transform" "^27.2.0" "@jest/types" "^27.1.1" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.1.1" + expect "^27.2.0" graceful-fs "^4.2.4" - jest-diff "^27.1.1" + jest-diff "^27.2.0" jest-get-type "^27.0.6" - jest-haste-map "^27.1.1" - jest-matcher-utils "^27.1.1" - jest-message-util "^27.1.1" - jest-resolve "^27.1.1" - jest-util "^27.1.1" + jest-haste-map "^27.2.0" + jest-matcher-utils "^27.2.0" + jest-message-util "^27.2.0" + jest-resolve "^27.2.0" + jest-util "^27.2.0" natural-compare "^1.4.0" - pretty-format "^27.1.1" + pretty-format "^27.2.0" semver "^7.3.2" jest-util@27.0.6: @@ -9074,10 +9084,10 @@ jest-util@27.0.6: is-ci "^3.0.0" picomatch "^2.2.3" -jest-util@^27.0.0, jest-util@^27.0.6, jest-util@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.1.1.tgz#2b06db1391d779ec2bd406ab3690ddc56ac728b9" - integrity sha512-zf9nEbrASWn2mC/L91nNb0K+GkhFvi4MP6XJG2HqnHzHvLYcs7ou/In68xYU1i1dSkJlrWcYfWXQE8nVR+nbOA== +jest-util@^27.0.0, jest-util@^27.0.6, jest-util@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.2.0.tgz#bfccb85cfafae752257319e825a5b8d4ada470dc" + integrity sha512-T5ZJCNeFpqcLBpx+Hl9r9KoxBCUqeWlJ1Htli+vryigZVJ1vuLB9j35grEBASp4R13KFkV7jM52bBGnArpJN6A== dependencies: "@jest/types" "^27.1.1" "@types/node" "*" @@ -9086,35 +9096,35 @@ jest-util@^27.0.0, jest-util@^27.0.6, jest-util@^27.1.1: is-ci "^3.0.0" picomatch "^2.2.3" -jest-validate@^27.0.6, jest-validate@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.1.1.tgz#0783733af02c988d503995fc0a07bbdc58c7dd50" - integrity sha512-N5Er5FKav/8m2dJwn7BGnZwnoD1BSc8jx5T+diG2OvyeugvZDhPeAt5DrNaGkkaKCrSUvuE7A5E4uHyT7Vj0Mw== +jest-validate@^27.0.6, jest-validate@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.2.0.tgz#b7535f12d95dd3b4382831f4047384ca098642ab" + integrity sha512-uIEZGkFKk3+4liA81Xu0maG5aGDyPLdp+4ed244c+Ql0k3aLWQYcMbaMLXOIFcb83LPHzYzqQ8hwNnIxTqfAGQ== dependencies: "@jest/types" "^27.1.1" camelcase "^6.2.0" chalk "^4.0.0" jest-get-type "^27.0.6" leven "^3.1.0" - pretty-format "^27.1.1" + pretty-format "^27.2.0" -jest-watcher@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.1.1.tgz#a8147e18703b5d753ada4b287451f2daf40f4118" - integrity sha512-XQzyHbxziDe+lZM6Dzs40fEt4q9akOGwitJnxQasJ9WG0bv3JGiRlsBgjw13znGapeMtFaEsyhL0Cl04IbaoWQ== +jest-watcher@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.2.0.tgz#dc2eef4c13c6d41cebf3f1fc5f900a54b51c2ea0" + integrity sha512-SjRWhnr+qO8aBsrcnYIyF+qRxNZk6MZH8TIDgvi+VlsyrvOyqg0d+Rm/v9KHiTtC9mGGeFi9BFqgavyWib6xLg== dependencies: - "@jest/test-result" "^27.1.1" + "@jest/test-result" "^27.2.0" "@jest/types" "^27.1.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.1.1" + jest-util "^27.2.0" string-length "^4.0.1" -jest-worker@^27.0.2, jest-worker@^27.0.6, jest-worker@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.1.1.tgz#eb5f05c4657fdcb702c36c48b20d785bd4599378" - integrity sha512-XJKCL7tu+362IUYTWvw8+3S75U7qMiYiRU6u5yqscB48bTvzwN6i8L/7wVTXiFLwkRsxARNM7TISnTvcgv9hxA== +jest-worker@^27.0.2, jest-worker@^27.0.6, jest-worker@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.0.tgz#11eef39f1c88f41384ca235c2f48fe50bc229bc0" + integrity sha512-laB0ZVIBz+voh/QQy9dmUuuDsadixeerrKqyVpgPz+CCWiOYjOBabUXHIXZhsdvkWbLqSHbgkAHWl5cg24Q6RA== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -9482,12 +9492,12 @@ lines-and-columns@^1.1.6: integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= listr2@^3.8.3: - version "3.11.1" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.11.1.tgz#a9bab5cd5874fd3cb7827118dbea6fedefbcb43f" - integrity sha512-ZXQvQfmH9iWLlb4n3hh31yicXDxlzB0pE7MM1zu6kgbVL4ivEsO4H8IPh4E682sC8RjnYO9anose+zT52rrpyg== + version "3.12.1" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.12.1.tgz#75e515b86c66b60baf253542cc0dced6b60fedaf" + integrity sha512-oB1DlXlCzGPbvWhqYBZUQEPJKqsmebQWofXG6Mpbe3uIvoNl8mctBEojyF13ZyqwQ91clCWXpwsWp+t98K4FOQ== dependencies: cli-truncate "^2.1.0" - colorette "^1.2.2" + colorette "^1.4.0" log-update "^4.0.0" p-map "^4.0.0" rxjs "^6.6.7" @@ -9767,9 +9777,9 @@ map-obj@^1.0.0: integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= map-obj@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" - integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== map-visit@^1.0.0: version "1.0.0" @@ -9806,9 +9816,9 @@ mem@^8.1.1: mimic-fn "^3.1.0" memfs@^3.1.2, memfs@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.4.tgz#1108c28d2e9137daf5a5586af856c3e18c1c64b2" - integrity sha512-2mDCPhuduRPOxlfgsXF9V+uqC6Jgz8zt/bNe4d4W7d5f6pCzHrWkxLNr17jKGXd4+j2kQNsAG2HARPnt74sqVQ== + version "3.3.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.3.0.tgz#4da2d1fc40a04b170a56622c7164c6be2c4cbef2" + integrity sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg== dependencies: fs-monkey "1.0.3" @@ -9912,11 +9922,16 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.49.0, "mime-db@>= 1.43.0 < 2": +mime-db@1.49.0: version "1.49.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== +"mime-db@>= 1.43.0 < 2": + version "1.50.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" + integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== + mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.32" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" @@ -10053,9 +10068,9 @@ minipass@^2.6.0, minipass@^2.9.0: yallist "^3.0.0" minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + version "3.1.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" + integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== dependencies: yallist "^4.0.0" @@ -10330,9 +10345,9 @@ node-forge@^0.10.0: integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== node-gyp-build@^4.2.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" - integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" + integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== node-gyp@^5.0.2: version "5.1.1" @@ -10603,9 +10618,9 @@ npmlog@^4.1.2: set-blocking "~2.0.0" nth-check@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" - integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== dependencies: boolbase "^1.0.0" @@ -11868,9 +11883,9 @@ prelude-ls@~1.1.2: integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= prettier@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.0.tgz#85bdfe0f70c3e777cf13a4ffff39713ca6f64cba" - integrity sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ== + version "2.4.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" + integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== pretty-bytes@^5.3.0, pretty-bytes@^5.6.0: version "5.6.0" @@ -11887,10 +11902,10 @@ pretty-format@^26.0.0, pretty-format@^26.4.2, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^27.0.0, pretty-format@^27.0.6, pretty-format@^27.1.1: - version "27.1.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.1.1.tgz#cbaf9ec6cd7cfc3141478b6f6293c0ccdbe968e0" - integrity sha512-zdBi/xlstKJL42UH7goQti5Hip/B415w1Mfj+WWWYMBylAYtKESnXGUtVVcMVid9ReVjypCotUV6CEevYPHv2g== +pretty-format@^27.0.0, pretty-format@^27.0.6, pretty-format@^27.2.0: + version "27.2.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.2.0.tgz#ee37a94ce2a79765791a8649ae374d468c18ef19" + integrity sha512-KyJdmgBkMscLqo8A7K77omgLx5PWPiXJswtTtFV7XgVZv2+qPk6UivpXXO+5k6ZEbWIbLoKdx1pZ6ldINzbwTA== dependencies: "@jest/types" "^27.1.1" ansi-regex "^5.0.0" @@ -12311,14 +12326,14 @@ reflect-metadata@^0.1.2: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== +regenerate-unicode-properties@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" + integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== dependencies: - regenerate "^1.4.0" + regenerate "^1.4.2" -regenerate@^1.4.0: +regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== @@ -12362,26 +12377,26 @@ regexpp@^3.1.0: integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regjsgen@^0.5.1: + version "4.8.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" + integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^9.0.0" + regjsgen "^0.5.2" + regjsparser "^0.7.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== -regjsparser@^0.6.4: - version "0.6.9" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" - integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== +regjsparser@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" + integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== dependencies: jsesc "~0.5.0" @@ -12682,9 +12697,9 @@ sass@1.36.0: chokidar ">=3.0.0 <4.0.0" sass@^1.32.8: - version "1.39.2" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.39.2.tgz#1681964378f58d76fc64a6a502619bd5ac99f660" - integrity sha512-4/6Vn2RPc+qNwSclUSKvssh7dqK1Ih3FfHBW16I/GfH47b3scbYeOw65UIrYG7PkweFiKbpJjgkf5CV8EMmvzw== + version "1.41.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.41.1.tgz#bca5bed2154192779c29f48fca9c644c60c38d98" + integrity sha512-vIjX7izRxw3Wsiez7SX7D+j76v7tenfO18P59nonjr/nzCkZuoHuF7I/Fo0ZRZPKr88v29ivIdE9BqGDgQD/Nw== dependencies: chokidar ">=3.0.0 <4.0.0" @@ -12944,9 +12959,9 @@ side-channel@^1.0.4: object-inspect "^1.9.0" signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + version "3.0.4" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7" + integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q== sisteransi@^1.0.5: version "1.0.5" @@ -13052,9 +13067,9 @@ socks-proxy-agent@^5.0.0: socks "^2.3.3" socks-proxy-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.0.0.tgz#9f8749cdc05976505fa9f9a958b1818d0e60573b" - integrity sha512-FIgZbQWlnjVEQvMkylz64/rUggGtrKstPnx8OZyYFG0tAFR8CSBtpXxSwbFLHyeXFn/cunFL7MpuSOvDSOPo9g== + version "6.1.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz#869cf2d7bd10fea96c7ad3111e81726855e285c3" + integrity sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg== dependencies: agent-base "^6.0.2" debug "^4.3.1" @@ -13128,7 +13143,7 @@ source-map-support@0.5.19: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.17, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: +source-map-support@^0.5.17, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19, source-map-support@~0.5.20: version "0.5.20" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== @@ -13283,9 +13298,9 @@ stable@^0.1.8: integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== stack-utils@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" - integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== dependencies: escape-string-regexp "^2.0.0" @@ -13568,12 +13583,12 @@ supports-hyperlinks@^2.0.0: supports-color "^7.0.0" svgo@^2.3.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.5.0.tgz#3c9051b606d85a02fcb59f459b19970d2cc2c9bf" - integrity sha512-FSdBOOo271VyF/qZnOn1PgwCdt1v4Dx0Sey+U1jgqm1vqRYjPGdip0RGrFW6ItwtkBB8rHgHk26dlVr0uCs82Q== + version "2.6.1" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.6.1.tgz#60b613937e0081028cffc2369090e366b08f1f0e" + integrity sha512-SDo274ymyG1jJ3HtCr3hkfwS8NqWdF0fMr6xPlrJ5y2QMofsQxIEFWgR1epwb197teKGgnZbzozxvJyIeJpE2Q== dependencies: - "@trysound/sax" "0.1.1" - colorette "^1.3.0" + "@trysound/sax" "0.2.0" + colorette "^1.4.0" commander "^7.2.0" css-select "^4.1.3" css-tree "^1.1.3" @@ -13608,9 +13623,9 @@ tapable@^1.0.0, tapable@^1.1.3: integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tapable@^2.1.1, tapable@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" - integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar@^4.4.12: version "4.4.19" @@ -13719,13 +13734,13 @@ terser@^4.1.2: source-map-support "~0.5.12" terser@^5.7.0, terser@^5.7.2: - version "5.7.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.2.tgz#d4d95ed4f8bf735cb933e802f2a1829abf545e3f" - integrity sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw== + version "5.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.8.0.tgz#c6d352f91aed85cc6171ccb5e84655b77521d947" + integrity sha512-f0JH+6yMpneYcRJN314lZrSwu9eKkUFEHLN/kNy8ceh8gaRiLgFPJqrB9HsXjhEGdv4e/ekjTOFxIlL6xlma8A== dependencies: commander "^2.20.0" source-map "~0.7.2" - source-map-support "~0.5.19" + source-map-support "~0.5.20" test-exclude@^6.0.0: version "6.0.0" @@ -14156,28 +14171,28 @@ unbox-primitive@^1.0.1: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== union-value@^1.0.0: version "1.0.1" @@ -14579,9 +14594,9 @@ webpack-sources@^1.2.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack- source-map "~0.6.1" webpack-sources@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.0.tgz#b16973bcf844ebcdb3afde32eda1c04d0b90f89d" - integrity sha512-fahN08Et7P9trej8xz/Z7eRu8ltyiygEo/hnRi9KqBUs80KeDcnf96ZJo++ewWd84fEf3xSX9bp4ZS9hbw0OBw== + version "3.2.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d" + integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== webpack-subresource-integrity@1.5.2: version "1.5.2" @@ -14650,9 +14665,9 @@ webpack@5.50.0: webpack-sources "^3.2.0" "webpack@^4.0.0 || ^5.30.0": - version "5.52.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.52.1.tgz#2dc1d9029ecb7acfb80da7bf67baab67baa517a7" - integrity sha512-wkGb0hLfrS7ML3n2xIKfUIwHbjB6gxwQHyLmVHoAqEQBw+nWo+G6LoHL098FEXqahqximsntjBLuewStrnJk0g== + version "5.53.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.53.0.tgz#f463cd9c6fc1356ae4b9b7ac911fd1f5b2df86af" + integrity sha512-RZ1Z3z3ni44snoWjfWeHFyzvd9HMVYDYC5VXmlYUT6NWgEOWdCNpad5Fve2CzzHoRED7WtsKe+FCyP5Vk4pWiQ== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.50" From be4534b677f1d7ac2f4abd46d43b3214ff1411a8 Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Mon, 20 Sep 2021 17:13:04 +0300 Subject: [PATCH 14/26] fix testing errors --- .../chart.js/src}/chart.component.spec.ts | 56 +++++-------------- .../packages/components/src/test-setup.ts | 2 + .../lib/tests/append-content.token.spec.ts | 14 +---- .../packages/theme-shared/src/test-setup.ts | 2 +- 4 files changed, 18 insertions(+), 56 deletions(-) rename npm/ng-packs/packages/{theme-shared/src/lib/tests => components/chart.js/src}/chart.component.spec.ts (60%) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/chart.component.spec.ts b/npm/ng-packs/packages/components/chart.js/src/chart.component.spec.ts similarity index 60% rename from npm/ng-packs/packages/theme-shared/src/lib/tests/chart.component.spec.ts rename to npm/ng-packs/packages/components/chart.js/src/chart.component.spec.ts index 083d810043..d7d4a1b42e 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/chart.component.spec.ts +++ b/npm/ng-packs/packages/components/chart.js/src/chart.component.spec.ts @@ -1,10 +1,10 @@ import { createHostFactory, SpectatorHost } from '@ngneat/spectator/jest'; +import Chart from 'chart.js/auto'; import { ReplaySubject } from 'rxjs'; -import { ChartComponent } from '../components'; -import * as widgetUtils from '../utils/widget-utils'; -import { chartJsLoaded$ } from '../utils/widget-utils'; -// import 'chart.js'; -declare const Chart; +import { ChartComponent } from './chart.component'; +import * as widgetUtils from './widget-utils'; + +Chart Object.defineProperty(window, 'getComputedStyle', { value: () => ({ @@ -34,19 +34,18 @@ describe('ChartComponent', () => { }, }, }); - }); - test('should throw error when chart.js is not loaded', () => { - try { - spectator.component.testChartJs(); - } catch (error) { - expect(error.message).toContain('Chart is not found'); - } + window.ResizeObserver = + window.ResizeObserver || + jest.fn().mockImplementation(() => ({ + disconnect: jest.fn(), + observe: jest.fn(), + unobserve: jest.fn(), + })); }); test('should have a success class by default', done => { import('chart.js').then(() => { - chartJsLoaded$.next(); setTimeout(() => { expect(spectator.component.chart).toBeTruthy(); done(); @@ -56,7 +55,6 @@ describe('ChartComponent', () => { describe('#reinit', () => { it('should call the destroy method', done => { - chartJsLoaded$.next(); const spy = jest.spyOn(spectator.component.chart, 'destroy'); spectator.setHostInput({ data: { @@ -79,7 +77,6 @@ describe('ChartComponent', () => { describe('#refresh', () => { it('should call the update method', done => { - chartJsLoaded$.next(); const spy = jest.spyOn(spectator.component.chart, 'update'); spectator.component.refresh(); setTimeout(() => { @@ -89,38 +86,11 @@ describe('ChartComponent', () => { }); }); - describe('#generateLegend', () => { - it('should call the generateLegend method', done => { - chartJsLoaded$.next(); - const spy = jest.spyOn(spectator.component.chart, 'generateLegend'); - spectator.component.generateLegend(); - setTimeout(() => { - expect(spy).toHaveBeenCalled(); - done(); - }, 0); - }); - }); - - describe('#onCanvasClick', () => { - it('should emit the onDataSelect', done => { - spectator.component.onDataSelect.subscribe(() => { - done(); - }); - - chartJsLoaded$.next(); - jest - .spyOn(spectator.component.chart, 'getElementAtEvent') - .mockReturnValue([document.createElement('div')]); - spectator.click('canvas'); - }); - }); - describe('#base64Image', () => { it('should return the base64 image', done => { - chartJsLoaded$.next(); setTimeout(() => { - expect(spectator.component.base64Image).toContain('base64'); + expect(spectator.component.getBase64Image()).toContain('base64'); done(); }, 0); }); diff --git a/npm/ng-packs/packages/components/src/test-setup.ts b/npm/ng-packs/packages/components/src/test-setup.ts index 1100b3e8a6..b2f7487191 100644 --- a/npm/ng-packs/packages/components/src/test-setup.ts +++ b/npm/ng-packs/packages/components/src/test-setup.ts @@ -1 +1,3 @@ +import 'jest-canvas-mock'; import 'jest-preset-angular/setup-jest'; + diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/append-content.token.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/append-content.token.spec.ts index fe3b0ac37c..286218efa0 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/append-content.token.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/append-content.token.spec.ts @@ -1,9 +1,8 @@ +import { DomInsertionService } from '@abp/ng.core'; import { Component } from '@angular/core'; import { createComponentFactory, Spectator } from '@ngneat/spectator'; -import { THEME_SHARED_APPEND_CONTENT } from '../tokens/append-content.token'; -import { DomInsertionService } from '@abp/ng.core'; -import { chartJsLoaded$ } from '../utils'; import styles from '../constants/styles'; +import { THEME_SHARED_APPEND_CONTENT } from '../tokens/append-content.token'; @Component({ selector: 'abp-dummy', template: '' }) class DummyComponent {} @@ -18,13 +17,4 @@ describe('AppendContentToken', () => { spectator.inject(THEME_SHARED_APPEND_CONTENT); expect(spectator.inject(DomInsertionService).has(styles)).toBe(true); }); - - it('should be loaded the chart.js', done => { - chartJsLoaded$.subscribe(loaded => { - expect(loaded).toBe(true); - done(); - }); - - spectator.inject(THEME_SHARED_APPEND_CONTENT); - }); }); diff --git a/npm/ng-packs/packages/theme-shared/src/test-setup.ts b/npm/ng-packs/packages/theme-shared/src/test-setup.ts index 713f967b86..ab68e1eb87 100644 --- a/npm/ng-packs/packages/theme-shared/src/test-setup.ts +++ b/npm/ng-packs/packages/theme-shared/src/test-setup.ts @@ -1,2 +1,2 @@ -import 'jest-canvas-mock'; import 'jest-preset-angular/setup-jest'; + From d26da14c37206d722ec46f9abc223f57d2b4fa05 Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Mon, 20 Sep 2021 17:23:54 +0300 Subject: [PATCH 15/26] Update chart.component.spec.ts --- .../packages/components/chart.js/src/chart.component.spec.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.component.spec.ts b/npm/ng-packs/packages/components/chart.js/src/chart.component.spec.ts index d7d4a1b42e..84c196fa83 100644 --- a/npm/ng-packs/packages/components/chart.js/src/chart.component.spec.ts +++ b/npm/ng-packs/packages/components/chart.js/src/chart.component.spec.ts @@ -1,10 +1,8 @@ import { createHostFactory, SpectatorHost } from '@ngneat/spectator/jest'; -import Chart from 'chart.js/auto'; import { ReplaySubject } from 'rxjs'; import { ChartComponent } from './chart.component'; import * as widgetUtils from './widget-utils'; -Chart Object.defineProperty(window, 'getComputedStyle', { value: () => ({ From 5fb6a3bc059340d7991a2fd1a1acff16cf9aea0f Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Mon, 20 Sep 2021 17:24:11 +0300 Subject: [PATCH 16/26] get canvas element via ViewChild --- .../components/chart.js/src/chart.component.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts index 8f02803f5d..f0cc5e0f30 100644 --- a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts +++ b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts @@ -9,7 +9,8 @@ import { OnChanges, OnDestroy, Output, - SimpleChanges + SimpleChanges, + ViewChild } from '@angular/core'; let Chart: any; @@ -23,6 +24,7 @@ let Chart: any; [style.height]="responsive && !height ? null : height" > (); + @ViewChild('canvas') canvas: ElementRef; + chart: any; constructor(public el: ElementRef, private cdr: ChangeDetectorRef) {} @@ -93,7 +97,7 @@ export class ChartComponent implements AfterViewInit, OnDestroy, OnChanges { opts.maintainAspectRatio = false; } - this.chart = new Chart(this.el.nativeElement.children[0].children[0], { + this.chart = new Chart(this.canvas.nativeElement, { type: this.type as any, data: this.data, options: this.options, @@ -101,7 +105,7 @@ export class ChartComponent implements AfterViewInit, OnDestroy, OnChanges { }; getCanvas = () => { - return this.el.nativeElement.children[0].children[0]; + return this.canvas.nativeElement; }; getBase64Image = () => { @@ -136,7 +140,7 @@ export class ChartComponent implements AfterViewInit, OnDestroy, OnChanges { ngOnChanges(changes: SimpleChanges) { if (!this.chart) return; - + if (changes.data?.currentValue || changes.options?.currentValue) { this.chart.destroy(); this.initChart(); From 109412caaff9e3bbb830131fd3b6163fe5d1c634 Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Mon, 20 Sep 2021 17:26:01 +0300 Subject: [PATCH 17/26] move chart.js dependency to components package --- .../packages/components/chart.js/src/chart.component.spec.ts | 2 +- npm/ng-packs/packages/components/package.json | 1 + npm/ng-packs/packages/theme-shared/package.json | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.component.spec.ts b/npm/ng-packs/packages/components/chart.js/src/chart.component.spec.ts index 84c196fa83..578e757fc3 100644 --- a/npm/ng-packs/packages/components/chart.js/src/chart.component.spec.ts +++ b/npm/ng-packs/packages/components/chart.js/src/chart.component.spec.ts @@ -43,7 +43,7 @@ describe('ChartComponent', () => { }); test('should have a success class by default', done => { - import('chart.js').then(() => { + import('chart.js/auto').then(() => { setTimeout(() => { expect(spectator.component.chart).toBeTruthy(); done(); diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json index 3cf84dd6db..681f5080b9 100644 --- a/npm/ng-packs/packages/components/package.json +++ b/npm/ng-packs/packages/components/package.json @@ -13,6 +13,7 @@ }, "dependencies": { "ng-zorro-antd": "^12.0.1", + "chart.js": "^3.5.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json index a4ac8c14b9..dbd53909b5 100644 --- a/npm/ng-packs/packages/theme-shared/package.json +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -13,7 +13,6 @@ "@ngx-validate/core": "^0.0.13", "@swimlane/ngx-datatable": "^19.0.0", "bootstrap": "~4.6.0", - "chart.js": "^2.9.3", "tslib": "^2.0.0" }, "publishConfig": { From c797c54d07a3395cc798f02411fc85deb6b346d8 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Mon, 20 Sep 2021 19:12:52 +0300 Subject: [PATCH 18/26] Add new localizations for account.abp.io --- .../Account/Localization/Resources/en-GB.json | 3 ++- .../AbpIoLocalization/Account/Localization/Resources/en.json | 3 ++- .../AbpIoLocalization/Account/Localization/Resources/tr.json | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/en-GB.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/en-GB.json index c1f56de865..c20405a8d3 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/en-GB.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/en-GB.json @@ -9,6 +9,7 @@ "OfficialBlog": "Official blog", "CommercialHomePage": "Commercial home page", "CommercialSupportWebSite": "Commercial support web site", - "CommunityWebSite": "ABP community web site" + "CommunityWebSite": "ABP community web site", + "ManageAccount": "My Account | ABP.IO" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/en.json index eb49443d6e..c4581a5fd8 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/en.json @@ -9,6 +9,7 @@ "OfficialBlog": "Official blog", "CommercialHomePage": "Commercial home page", "CommercialSupportWebSite": "Commercial support web site", - "CommunityWebSite": "ABP community web site" + "CommunityWebSite": "ABP community web site", + "ManageAccount": "My Account | ABP.IO" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/tr.json index e403e72cf6..a7fec38074 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/tr.json @@ -9,6 +9,7 @@ "OfficialBlog": "Resmi blog", "CommercialHomePage": "Kurumsal ana sayfa", "CommercialSupportWebSite": "Kurumsal destek web sitesi", - "CommunityWebSite": "ABP topluluk web sitesi" + "CommunityWebSite": "ABP topluluk web sitesi", + "ManageAccount": "Hesabım | ABP.IO" } } \ No newline at end of file From 222019e232c12047ef4c2e3bcdf06f0e42b99fa7 Mon Sep 17 00:00:00 2001 From: Mehmet Erim Date: Tue, 21 Sep 2021 10:02:08 +0300 Subject: [PATCH 19/26] add chart.js to allowedCommonJsDependencies --- .../packages/components/chart.js/src/chart.component.ts | 2 +- npm/ng-packs/packages/components/ng-package.json | 2 +- npm/ng-packs/packages/theme-shared/ng-package.json | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts index f0cc5e0f30..670ba01f42 100644 --- a/npm/ng-packs/packages/components/chart.js/src/chart.component.ts +++ b/npm/ng-packs/packages/components/chart.js/src/chart.component.ts @@ -10,7 +10,7 @@ import { OnDestroy, Output, SimpleChanges, - ViewChild + ViewChild, } from '@angular/core'; let Chart: any; diff --git a/npm/ng-packs/packages/components/ng-package.json b/npm/ng-packs/packages/components/ng-package.json index a5343f978a..76a155d16f 100644 --- a/npm/ng-packs/packages/components/ng-package.json +++ b/npm/ng-packs/packages/components/ng-package.json @@ -4,5 +4,5 @@ "lib": { "entryFile": "src/public-api.ts" }, - "allowedNonPeerDependencies": ["ng-zorro-antd"] + "allowedNonPeerDependencies": ["ng-zorro-antd", "chart.js"] } diff --git a/npm/ng-packs/packages/theme-shared/ng-package.json b/npm/ng-packs/packages/theme-shared/ng-package.json index b9a2dcad73..6ed0e095ce 100644 --- a/npm/ng-packs/packages/theme-shared/ng-package.json +++ b/npm/ng-packs/packages/theme-shared/ng-package.json @@ -11,7 +11,6 @@ "@ng-bootstrap/ng-bootstrap", "@ngx-validate/core", "@swimlane/ngx-datatable", - "bootstrap", - "chart.js" + "bootstrap" ] } From 1413dec836645d0e4a933948432b1b49dcb17cd1 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 21 Sep 2021 15:24:48 +0800 Subject: [PATCH 20/26] Remove ModelBuilderConfigurationOptions of all modules --- ...tLoggingDbContextModelBuilderExtensions.cs | 22 ++----- ...LoggingModelBuilderConfigurationOptions.cs | 18 ------ ...AbpAuditLoggingMongoDbContextExtensions.cs | 14 +---- ...ngMongoModelBuilderConfigurationOptions.cs | 14 ----- ...undJobsDbContextModelCreatingExtensions.cs | 12 +--- ...undJobsModelBuilderConfigurationOptions.cs | 18 ------ .../BackgroundJobsMongoDbContextExtensions.cs | 16 ++--- ...bsMongoModelBuilderConfigurationOptions.cs | 14 ----- ...StoringDbContextModelCreatingExtensions.cs | 15 +---- ...StoringModelBuilderConfigurationOptions.cs | 18 ------ .../BlobStoringMongoDbContextExtensions.cs | 18 ++---- ...ngMongoModelBuilderConfigurationOptions.cs | 14 ----- ...BloggingDbContextModelBuilderExtensions.cs | 25 +++----- ...loggingModelBuilderConfigurationOptions.cs | 15 ----- .../BloggingMongoDbContextExtensions.cs | 22 +++---- ...ngMongoModelBuilderConfigurationOptions.cs | 14 ----- .../CmsKitDbContextModelCreatingExtensions.cs | 35 ++++------- .../CmsKitModelBuilderConfigurationOptions.cs | 18 ------ .../MongoDB/CmsKitMongoDbContextExtensions.cs | 12 +--- ...itMongoModelBuilderConfigurationOptions.cs | 14 ----- .../DocsDbContextModelBuilderExtensions.cs | 19 ++---- .../DocsModelBuilderConfigurationOptions.cs | 15 ----- .../MongoDB/DocsMongoDbContextExtensions.cs | 16 ++--- ...csMongoModelBuilderConfigurationOptions.cs | 14 ----- ...agementDbContextModelCreatingExtensions.cs | 12 +--- ...agementModelBuilderConfigurationOptions.cs | 18 ------ ...atureManagementMongoDbContextExtensions.cs | 14 +---- ...ntMongoModelBuilderConfigurationOptions.cs | 15 ----- ...yServerDbContextModelCreatingExtensions.cs | 59 ++++++++----------- ...yServerModelBuilderConfigurationOptions.cs | 23 -------- ...pIdentityServerMongoDbContextExtensions.cs | 24 +++----- ...erMongoModelBuilderConfigurationOptions.cs | 13 ---- ...nagementDbContextModelBuilderExtensions.cs | 15 +---- ...agementModelBuilderConfigurationOptions.cs | 18 ------ ...ssionManagementMongoDbContextExtensions.cs | 14 +---- ...ntMongoModelBuilderConfigurationOptions.cs | 14 ----- ...nagementDbContextModelBuilderExtensions.cs | 28 +-------- ...ttingManagementMongoDbContextExtensions.cs | 12 +--- ...ntMongoModelBuilderConfigurationOptions.cs | 14 ----- ...agementDbContextModelCreatingExtensions.cs | 15 +---- ...agementModelBuilderConfigurationOptions.cs | 18 ------ ...enantManagementMongoDbContextExtensions.cs | 14 +---- ...ntMongoModelBuilderConfigurationOptions.cs | 14 ----- 43 files changed, 117 insertions(+), 649 deletions(-) delete mode 100644 modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingModelBuilderConfigurationOptions.cs delete mode 100644 modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AuditLoggingMongoModelBuilderConfigurationOptions.cs delete mode 100644 modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo/Abp/BackgroundJobs/EntityFrameworkCore/BackgroundJobsModelBuilderConfigurationOptions.cs delete mode 100644 modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo/Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoModelBuilderConfigurationOptions.cs delete mode 100644 modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringModelBuilderConfigurationOptions.cs delete mode 100644 modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoModelBuilderConfigurationOptions.cs delete mode 100644 modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingModelBuilderConfigurationOptions.cs delete mode 100644 modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/MongoDB/BloggingMongoModelBuilderConfigurationOptions.cs delete mode 100644 modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitModelBuilderConfigurationOptions.cs delete mode 100644 modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoModelBuilderConfigurationOptions.cs delete mode 100644 modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/EntityFrameworkCore/DocsModelBuilderConfigurationOptions.cs delete mode 100644 modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/MongoDB/DocsMongoModelBuilderConfigurationOptions.cs delete mode 100644 modules/feature-management/src/Volo.Abp.FeatureManagement.EntityFrameworkCore/Volo/Abp/FeatureManagement/EntityFrameworkCore/FeatureManagementModelBuilderConfigurationOptions.cs delete mode 100644 modules/feature-management/src/Volo.Abp.FeatureManagement.MongoDB/Volo/Abp/FeatureManagement/MongoDB/FeatureManagementMongoModelBuilderConfigurationOptions.cs delete mode 100644 modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerModelBuilderConfigurationOptions.cs delete mode 100644 modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/IdentityServerMongoModelBuilderConfigurationOptions.cs delete mode 100644 modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementModelBuilderConfigurationOptions.cs delete mode 100644 modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/PermissionManagementMongoModelBuilderConfigurationOptions.cs delete mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.MongoDB/Volo/Abp/SettingManagement/MongoDB/SettingManagementMongoModelBuilderConfigurationOptions.cs delete mode 100644 modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementModelBuilderConfigurationOptions.cs delete mode 100644 modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo/Abp/TenantManagement/MongoDb/TenantManagementMongoModelBuilderConfigurationOptions.cs diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs index 51c30ef0a1..37abf469ef 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingDbContextModelBuilderExtensions.cs @@ -1,29 +1,19 @@ -using System; -using JetBrains.Annotations; +using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.Modeling; -using Volo.Abp.Identity.EntityFrameworkCore; namespace Volo.Abp.AuditLogging.EntityFrameworkCore { public static class AbpAuditLoggingDbContextModelBuilderExtensions { public static void ConfigureAuditLogging( - [NotNull] this ModelBuilder builder, - Action optionsAction = null) + [NotNull] this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new AbpAuditLoggingModelBuilderConfigurationOptions( - AbpAuditLoggingDbProperties.DbTablePrefix, - AbpAuditLoggingDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.ToTable(options.TablePrefix + "AuditLogs", options.Schema); + b.ToTable(AbpAuditLoggingDbProperties.DbTablePrefix + "AuditLogs", AbpAuditLoggingDbProperties.DbSchema); b.ConfigureByConvention(); @@ -56,7 +46,7 @@ namespace Volo.Abp.AuditLogging.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "AuditLogActions", options.Schema); + b.ToTable(AbpAuditLoggingDbProperties.DbTablePrefix + "AuditLogActions", AbpAuditLoggingDbProperties.DbSchema); b.ConfigureByConvention(); @@ -75,7 +65,7 @@ namespace Volo.Abp.AuditLogging.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "EntityChanges", options.Schema); + b.ToTable(AbpAuditLoggingDbProperties.DbTablePrefix + "EntityChanges", AbpAuditLoggingDbProperties.DbSchema); b.ConfigureByConvention(); @@ -96,7 +86,7 @@ namespace Volo.Abp.AuditLogging.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "EntityPropertyChanges", options.Schema); + b.ToTable(AbpAuditLoggingDbProperties.DbTablePrefix + "EntityPropertyChanges", AbpAuditLoggingDbProperties.DbSchema); b.ConfigureByConvention(); diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingModelBuilderConfigurationOptions.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingModelBuilderConfigurationOptions.cs deleted file mode 100644 index 404ce00d0b..0000000000 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.EntityFrameworkCore.Modeling; - -namespace Volo.Abp.Identity.EntityFrameworkCore -{ - public class AbpAuditLoggingModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - public AbpAuditLoggingModelBuilderConfigurationOptions( - [NotNull] string tablePrefix, - [CanBeNull] string schema) - : base( - tablePrefix, - schema) - { - - } - } -} \ No newline at end of file diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbContextExtensions.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbContextExtensions.cs index 40411691cb..48b60107ff 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbContextExtensions.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AbpAuditLoggingMongoDbContextExtensions.cs @@ -1,25 +1,17 @@ -using System; -using Volo.Abp.MongoDB; +using Volo.Abp.MongoDB; namespace Volo.Abp.AuditLogging.MongoDB { public static class AbpAuditLoggingMongoDbContextExtensions { public static void ConfigureAuditLogging( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new AuditLoggingMongoModelBuilderConfigurationOptions( - AbpAuditLoggingDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "AuditLogs"; + b.CollectionName = AbpAuditLoggingDbProperties.DbTablePrefix + "AuditLogs"; }); } } diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AuditLoggingMongoModelBuilderConfigurationOptions.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AuditLoggingMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index 553ba4d01c..0000000000 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/AuditLoggingMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace Volo.Abp.AuditLogging.MongoDB -{ - public class AuditLoggingMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public AuditLoggingMongoModelBuilderConfigurationOptions( - [NotNull] string collectionPrefix = "") - : base(collectionPrefix) - { - } - } -} diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo/Abp/BackgroundJobs/EntityFrameworkCore/BackgroundJobsDbContextModelCreatingExtensions.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo/Abp/BackgroundJobs/EntityFrameworkCore/BackgroundJobsDbContextModelCreatingExtensions.cs index 76d39a77ae..1781c7067d 100644 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo/Abp/BackgroundJobs/EntityFrameworkCore/BackgroundJobsDbContextModelCreatingExtensions.cs +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo/Abp/BackgroundJobs/EntityFrameworkCore/BackgroundJobsDbContextModelCreatingExtensions.cs @@ -7,8 +7,7 @@ namespace Volo.Abp.BackgroundJobs.EntityFrameworkCore public static class BackgroundJobsDbContextModelCreatingExtensions { public static void ConfigureBackgroundJobs( - this ModelBuilder builder, - Action optionsAction = null) + this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); @@ -17,16 +16,9 @@ namespace Volo.Abp.BackgroundJobs.EntityFrameworkCore return; } - var options = new BackgroundJobsModelBuilderConfigurationOptions( - BackgroundJobsDbProperties.DbTablePrefix, - BackgroundJobsDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.ToTable(options.TablePrefix + "BackgroundJobs", options.Schema); + b.ToTable(BackgroundJobsDbProperties.DbTablePrefix + "BackgroundJobs", BackgroundJobsDbProperties.DbSchema); b.ConfigureByConvention(); diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo/Abp/BackgroundJobs/EntityFrameworkCore/BackgroundJobsModelBuilderConfigurationOptions.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo/Abp/BackgroundJobs/EntityFrameworkCore/BackgroundJobsModelBuilderConfigurationOptions.cs deleted file mode 100644 index 47734aa3a3..0000000000 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo/Abp/BackgroundJobs/EntityFrameworkCore/BackgroundJobsModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.EntityFrameworkCore.Modeling; - -namespace Volo.Abp.BackgroundJobs.EntityFrameworkCore -{ - public class BackgroundJobsModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - public BackgroundJobsModelBuilderConfigurationOptions( - [NotNull] string tablePrefix = "", - [CanBeNull] string schema = null) - : base( - tablePrefix, - schema) - { - - } - } -} \ No newline at end of file diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo/Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbContextExtensions.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo/Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbContextExtensions.cs index 31291f2d9b..410218e5e6 100644 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo/Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbContextExtensions.cs +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo/Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbContextExtensions.cs @@ -1,26 +1,18 @@ -using System; -using Volo.Abp.MongoDB; +using Volo.Abp.MongoDB; namespace Volo.Abp.BackgroundJobs.MongoDB { public static class BackgroundJobsMongoDbContextExtensions { public static void ConfigureBackgroundJobs( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new BackgroundJobsMongoModelBuilderConfigurationOptions( - BackgroundJobsDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "BackgroundJobs"; + b.CollectionName = BackgroundJobsDbProperties.DbTablePrefix + "BackgroundJobs"; }); } } -} \ No newline at end of file +} diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo/Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoModelBuilderConfigurationOptions.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo/Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index 7590fb0d12..0000000000 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo/Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace Volo.Abp.BackgroundJobs.MongoDB -{ - public class BackgroundJobsMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public BackgroundJobsMongoModelBuilderConfigurationOptions( - [NotNull] string collectionPrefix = "") - : base(collectionPrefix) - { - } - } -} \ No newline at end of file diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDbContextModelCreatingExtensions.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDbContextModelCreatingExtensions.cs index ddcaae7911..fe0e289fb1 100644 --- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDbContextModelCreatingExtensions.cs +++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringDbContextModelCreatingExtensions.cs @@ -1,5 +1,4 @@ using Microsoft.EntityFrameworkCore; -using System; using Volo.Abp.EntityFrameworkCore.Modeling; namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore @@ -7,21 +6,13 @@ namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore public static class BlobStoringDbContextModelCreatingExtensions { public static void ConfigureBlobStoring( - this ModelBuilder builder, - Action optionsAction = null) + this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new BlobStoringModelBuilderConfigurationOptions( - BlobStoringDatabaseDbProperties.DbTablePrefix, - BlobStoringDatabaseDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.ToTable(options.TablePrefix + "BlobContainers", options.Schema); + b.ToTable(BlobStoringDatabaseDbProperties.DbTablePrefix + "BlobContainers", BlobStoringDatabaseDbProperties.DbSchema); b.ConfigureByConvention(); @@ -36,7 +27,7 @@ namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "Blobs", options.Schema); + b.ToTable(BlobStoringDatabaseDbProperties.DbTablePrefix + "Blobs", BlobStoringDatabaseDbProperties.DbSchema); b.ConfigureByConvention(); diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringModelBuilderConfigurationOptions.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringModelBuilderConfigurationOptions.cs deleted file mode 100644 index fce10576be..0000000000 --- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore/Volo/Abp/BlobStoring/Database/EntityFrameworkCore/BlobStoringModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.EntityFrameworkCore.Modeling; - -namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore -{ - public class BlobStoringModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - public BlobStoringModelBuilderConfigurationOptions( - [NotNull] string tablePrefix = "", - [CanBeNull] string schema = null) - : base( - tablePrefix, - schema) - { - - } - } -} \ No newline at end of file diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoDbContextExtensions.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoDbContextExtensions.cs index f96f991bc9..cc5b6720b7 100644 --- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoDbContextExtensions.cs +++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoDbContextExtensions.cs @@ -1,31 +1,23 @@ -using System; -using Volo.Abp.MongoDB; +using Volo.Abp.MongoDB; namespace Volo.Abp.BlobStoring.Database.MongoDB { public static class BlobStoringMongoDbContextExtensions { public static void ConfigureBlobStoring( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new BlobStoringMongoModelBuilderConfigurationOptions( - BlobStoringDatabaseDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "BlobContainers"; + b.CollectionName = BlobStoringDatabaseDbProperties.DbTablePrefix + "BlobContainers"; }); builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "Blobs"; + b.CollectionName = BlobStoringDatabaseDbProperties.DbTablePrefix + "Blobs"; }); } } -} \ No newline at end of file +} diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoModelBuilderConfigurationOptions.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index f0f786e1dd..0000000000 --- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB/Volo/Abp/BlobStoring/Database/MongoDB/BlobStoringMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace Volo.Abp.BlobStoring.Database.MongoDB -{ - public class BlobStoringMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public BlobStoringMongoModelBuilderConfigurationOptions( - [NotNull] string collectionPrefix = "") - : base(collectionPrefix) - { - } - } -} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs index 4a0d23a0fb..3386da25a5 100644 --- a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs +++ b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs @@ -1,5 +1,4 @@ -using System; -using JetBrains.Annotations; +using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using Volo.Abp; using Volo.Abp.EntityFrameworkCore.Modeling; @@ -15,8 +14,7 @@ namespace Volo.Blogging.EntityFrameworkCore public static class BloggingDbContextModelBuilderExtensions { public static void ConfigureBlogging( - [NotNull] this ModelBuilder builder, - Action optionsAction = null) + [NotNull] this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); @@ -25,16 +23,9 @@ namespace Volo.Blogging.EntityFrameworkCore return; } - var options = new BloggingModelBuilderConfigurationOptions( - BloggingDbProperties.DbTablePrefix, - BloggingDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.ToTable(options.TablePrefix + "Users", options.Schema); + b.ToTable(BloggingDbProperties.DbTablePrefix + "Users", BloggingDbProperties.DbSchema); b.ConfigureByConvention(); b.ConfigureAbpUser(); @@ -44,7 +35,7 @@ namespace Volo.Blogging.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "Blogs", options.Schema); + b.ToTable(BloggingDbProperties.DbTablePrefix + "Blogs", BloggingDbProperties.DbSchema); b.ConfigureByConvention(); @@ -57,7 +48,7 @@ namespace Volo.Blogging.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "Posts", options.Schema); + b.ToTable(BloggingDbProperties.DbTablePrefix + "Posts", BloggingDbProperties.DbSchema); b.ConfigureByConvention(); @@ -77,7 +68,7 @@ namespace Volo.Blogging.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "Comments", options.Schema); + b.ToTable(BloggingDbProperties.DbTablePrefix + "Comments", BloggingDbProperties.DbSchema); b.ConfigureByConvention(); @@ -93,7 +84,7 @@ namespace Volo.Blogging.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "Tags", options.Schema); + b.ToTable(BloggingDbProperties.DbTablePrefix + "Tags", BloggingDbProperties.DbSchema); b.ConfigureByConvention(); @@ -108,7 +99,7 @@ namespace Volo.Blogging.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "PostTags", options.Schema); + b.ToTable(BloggingDbProperties.DbTablePrefix + "PostTags", BloggingDbProperties.DbSchema); b.ConfigureByConvention(); diff --git a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingModelBuilderConfigurationOptions.cs b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingModelBuilderConfigurationOptions.cs deleted file mode 100644 index af888ab402..0000000000 --- a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,15 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.EntityFrameworkCore.Modeling; - -namespace Volo.Blogging.EntityFrameworkCore -{ - public class BloggingModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - public BloggingModelBuilderConfigurationOptions( - [NotNull] string tablePrefix = "", - [CanBeNull] string schema = null) - : base(tablePrefix, schema) - { - } - } -} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/MongoDB/BloggingMongoDbContextExtensions.cs b/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/MongoDB/BloggingMongoDbContextExtensions.cs index 3defbc1287..b04f0a74fc 100644 --- a/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/MongoDB/BloggingMongoDbContextExtensions.cs +++ b/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/MongoDB/BloggingMongoDbContextExtensions.cs @@ -1,5 +1,4 @@ -using System; -using Volo.Abp; +using Volo.Abp; using Volo.Abp.MongoDB; using Volo.Blogging.Blogs; using Volo.Blogging.Comments; @@ -11,40 +10,33 @@ namespace Volo.Blogging.MongoDB public static class BloggingMongoDbContextExtensions { public static void ConfigureBlogging( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new BloggingMongoModelBuilderConfigurationOptions( - BloggingDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "Users"; + b.CollectionName = BloggingDbProperties.DbTablePrefix + "Users"; }); builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "Blogs"; + b.CollectionName = BloggingDbProperties.DbTablePrefix + "Blogs"; }); builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "Posts"; + b.CollectionName = BloggingDbProperties.DbTablePrefix + "Posts"; }); builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "Tags"; + b.CollectionName = BloggingDbProperties.DbTablePrefix + "Tags"; }); builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "Comments"; + b.CollectionName = BloggingDbProperties.DbTablePrefix + "Comments"; }); } } diff --git a/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/MongoDB/BloggingMongoModelBuilderConfigurationOptions.cs b/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/MongoDB/BloggingMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index d2fb415166..0000000000 --- a/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/MongoDB/BloggingMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace Volo.Blogging.MongoDB -{ - public class BloggingMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public BloggingMongoModelBuilderConfigurationOptions( - [NotNull] string collectionPrefix = "") - : base(collectionPrefix) - { - } - } -} diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs index f7964c1711..14a242a9de 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs @@ -1,5 +1,4 @@ using Microsoft.EntityFrameworkCore; -using System; using Volo.Abp; using Volo.Abp.EntityFrameworkCore.Modeling; using Volo.Abp.GlobalFeatures; @@ -20,23 +19,15 @@ namespace Volo.CmsKit.EntityFrameworkCore public static class CmsKitDbContextModelCreatingExtensions { public static void ConfigureCmsKit( - this ModelBuilder builder, - Action optionsAction = null) + this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new CmsKitModelBuilderConfigurationOptions( - CmsKitDbProperties.DbTablePrefix, - CmsKitDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - if (GlobalFeatureManager.Instance.IsEnabled()) { builder.Entity(b => { - b.ToTable(options.TablePrefix + "Users", options.Schema); + b.ToTable(CmsKitDbProperties.DbTablePrefix + "Users", CmsKitDbProperties.DbSchema); b.ConfigureByConvention(); b.ConfigureAbpUser(); @@ -56,7 +47,7 @@ namespace Volo.CmsKit.EntityFrameworkCore { builder.Entity(b => { - b.ToTable(options.TablePrefix + "UserReactions", options.Schema); + b.ToTable(CmsKitDbProperties.DbTablePrefix + "UserReactions", CmsKitDbProperties.DbSchema); b.ConfigureByConvention(); @@ -79,7 +70,7 @@ namespace Volo.CmsKit.EntityFrameworkCore { builder.Entity(b => { - b.ToTable(options.TablePrefix + "Comments", options.Schema); + b.ToTable(CmsKitDbProperties.DbTablePrefix + "Comments", CmsKitDbProperties.DbSchema); b.ConfigureByConvention(); @@ -103,7 +94,7 @@ namespace Volo.CmsKit.EntityFrameworkCore { builder.Entity(r => { - r.ToTable(options.TablePrefix + "Ratings", options.Schema); + r.ToTable(CmsKitDbProperties.DbTablePrefix + "Ratings", CmsKitDbProperties.DbSchema); r.ConfigureByConvention(); @@ -125,7 +116,7 @@ namespace Volo.CmsKit.EntityFrameworkCore { builder.Entity(b => { - b.ToTable(options.TablePrefix + "Tags", options.Schema); + b.ToTable(CmsKitDbProperties.DbTablePrefix + "Tags", CmsKitDbProperties.DbSchema); b.ConfigureByConvention(); @@ -143,7 +134,7 @@ namespace Volo.CmsKit.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "EntityTags", options.Schema); + b.ToTable(CmsKitDbProperties.DbTablePrefix + "EntityTags", CmsKitDbProperties.DbSchema); b.ConfigureByConvention(); @@ -167,7 +158,7 @@ namespace Volo.CmsKit.EntityFrameworkCore { builder.Entity(b => { - b.ToTable(options.TablePrefix + "Pages", options.Schema); + b.ToTable(CmsKitDbProperties.DbTablePrefix + "Pages", CmsKitDbProperties.DbSchema); b.ConfigureByConvention(); @@ -189,7 +180,7 @@ namespace Volo.CmsKit.EntityFrameworkCore { builder.Entity(b => { - b.ToTable(options.TablePrefix + "Blogs", options.Schema); + b.ToTable(CmsKitDbProperties.DbTablePrefix + "Blogs", CmsKitDbProperties.DbSchema); b.ConfigureByConvention(); @@ -202,7 +193,7 @@ namespace Volo.CmsKit.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "BlogPosts", options.Schema); + b.ToTable(CmsKitDbProperties.DbTablePrefix + "BlogPosts", CmsKitDbProperties.DbSchema); b.ConfigureByConvention(); @@ -219,7 +210,7 @@ namespace Volo.CmsKit.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "BlogFeatures", options.Schema); + b.ToTable(CmsKitDbProperties.DbTablePrefix + "BlogFeatures", CmsKitDbProperties.DbSchema); b.ConfigureByConvention(); @@ -239,7 +230,7 @@ namespace Volo.CmsKit.EntityFrameworkCore { builder.Entity(b => { - b.ToTable(options.TablePrefix + "MediaDescriptors", options.Schema); + b.ToTable(CmsKitDbProperties.DbTablePrefix + "MediaDescriptors", CmsKitDbProperties.DbSchema); b.ConfigureByConvention(); @@ -260,7 +251,7 @@ namespace Volo.CmsKit.EntityFrameworkCore { builder.Entity(b => { - b.ToTable(options.TablePrefix + "MenuItems", options.Schema); + b.ToTable(CmsKitDbProperties.DbTablePrefix + "MenuItems", CmsKitDbProperties.DbSchema); b.ConfigureByConvention(); diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitModelBuilderConfigurationOptions.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitModelBuilderConfigurationOptions.cs deleted file mode 100644 index c62b36792c..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.EntityFrameworkCore.Modeling; - -namespace Volo.CmsKit.EntityFrameworkCore -{ - public class CmsKitModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - public CmsKitModelBuilderConfigurationOptions( - [NotNull] string tablePrefix = "", - [CanBeNull] string schema = null) - : base( - tablePrefix, - schema) - { - - } - } -} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContextExtensions.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContextExtensions.cs index 9ff9ff8797..a7dbbda5c4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContextExtensions.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContextExtensions.cs @@ -1,5 +1,4 @@ -using System; -using Volo.Abp; +using Volo.Abp; using Volo.Abp.MongoDB; using Volo.CmsKit.Blogs; using Volo.CmsKit.Comments; @@ -16,17 +15,10 @@ namespace Volo.CmsKit.MongoDB public static class CmsKitMongoDbContextExtensions { public static void ConfigureCmsKit( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new CmsKitMongoModelBuilderConfigurationOptions( - CmsKitDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); - builder.Entity(x => { x.CollectionName = CmsKitDbProperties.DbTablePrefix + "Users"; diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoModelBuilderConfigurationOptions.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index 70f21e758f..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace Volo.CmsKit.MongoDB -{ - public class CmsKitMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public CmsKitMongoModelBuilderConfigurationOptions( - [NotNull] string collectionPrefix = "") - : base(collectionPrefix) - { - } - } -} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/EntityFrameworkCore/DocsDbContextModelBuilderExtensions.cs b/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/EntityFrameworkCore/DocsDbContextModelBuilderExtensions.cs index 6f7c7d1a89..f3a5997048 100644 --- a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/EntityFrameworkCore/DocsDbContextModelBuilderExtensions.cs +++ b/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/EntityFrameworkCore/DocsDbContextModelBuilderExtensions.cs @@ -1,5 +1,4 @@ -using System; -using JetBrains.Annotations; +using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using Volo.Abp; using Volo.Abp.EntityFrameworkCore.Modeling; @@ -11,8 +10,7 @@ namespace Volo.Docs.EntityFrameworkCore public static class DocsDbContextModelBuilderExtensions { public static void ConfigureDocs( - [NotNull] this ModelBuilder builder, - Action optionsAction = null) + [NotNull] this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); @@ -21,16 +19,9 @@ namespace Volo.Docs.EntityFrameworkCore return; } - var options = new DocsModelBuilderConfigurationOptions( - DocsDbProperties.DbTablePrefix, - DocsDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.ToTable(options.TablePrefix + "Projects", options.Schema); + b.ToTable(DocsDbProperties.DbTablePrefix + "Projects", DocsDbProperties.DbSchema); b.ConfigureByConvention(); @@ -46,7 +37,7 @@ namespace Volo.Docs.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "Documents", options.Schema); + b.ToTable(DocsDbProperties.DbTablePrefix + "Documents", DocsDbProperties.DbSchema); b.ConfigureByConvention(); @@ -70,7 +61,7 @@ namespace Volo.Docs.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "DocumentContributors", options.Schema); + b.ToTable(DocsDbProperties.DbTablePrefix + "DocumentContributors", DocsDbProperties.DbSchema); b.ConfigureByConvention(); diff --git a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/EntityFrameworkCore/DocsModelBuilderConfigurationOptions.cs b/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/EntityFrameworkCore/DocsModelBuilderConfigurationOptions.cs deleted file mode 100644 index 0baf8b4afe..0000000000 --- a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/EntityFrameworkCore/DocsModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,15 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.EntityFrameworkCore.Modeling; - -namespace Volo.Docs.EntityFrameworkCore -{ - public class DocsModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - public DocsModelBuilderConfigurationOptions( - [NotNull] string tablePrefix, - [CanBeNull] string schema) - : base(tablePrefix, schema) - { - } - } -} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/MongoDB/DocsMongoDbContextExtensions.cs b/modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/MongoDB/DocsMongoDbContextExtensions.cs index c1645885d2..56d367c651 100644 --- a/modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/MongoDB/DocsMongoDbContextExtensions.cs +++ b/modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/MongoDB/DocsMongoDbContextExtensions.cs @@ -1,5 +1,4 @@ -using System; -using Volo.Abp; +using Volo.Abp; using Volo.Abp.MongoDB; using Volo.Docs.Documents; using Volo.Docs.Projects; @@ -9,25 +8,18 @@ namespace Volo.Docs.MongoDB public static class DocsMongoDbContextExtensions { public static void ConfigureDocs( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new DocsMongoModelBuilderConfigurationOptions( - DocsDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "Projects"; + b.CollectionName = DocsDbProperties.DbTablePrefix + "Projects"; }); builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "DocumentS"; + b.CollectionName = DocsDbProperties.DbTablePrefix + "DocumentS"; }); } } diff --git a/modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/MongoDB/DocsMongoModelBuilderConfigurationOptions.cs b/modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/MongoDB/DocsMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index 4bb1c76372..0000000000 --- a/modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/MongoDB/DocsMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace Volo.Docs.MongoDB -{ - public class DocsMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public DocsMongoModelBuilderConfigurationOptions( - [NotNull] string collectionPrefix) - : base(collectionPrefix) - { - } - } -} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.EntityFrameworkCore/Volo/Abp/FeatureManagement/EntityFrameworkCore/FeatureManagementDbContextModelCreatingExtensions.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.EntityFrameworkCore/Volo/Abp/FeatureManagement/EntityFrameworkCore/FeatureManagementDbContextModelCreatingExtensions.cs index b482788e49..084e677214 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.EntityFrameworkCore/Volo/Abp/FeatureManagement/EntityFrameworkCore/FeatureManagementDbContextModelCreatingExtensions.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.EntityFrameworkCore/Volo/Abp/FeatureManagement/EntityFrameworkCore/FeatureManagementDbContextModelCreatingExtensions.cs @@ -7,8 +7,7 @@ namespace Volo.Abp.FeatureManagement.EntityFrameworkCore public static class FeatureManagementDbContextModelCreatingExtensions { public static void ConfigureFeatureManagement( - this ModelBuilder builder, - Action optionsAction = null) + this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); @@ -17,16 +16,9 @@ namespace Volo.Abp.FeatureManagement.EntityFrameworkCore return; } - var options = new FeatureManagementModelBuilderConfigurationOptions( - FeatureManagementDbProperties.DbTablePrefix, - FeatureManagementDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.ToTable(options.TablePrefix + "FeatureValues", options.Schema); + b.ToTable(FeatureManagementDbProperties.DbTablePrefix + "FeatureValues", FeatureManagementDbProperties.DbSchema); b.ConfigureByConvention(); diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.EntityFrameworkCore/Volo/Abp/FeatureManagement/EntityFrameworkCore/FeatureManagementModelBuilderConfigurationOptions.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.EntityFrameworkCore/Volo/Abp/FeatureManagement/EntityFrameworkCore/FeatureManagementModelBuilderConfigurationOptions.cs deleted file mode 100644 index ba8e38bd61..0000000000 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.EntityFrameworkCore/Volo/Abp/FeatureManagement/EntityFrameworkCore/FeatureManagementModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.EntityFrameworkCore.Modeling; - -namespace Volo.Abp.FeatureManagement.EntityFrameworkCore -{ - public class FeatureManagementModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - public FeatureManagementModelBuilderConfigurationOptions( - [NotNull] string tablePrefix = "", - [CanBeNull] string schema = null) - : base( - tablePrefix, - schema) - { - - } - } -} \ No newline at end of file diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.MongoDB/Volo/Abp/FeatureManagement/MongoDB/FeatureManagementMongoDbContextExtensions.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.MongoDB/Volo/Abp/FeatureManagement/MongoDB/FeatureManagementMongoDbContextExtensions.cs index 55ef3b616a..5988c1d57d 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.MongoDB/Volo/Abp/FeatureManagement/MongoDB/FeatureManagementMongoDbContextExtensions.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.MongoDB/Volo/Abp/FeatureManagement/MongoDB/FeatureManagementMongoDbContextExtensions.cs @@ -1,25 +1,17 @@ -using System; -using Volo.Abp.MongoDB; +using Volo.Abp.MongoDB; namespace Volo.Abp.FeatureManagement.MongoDB { public static class FeatureManagementMongoDbContextExtensions { public static void ConfigureFeatureManagement( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new FeatureManagementMongoModelBuilderConfigurationOptions( - FeatureManagementDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "FeatureValues"; + b.CollectionName = FeatureManagementDbProperties.DbTablePrefix + "FeatureValues"; }); } } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.MongoDB/Volo/Abp/FeatureManagement/MongoDB/FeatureManagementMongoModelBuilderConfigurationOptions.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.MongoDB/Volo/Abp/FeatureManagement/MongoDB/FeatureManagementMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index edb486e906..0000000000 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.MongoDB/Volo/Abp/FeatureManagement/MongoDB/FeatureManagementMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,15 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace Volo.Abp.FeatureManagement.MongoDB -{ - public class FeatureManagementMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public FeatureManagementMongoModelBuilderConfigurationOptions( - [NotNull] string collectionPrefix = "") - : base(collectionPrefix) - { - - } - } -} \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs index c8b0dc0682..27a609e97b 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs @@ -1,5 +1,4 @@ -using System; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.Modeling; using Volo.Abp.IdentityServer.ApiResources; @@ -14,8 +13,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore public static class IdentityServerDbContextModelCreatingExtensions { public static void ConfigureIdentityServer( - this ModelBuilder builder, - Action optionsAction = null) + this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); @@ -24,18 +22,11 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore return; } - var options = new IdentityServerModelBuilderConfigurationOptions( - AbpIdentityServerDbProperties.DbTablePrefix, - AbpIdentityServerDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - #region Client builder.Entity(b => { - b.ToTable(options.TablePrefix + "Clients", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "Clients", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -69,7 +60,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ClientGrantTypes", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ClientGrantTypes", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -82,7 +73,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ClientRedirectUris", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ClientRedirectUris", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -100,7 +91,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ClientPostLogoutRedirectUris", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ClientPostLogoutRedirectUris", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -120,7 +111,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ClientScopes", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ClientScopes", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -133,7 +124,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ClientSecrets", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ClientSecrets", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -152,7 +143,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ClientClaims", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ClientClaims", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -166,7 +157,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ClientIdPRestrictions", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ClientIdPRestrictions", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -179,7 +170,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ClientCorsOrigins", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ClientCorsOrigins", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -192,7 +183,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ClientProperties", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ClientProperties", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -214,7 +205,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "IdentityResources", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "IdentityResources", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -230,7 +221,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "IdentityResourceClaims", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "IdentityResourceClaims", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -243,7 +234,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "IdentityResourceProperties", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "IdentityResourceProperties", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -265,7 +256,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ApiResources", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ApiResources", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -284,7 +275,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ApiResourceSecrets", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ApiResourceSecrets", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -305,7 +296,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ApiResourceClaims", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ApiResourceClaims", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -318,7 +309,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ApiResourceScopes", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ApiResourceScopes", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -331,7 +322,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ApiResourceProperties", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ApiResourceProperties", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -353,7 +344,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ApiScopes", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ApiScopes", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -369,7 +360,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ApiScopeClaims", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ApiScopeClaims", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -382,7 +373,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "ApiScopeProperties", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "ApiScopeProperties", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -404,7 +395,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "PersistedGrants", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "PersistedGrants", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); @@ -438,7 +429,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "DeviceFlowCodes", options.Schema); + b.ToTable(AbpIdentityServerDbProperties.DbTablePrefix + "DeviceFlowCodes", AbpIdentityServerDbProperties.DbSchema); b.ConfigureByConvention(); diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerModelBuilderConfigurationOptions.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerModelBuilderConfigurationOptions.cs deleted file mode 100644 index 41a645bcd6..0000000000 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using JetBrains.Annotations; -using Volo.Abp.EntityFrameworkCore; -using Volo.Abp.EntityFrameworkCore.Modeling; - -namespace Volo.Abp.IdentityServer.EntityFrameworkCore -{ - public class IdentityServerModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - [Obsolete("No need to manually set database provider after v2.9+. If it doesn't set automatically, use modelBuilder.UseXXX() in the OnModelCreating method of your DbContext (XXX is your database provider name).")] - public EfCoreDatabaseProvider? DatabaseProvider { get; set; } - - public IdentityServerModelBuilderConfigurationOptions( - [NotNull] string tablePrefix, - [CanBeNull] string schema) - : base( - tablePrefix, - schema) - { - - } - } -} \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContextExtensions.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContextExtensions.cs index 6abfc0618d..ea3d2e40c9 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContextExtensions.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContextExtensions.cs @@ -1,5 +1,4 @@ -using System; -using Volo.Abp.IdentityServer.ApiResources; +using Volo.Abp.IdentityServer.ApiResources; using Volo.Abp.IdentityServer.ApiScopes; using Volo.Abp.IdentityServer.Clients; using Volo.Abp.IdentityServer.Devices; @@ -12,45 +11,38 @@ namespace Volo.Abp.IdentityServer.MongoDB public static class AbpIdentityServerMongoDbContextExtensions { public static void ConfigureIdentityServer( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new IdentityServerMongoModelBuilderConfigurationOptions( - AbpIdentityServerDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "ApiResources"; + b.CollectionName = AbpIdentityServerDbProperties.DbTablePrefix + "ApiResources"; }); builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "ApiScopes"; + b.CollectionName = AbpIdentityServerDbProperties.DbTablePrefix + "ApiScopes"; }); builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "IdentityResources"; + b.CollectionName = AbpIdentityServerDbProperties.DbTablePrefix + "IdentityResources"; }); builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "Clients"; + b.CollectionName = AbpIdentityServerDbProperties.DbTablePrefix + "Clients"; }); builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "PersistedGrants"; + b.CollectionName = AbpIdentityServerDbProperties.DbTablePrefix + "PersistedGrants"; }); builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "DeviceFlowCodes"; + b.CollectionName = AbpIdentityServerDbProperties.DbTablePrefix + "DeviceFlowCodes"; }); } } diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/IdentityServerMongoModelBuilderConfigurationOptions.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/IdentityServerMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index 55556e105b..0000000000 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/IdentityServerMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,13 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace Volo.Abp.IdentityServer.MongoDB -{ - public class IdentityServerMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public IdentityServerMongoModelBuilderConfigurationOptions([NotNull] string collectionPrefix = "") - : base(collectionPrefix) - { - } - } -} diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementDbContextModelBuilderExtensions.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementDbContextModelBuilderExtensions.cs index 8810f4a0bc..100143e033 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementDbContextModelBuilderExtensions.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementDbContextModelBuilderExtensions.cs @@ -1,5 +1,4 @@ -using System; -using JetBrains.Annotations; +using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.Modeling; @@ -8,21 +7,13 @@ namespace Volo.Abp.PermissionManagement.EntityFrameworkCore public static class AbpPermissionManagementDbContextModelBuilderExtensions { public static void ConfigurePermissionManagement( - [NotNull] this ModelBuilder builder, - [CanBeNull] Action optionsAction = null) + [NotNull] this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new AbpPermissionManagementModelBuilderConfigurationOptions( - AbpPermissionManagementDbProperties.DbTablePrefix, - AbpPermissionManagementDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.ToTable(options.TablePrefix + "PermissionGrants", options.Schema); + b.ToTable(AbpPermissionManagementDbProperties.DbTablePrefix + "PermissionGrants", AbpPermissionManagementDbProperties.DbSchema); b.ConfigureByConvention(); diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementModelBuilderConfigurationOptions.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementModelBuilderConfigurationOptions.cs deleted file mode 100644 index 1ddfcc9a8f..0000000000 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.EntityFrameworkCore.Modeling; - -namespace Volo.Abp.PermissionManagement.EntityFrameworkCore -{ - public class AbpPermissionManagementModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - public AbpPermissionManagementModelBuilderConfigurationOptions( - [NotNull] string tablePrefix, - [CanBeNull] string schema) - : base( - tablePrefix, - schema) - { - - } - } -} \ No newline at end of file diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbContextExtensions.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbContextExtensions.cs index cf81d69a19..7ed0a60d26 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbContextExtensions.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbContextExtensions.cs @@ -1,25 +1,17 @@ -using System; -using Volo.Abp.MongoDB; +using Volo.Abp.MongoDB; namespace Volo.Abp.PermissionManagement.MongoDB { public static class AbpPermissionManagementMongoDbContextExtensions { public static void ConfigurePermissionManagement( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new PermissionManagementMongoModelBuilderConfigurationOptions( - AbpPermissionManagementDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "PermissionGrants"; + b.CollectionName = AbpPermissionManagementDbProperties.DbTablePrefix + "PermissionGrants"; }); } } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/PermissionManagementMongoModelBuilderConfigurationOptions.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/PermissionManagementMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index acc7d5cb84..0000000000 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/PermissionManagementMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace Volo.Abp.PermissionManagement.MongoDB -{ - public class PermissionManagementMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public PermissionManagementMongoModelBuilderConfigurationOptions( - [NotNull] string tablePrefix = "") - : base(tablePrefix) - { - } - } -} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/SettingManagementDbContextModelBuilderExtensions.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/SettingManagementDbContextModelBuilderExtensions.cs index 5e9f75eefa..aafc18f8de 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/SettingManagementDbContextModelBuilderExtensions.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.EntityFrameworkCore/Volo/Abp/SettingManagement/EntityFrameworkCore/SettingManagementDbContextModelBuilderExtensions.cs @@ -1,29 +1,14 @@ -using System; -using JetBrains.Annotations; +using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.Modeling; namespace Volo.Abp.SettingManagement.EntityFrameworkCore { - public class SettingManagementModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - public SettingManagementModelBuilderConfigurationOptions( - [NotNull] string tablePrefix, - [CanBeNull] string schema) - : base( - tablePrefix, - schema) - { - - } - } - public static class SettingManagementDbContextModelBuilderExtensions { //TODO: Instead of getting parameters, get a action of SettingManagementModelBuilderConfigurationOptions like other modules public static void ConfigureSettingManagement( - [NotNull] this ModelBuilder builder, - [CanBeNull] Action optionsAction = null) + [NotNull] this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); @@ -32,16 +17,9 @@ namespace Volo.Abp.SettingManagement.EntityFrameworkCore return; } - var options = new SettingManagementModelBuilderConfigurationOptions( - AbpSettingManagementDbProperties.DbTablePrefix, - AbpSettingManagementDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.ToTable(options.TablePrefix + "Settings", options.Schema); + b.ToTable(AbpSettingManagementDbProperties.DbTablePrefix + "Settings", AbpSettingManagementDbProperties.DbSchema); b.ConfigureByConvention(); diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.MongoDB/Volo/Abp/SettingManagement/MongoDB/SettingManagementMongoDbContextExtensions.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.MongoDB/Volo/Abp/SettingManagement/MongoDB/SettingManagementMongoDbContextExtensions.cs index 349341b5d3..71199ecd3e 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.MongoDB/Volo/Abp/SettingManagement/MongoDB/SettingManagementMongoDbContextExtensions.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.MongoDB/Volo/Abp/SettingManagement/MongoDB/SettingManagementMongoDbContextExtensions.cs @@ -1,4 +1,3 @@ -using System; using Volo.Abp.MongoDB; namespace Volo.Abp.SettingManagement.MongoDB @@ -6,20 +5,13 @@ namespace Volo.Abp.SettingManagement.MongoDB public static class SettingManagementMongoDbContextExtensions { public static void ConfigureSettingManagement( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new SettingManagementMongoModelBuilderConfigurationOptions( - AbpSettingManagementDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "Settings"; + b.CollectionName = AbpSettingManagementDbProperties.DbTablePrefix + "Settings"; }); } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.MongoDB/Volo/Abp/SettingManagement/MongoDB/SettingManagementMongoModelBuilderConfigurationOptions.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.MongoDB/Volo/Abp/SettingManagement/MongoDB/SettingManagementMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index bdc423f8a1..0000000000 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.MongoDB/Volo/Abp/SettingManagement/MongoDB/SettingManagementMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace Volo.Abp.SettingManagement.MongoDB -{ - public class SettingManagementMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public SettingManagementMongoModelBuilderConfigurationOptions( - [NotNull] string tablePrefix = "") - : base(tablePrefix) - { - } - } -} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementDbContextModelCreatingExtensions.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementDbContextModelCreatingExtensions.cs index 398dc66fe5..95364c3901 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementDbContextModelCreatingExtensions.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementDbContextModelCreatingExtensions.cs @@ -1,4 +1,3 @@ -using System; using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.Modeling; @@ -8,8 +7,7 @@ namespace Volo.Abp.TenantManagement.EntityFrameworkCore public static class AbpTenantManagementDbContextModelCreatingExtensions { public static void ConfigureTenantManagement( - this ModelBuilder builder, - [CanBeNull] Action optionsAction = null) + this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); @@ -18,16 +16,9 @@ namespace Volo.Abp.TenantManagement.EntityFrameworkCore return; } - var options = new AbpTenantManagementModelBuilderConfigurationOptions( - AbpTenantManagementDbProperties.DbTablePrefix, - AbpTenantManagementDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.ToTable(options.TablePrefix + "Tenants", options.Schema); + b.ToTable(AbpTenantManagementDbProperties.DbTablePrefix + "Tenants", AbpTenantManagementDbProperties.DbSchema); b.ConfigureByConvention(); @@ -42,7 +33,7 @@ namespace Volo.Abp.TenantManagement.EntityFrameworkCore builder.Entity(b => { - b.ToTable(options.TablePrefix + "TenantConnectionStrings", options.Schema); + b.ToTable(AbpTenantManagementDbProperties.DbTablePrefix + "TenantConnectionStrings", AbpTenantManagementDbProperties.DbSchema); b.ConfigureByConvention(); diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementModelBuilderConfigurationOptions.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementModelBuilderConfigurationOptions.cs deleted file mode 100644 index 849ed68bae..0000000000 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.EntityFrameworkCore.Modeling; - -namespace Volo.Abp.TenantManagement.EntityFrameworkCore -{ - public class AbpTenantManagementModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - public AbpTenantManagementModelBuilderConfigurationOptions( - [NotNull] string tablePrefix, - [CanBeNull] string schema) - : base( - tablePrefix, - schema) - { - - } - } -} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbContextExtensions.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbContextExtensions.cs index 18b2049450..92f6db2d95 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbContextExtensions.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo/Abp/TenantManagement/MongoDb/AbpTenantManagementMongoDbContextExtensions.cs @@ -1,25 +1,17 @@ -using System; -using Volo.Abp.MongoDB; +using Volo.Abp.MongoDB; namespace Volo.Abp.TenantManagement.MongoDB { public static class AbpTenantManagementMongoDbContextExtensions { public static void ConfigureTenantManagement( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new TenantManagementMongoModelBuilderConfigurationOptions( - AbpTenantManagementDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); - builder.Entity(b => { - b.CollectionName = options.CollectionPrefix + "Tenants"; + b.CollectionName = AbpTenantManagementDbProperties.DbTablePrefix + "Tenants"; }); } } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo/Abp/TenantManagement/MongoDb/TenantManagementMongoModelBuilderConfigurationOptions.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo/Abp/TenantManagement/MongoDb/TenantManagementMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index 09f54572b2..0000000000 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo/Abp/TenantManagement/MongoDb/TenantManagementMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace Volo.Abp.TenantManagement.MongoDB -{ - public class TenantManagementMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public TenantManagementMongoModelBuilderConfigurationOptions( - [NotNull] string tablePrefix = "") - : base(tablePrefix) - { - } - } -} \ No newline at end of file From 157fb66f45c8bbaa20a7abfa3ea7b57aa99274d4 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 21 Sep 2021 15:45:52 +0800 Subject: [PATCH 21/26] Update IdentityServerDbContextModelCreatingExtensions.cs --- ...yServerDbContextModelCreatingExtensions.cs | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs index 27a609e97b..609ebebf2c 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs @@ -79,7 +79,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore b.HasKey(x => new {x.ClientId, x.RedirectUri}); - if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql)) + if (IsDatabaseProvider(builder, EfCoreDatabaseProvider.MySql)) { ClientRedirectUriConsts.RedirectUriMaxLengthValue = 300; } @@ -97,7 +97,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore b.HasKey(x => new {x.ClientId, x.PostLogoutRedirectUri}); - if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql)) + if (IsDatabaseProvider(builder, EfCoreDatabaseProvider.MySql)) { ClientPostLogoutRedirectUriConsts.PostLogoutRedirectUriMaxLengthValue = 300; } @@ -131,7 +131,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore b.HasKey(x => new {x.ClientId, x.Type, x.Value}); b.Property(x => x.Type).HasMaxLength(ClientSecretConsts.TypeMaxLength).IsRequired(); - if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle)) + if (IsDatabaseProvider(builder, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle)) { ClientSecretConsts.ValueMaxLength = 300; } @@ -190,7 +190,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore b.HasKey(x => new {x.ClientId, x.Key, x.Value}); b.Property(x => x.Key).HasMaxLength(ClientPropertyConsts.KeyMaxLength).IsRequired(); - if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql)) + if (IsDatabaseProvider(builder, EfCoreDatabaseProvider.MySql)) { ClientPropertyConsts.ValueMaxLength = 300; } @@ -241,7 +241,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore b.HasKey(x => new {x.IdentityResourceId, x.Key, x.Value}); b.Property(x => x.Key).HasMaxLength(IdentityResourcePropertyConsts.KeyMaxLength).IsRequired(); - if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle)) + if (IsDatabaseProvider(builder, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle)) { IdentityResourcePropertyConsts.ValueMaxLength = 300; } @@ -283,7 +283,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore b.Property(x => x.Type).HasMaxLength(ApiResourceSecretConsts.TypeMaxLength).IsRequired(); - if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle)) + if (IsDatabaseProvider(builder, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle)) { ApiResourceSecretConsts.ValueMaxLength = 300; } @@ -329,7 +329,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore b.HasKey(x => new {x.ApiResourceId, x.Key, x.Value}); b.Property(x => x.Key).HasMaxLength(ApiResourcePropertyConsts.KeyMaxLength).IsRequired(); - if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle)) + if (IsDatabaseProvider(builder, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle)) { ApiResourcePropertyConsts.ValueMaxLength = 300; } @@ -380,7 +380,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore b.HasKey(x => new {x.ApiScopeId, x.Key, x.Value}); b.Property(x => x.Key).HasMaxLength(ApiScopePropertyConsts.KeyMaxLength).IsRequired(); - if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle)) + if (IsDatabaseProvider(builder, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle)) { ApiScopePropertyConsts.ValueMaxLength = 300; } @@ -407,7 +407,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore b.Property(x => x.Description).HasMaxLength(PersistedGrantConsts.DescriptionMaxLength); b.Property(x => x.CreationTime).IsRequired(); - if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql)) + if (IsDatabaseProvider(builder, EfCoreDatabaseProvider.MySql)) { PersistedGrantConsts.DataMaxLengthValue = 10000; //TODO: MySQL accepts 20.000. We can consider to change in v3.0. } @@ -442,7 +442,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore b.Property(x => x.CreationTime).IsRequired(); b.Property(x => x.Expiration).IsRequired(); - if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql)) + if (IsDatabaseProvider(builder, EfCoreDatabaseProvider.MySql)) { DeviceFlowCodesConsts.DataMaxLength = 10000; //TODO: MySQL accepts 20.000. We can consider to change in v3.0. } @@ -462,13 +462,11 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore private static bool IsDatabaseProvider( ModelBuilder modelBuilder, - IdentityServerModelBuilderConfigurationOptions options, params EfCoreDatabaseProvider[] providers) { foreach (var provider in providers) { - if (options.DatabaseProvider == EfCoreDatabaseProvider.MySql || - modelBuilder.GetDatabaseProvider() == provider) + if (modelBuilder.GetDatabaseProvider() == provider) { return true; } From a30dc3b1ccb0e303c2f2208ce75ecedecf932728 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 21 Sep 2021 16:17:26 +0800 Subject: [PATCH 22/26] Remove ModelBuilderConfigurationOptions of module template --- ...ectNameDbContextModelCreatingExtensions.cs | 23 ++++++------------- ...ectNameModelBuilderConfigurationOptions.cs | 18 --------------- .../MyProjectNameMongoDbContextExtensions.cs | 14 +++-------- ...meMongoModelBuilderConfigurationOptions.cs | 14 ----------- 4 files changed, 10 insertions(+), 59 deletions(-) delete mode 100644 templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameModelBuilderConfigurationOptions.cs delete mode 100644 templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDB/MyProjectNameMongoModelBuilderConfigurationOptions.cs diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContextModelCreatingExtensions.cs b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContextModelCreatingExtensions.cs index 0e1e01628d..d8489151e4 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContextModelCreatingExtensions.cs +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContextModelCreatingExtensions.cs @@ -1,5 +1,4 @@ -using System; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Volo.Abp; namespace MyCompanyName.MyProjectName.EntityFrameworkCore @@ -7,30 +6,22 @@ namespace MyCompanyName.MyProjectName.EntityFrameworkCore public static class MyProjectNameDbContextModelCreatingExtensions { public static void ConfigureMyProjectName( - this ModelBuilder builder, - Action optionsAction = null) + this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - var options = new MyProjectNameModelBuilderConfigurationOptions( - MyProjectNameDbProperties.DbTablePrefix, - MyProjectNameDbProperties.DbSchema - ); - - optionsAction?.Invoke(options); - /* Configure all entities here. Example: builder.Entity(b => { //Configure table & schema name - b.ToTable(options.TablePrefix + "Questions", options.Schema); - + b.ToTable(MyProjectNameDbProperties.DbTablePrefix + "Questions", MyProjectNameDbProperties.DbSchema); + b.ConfigureByConvention(); - + //Properties b.Property(q => q.Title).IsRequired().HasMaxLength(QuestionConsts.MaxTitleLength); - + //Relations b.HasMany(question => question.Tags).WithOne().HasForeignKey(qt => qt.QuestionId); @@ -40,4 +31,4 @@ namespace MyCompanyName.MyProjectName.EntityFrameworkCore */ } } -} \ No newline at end of file +} diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameModelBuilderConfigurationOptions.cs b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameModelBuilderConfigurationOptions.cs deleted file mode 100644 index 8b3c2a49dd..0000000000 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.EntityFrameworkCore.Modeling; - -namespace MyCompanyName.MyProjectName.EntityFrameworkCore -{ - public class MyProjectNameModelBuilderConfigurationOptions : AbpModelBuilderConfigurationOptions - { - public MyProjectNameModelBuilderConfigurationOptions( - [NotNull] string tablePrefix = "", - [CanBeNull] string schema = null) - : base( - tablePrefix, - schema) - { - - } - } -} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDB/MyProjectNameMongoDbContextExtensions.cs b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDB/MyProjectNameMongoDbContextExtensions.cs index 4dca336b5e..a66e949d4e 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDB/MyProjectNameMongoDbContextExtensions.cs +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDB/MyProjectNameMongoDbContextExtensions.cs @@ -1,5 +1,4 @@ -using System; -using Volo.Abp; +using Volo.Abp; using Volo.Abp.MongoDB; namespace MyCompanyName.MyProjectName.MongoDB @@ -7,16 +6,9 @@ namespace MyCompanyName.MyProjectName.MongoDB public static class MyProjectNameMongoDbContextExtensions { public static void ConfigureMyProjectName( - this IMongoModelBuilder builder, - Action optionsAction = null) + this IMongoModelBuilder builder) { Check.NotNull(builder, nameof(builder)); - - var options = new MyProjectNameMongoModelBuilderConfigurationOptions( - MyProjectNameDbProperties.DbTablePrefix - ); - - optionsAction?.Invoke(options); } } -} \ No newline at end of file +} diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDB/MyProjectNameMongoModelBuilderConfigurationOptions.cs b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDB/MyProjectNameMongoModelBuilderConfigurationOptions.cs deleted file mode 100644 index c40728fefa..0000000000 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDB/MyProjectNameMongoModelBuilderConfigurationOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.MongoDB; - -namespace MyCompanyName.MyProjectName.MongoDB -{ - public class MyProjectNameMongoModelBuilderConfigurationOptions : AbpMongoModelBuilderConfigurationOptions - { - public MyProjectNameMongoModelBuilderConfigurationOptions( - [NotNull] string collectionPrefix = "") - : base(collectionPrefix) - { - } - } -} \ No newline at end of file From 8311a79ffba0b1898bad3489e7afd935ae42f726 Mon Sep 17 00:00:00 2001 From: muhammedaltug Date: Tue, 21 Sep 2021 15:06:43 +0300 Subject: [PATCH 23/26] store current language in the cookie --- .../packages/core/src/lib/core.module.ts | 2 ++ .../lib/providers/cookie-language.provider.ts | 23 +++++++++++++++++++ .../packages/core/src/lib/providers/index.ts | 1 + .../lib/tokens/cookie-language-key.token.ts | 5 ++++ .../packages/core/src/lib/tokens/index.ts | 3 ++- 5 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 npm/ng-packs/packages/core/src/lib/providers/cookie-language.provider.ts create mode 100644 npm/ng-packs/packages/core/src/lib/tokens/cookie-language-key.token.ts diff --git a/npm/ng-packs/packages/core/src/lib/core.module.ts b/npm/ng-packs/packages/core/src/lib/core.module.ts index c2408116d8..7529f62c5e 100644 --- a/npm/ng-packs/packages/core/src/lib/core.module.ts +++ b/npm/ng-packs/packages/core/src/lib/core.module.ts @@ -32,6 +32,7 @@ import { TENANT_KEY } from './tokens/tenant-key.token'; import { noop } from './utils/common-utils'; import './utils/date-extensions'; import { getInitialData, localeInitializer } from './utils/initial-utils'; +import { CookieLanguageProvider } from './providers/cookie-language.provider'; export function storageFactory(): OAuthStorage { return oAuthStorage; @@ -131,6 +132,7 @@ export class CoreModule { ngModule: RootCoreModule, providers: [ LocaleProvider, + CookieLanguageProvider, { provide: 'CORE_OPTIONS', useValue: options, diff --git a/npm/ng-packs/packages/core/src/lib/providers/cookie-language.provider.ts b/npm/ng-packs/packages/core/src/lib/providers/cookie-language.provider.ts new file mode 100644 index 0000000000..03f99a7db8 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/providers/cookie-language.provider.ts @@ -0,0 +1,23 @@ +import { APP_INITIALIZER, Injector, Provider } from '@angular/core'; +import { DOCUMENT } from '@angular/common'; +import { SessionStateService } from '../services/session-state.service'; +import { COOKIE_LANGUAGE_KEY } from '../tokens/cookie-language-key.token'; + +export function setLanguageToCookie(injector: Injector) { + return () => { + const sessionState = injector.get(SessionStateService); + const document = injector.get(DOCUMENT); + const cookieLanguageKey = injector.get(COOKIE_LANGUAGE_KEY); + sessionState.getLanguage$().subscribe(language => { + const cookieValue = encodeURIComponent(`c=${language}|uic=${language}`); + document.cookie = `${cookieLanguageKey}=${cookieValue}`; + }); + }; +} + +export const CookieLanguageProvider: Provider = { + provide: APP_INITIALIZER, + useFactory: setLanguageToCookie, + deps: [Injector], + multi: true, +}; diff --git a/npm/ng-packs/packages/core/src/lib/providers/index.ts b/npm/ng-packs/packages/core/src/lib/providers/index.ts index fcbdb58be2..f7310ef146 100644 --- a/npm/ng-packs/packages/core/src/lib/providers/index.ts +++ b/npm/ng-packs/packages/core/src/lib/providers/index.ts @@ -1 +1,2 @@ +export * from './cookie-language.provider'; export * from './locale.provider'; diff --git a/npm/ng-packs/packages/core/src/lib/tokens/cookie-language-key.token.ts b/npm/ng-packs/packages/core/src/lib/tokens/cookie-language-key.token.ts new file mode 100644 index 0000000000..b14ad142bc --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/tokens/cookie-language-key.token.ts @@ -0,0 +1,5 @@ +import { InjectionToken } from '@angular/core'; + +export const COOKIE_LANGUAGE_KEY = new InjectionToken('COOKIE_LANGUAGE_KEY', { + factory: () => '.AspNetCore.Culture', +}); diff --git a/npm/ng-packs/packages/core/src/lib/tokens/index.ts b/npm/ng-packs/packages/core/src/lib/tokens/index.ts index 4d102ee8b4..2b7028ce53 100644 --- a/npm/ng-packs/packages/core/src/lib/tokens/index.ts +++ b/npm/ng-packs/packages/core/src/lib/tokens/index.ts @@ -1,6 +1,7 @@ +export * from './app-config.token'; +export * from './cookie-language-key.token'; export * from './list.token'; export * from './lodaer-delay.token'; export * from './manage-profile.token'; export * from './options.token'; -export * from './app-config.token'; export * from './tenant-key.token'; From a01140f531fa1816831b17c0f0a56f3e91e75fdb Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 21 Sep 2021 16:50:22 +0300 Subject: [PATCH 24/26] Update ProjectNameValidator.cs --- .../Volo/Abp/Cli/Utils/ProjectNameValidator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs index 7864b387d0..98de427ee2 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs @@ -53,7 +53,7 @@ namespace Volo.Abp.Cli.Utils { foreach (var illegalKeyword in IllegalKeywords) { - if (projectName.Contains(illegalKeyword)) + if (projectName.Split(".").Contains(illegalKeyword)) { throw new CliUsageException("Project name cannot contain the word \"" + illegalKeyword + "\". Specify a different name."); } From d2dc246ab79f28e6e5b24be9d5601b55fde1ebef Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 21 Sep 2021 16:55:52 +0300 Subject: [PATCH 25/26] Update ProjectNameValidation_Tests.cs --- .../Volo/Abp/Cli/ProjectNameValidation_Tests.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs index 85d9fcc2b7..bac75cc770 100644 --- a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs +++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs @@ -58,6 +58,9 @@ namespace Volo.Abp.Cli { var args = new CommandLineArgs("new", illegalKeyword); await _newCommand.ExecuteAsync(args).ShouldThrowAsync(); + + args = new CommandLineArgs("new", "Acme." + illegalKeyword); + await _newCommand.ExecuteAsync(args).ShouldThrowAsync(); } } From 4f428a30a7bef992f9fec00e66dfedf193915fdd Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 21 Sep 2021 17:08:18 +0300 Subject: [PATCH 26/26] Move ProjectNameValidator enhancements to 4.4 --- .../Volo/Abp/Cli/Commands/NewCommand.cs | 7 +-- .../Abp/Cli/Utils/ProjectNameValidator.cs | 60 +++++++------------ .../Abp/Cli/ProjectNameValidation_Tests.cs | 13 ++-- 3 files changed, 29 insertions(+), 51 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index c8757e1252..2a7800fdf5 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -61,10 +61,7 @@ namespace Volo.Abp.Cli.Commands ); } - if (!ProjectNameValidator.IsValid(projectName)) - { - throw new CliUsageException("The project name is invalid! Please specify a different name."); - } + ProjectNameValidator.Validate(projectName); Logger.LogInformation("Creating your project..."); Logger.LogInformation("Project name: " + projectName); @@ -559,4 +556,4 @@ namespace Volo.Abp.Cli.Commands } } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs index 4606aa59c4..98de427ee2 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs @@ -22,70 +22,50 @@ namespace Volo.Abp.Cli.Utils "Blazor" }; - private static bool HasParentDirectoryString(string projectName) + private static void ValidateParentDirectoryString(string projectName) { - return projectName.Contains(".."); + if (projectName.Contains("..")) + { + throw new CliUsageException("Project name cannot contain \"..\"! Specify a different name."); + } } - private static bool HasSurrogateOrControlChar(string projectName) + private static void ValidateSurrogateOrControlChar(string projectName) { - return projectName.Any(chr => char.IsControl(chr) || char.IsSurrogate(chr)); + if (projectName.Any(chr => char.IsControl(chr) || char.IsSurrogate(chr))) + { + throw new CliUsageException("Project name cannot contain surrogate or control characters! Specify a different name."); + } } - private static bool IsIllegalProjectName(string projectName) + private static void ValidateIllegalProjectName(string projectName) { foreach (var illegalProjectName in IllegalProjectNames) { if (projectName.Equals(illegalProjectName, StringComparison.OrdinalIgnoreCase)) { - return true; + throw new CliUsageException("Project name cannot be \"" + illegalProjectName + "\"! Specify a different name."); } } - - return false; } - private static bool HasIllegalKeywords(string projectName) + private static void ValidateIllegalKeywords(string projectName) { foreach (var illegalKeyword in IllegalKeywords) { - if (projectName.Contains(illegalKeyword)) + if (projectName.Split(".").Contains(illegalKeyword)) { - return true; + throw new CliUsageException("Project name cannot contain the word \"" + illegalKeyword + "\". Specify a different name."); } } - - return false; } - public static bool IsValid(string projectName) + public static void Validate(string projectName) { - if (projectName == null) - { - throw new CliUsageException("Project name cannot be empty!"); - } - - if (HasSurrogateOrControlChar(projectName)) - { - return false; - } - - if (HasParentDirectoryString(projectName)) - { - return false; - } - - if (IsIllegalProjectName(projectName)) - { - return false; - } - - if (HasIllegalKeywords(projectName)) - { - return false; - } - - return true; + ValidateSurrogateOrControlChar(projectName); + ValidateParentDirectoryString(projectName); + ValidateIllegalProjectName(projectName); + ValidateIllegalKeywords(projectName); } } } diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs index 5d08f90fc4..a1557e68ce 100644 --- a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs +++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs @@ -18,7 +18,7 @@ namespace Volo.Abp.Cli } [Fact] - public async Task IllegalProjectName_Test() + public async Task Illegal_ProjectName_Test() { var illegalProjectNames = new[] { @@ -39,27 +39,28 @@ namespace Volo.Abp.Cli } [Fact] - public async Task ParentDirectoryContain_Test() + public async Task Parent_Directory_Char_Contains_Test() { var args = new CommandLineArgs("new", "Test..Test"); await _newCommand.ExecuteAsync(args).ShouldThrowAsync(); } - [Fact] - public async Task Has_Illegel_Keyword_Test() + public async Task Contains_Illegal_Keyword_Test() { var illegalKeywords = new[] { - "Acme.Blazor", - "MyBlazor", + "Blazor" }; foreach (var illegalKeyword in illegalKeywords) { var args = new CommandLineArgs("new", illegalKeyword); await _newCommand.ExecuteAsync(args).ShouldThrowAsync(); + + args = new CommandLineArgs("new", "Acme." + illegalKeyword); + await _newCommand.ExecuteAsync(args).ShouldThrowAsync(); } }