From 22ae6ca99346e4e81957563e4b387e64c45bb989 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 12 Aug 2020 20:30:09 +0800 Subject: [PATCH 001/474] Add Kafka event bus integration --- framework/Volo.Abp.sln | 14 ++ .../Volo.Abp.EventBus.Kafka/FodyWeavers.xml | 3 + .../Volo.Abp.EventBus.Kafka/FodyWeavers.xsd | 30 +++ .../Volo.Abp.EventBus.Kafka.csproj | 16 ++ .../EventBus/Kafka/AbpEventBusKafkaModule.cs | 27 +++ .../EventBus/Kafka/AbpKafkaEventBusOptions.cs | 12 + .../Kafka/KafkaDistributedEventBus.cs | 208 ++++++++++++++++++ framework/src/Volo.Abp.Kafka/FodyWeavers.xml | 3 + framework/src/Volo.Abp.Kafka/FodyWeavers.xsd | 30 +++ .../src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj | 17 ++ .../Volo/Abp/Kafka/AbpKafkaModule.cs | 31 +++ .../Volo/Abp/Kafka/AbpKafkaOptions.cs | 22 ++ .../Volo/Abp/Kafka/ConsumerPool.cs | 105 +++++++++ .../Volo/Abp/Kafka/IConsumerPool.cs | 10 + .../Volo/Abp/Kafka/IKafkaMessageConsumer.cs | 11 + .../Abp/Kafka/IKafkaMessageConsumerFactory.cs | 19 ++ .../Volo/Abp/Kafka/IKafkaSerializer.cs | 11 + .../Volo/Abp/Kafka/IProducerPool.cs | 10 + .../Volo/Abp/Kafka/KafkaConnections.cs | 35 +++ .../Volo/Abp/Kafka/KafkaMessageConsumer.cs | 156 +++++++++++++ .../Abp/Kafka/KafkaMessageConsumerFactory.cs | 32 +++ .../Volo/Abp/Kafka/ProducerPool.cs | 97 ++++++++ .../Volo/Abp/Kafka/Utf8JsonKafkaSerializer.cs | 27 +++ nupkg/common.ps1 | 2 + 24 files changed, 928 insertions(+) create mode 100644 framework/src/Volo.Abp.EventBus.Kafka/FodyWeavers.xml create mode 100644 framework/src/Volo.Abp.EventBus.Kafka/FodyWeavers.xsd create mode 100644 framework/src/Volo.Abp.EventBus.Kafka/Volo.Abp.EventBus.Kafka.csproj create mode 100644 framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/AbpEventBusKafkaModule.cs create mode 100644 framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/AbpKafkaEventBusOptions.cs create mode 100644 framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/KafkaDistributedEventBus.cs create mode 100644 framework/src/Volo.Abp.Kafka/FodyWeavers.xml create mode 100644 framework/src/Volo.Abp.Kafka/FodyWeavers.xsd create mode 100644 framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/AbpKafkaModule.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/AbpKafkaOptions.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ConsumerPool.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IConsumerPool.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaMessageConsumer.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaMessageConsumerFactory.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaSerializer.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IProducerPool.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaConnections.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaMessageConsumer.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaMessageConsumerFactory.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ProducerPool.cs create mode 100644 framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/Utf8JsonKafkaSerializer.cs diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index 5778b054ed..2b381f4315 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -323,6 +323,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Aws", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Aws.Tests", "test\Volo.Abp.BlobStoring.Aws.Tests\Volo.Abp.BlobStoring.Aws.Tests.csproj", "{2CD3B26A-CA81-4279-8D5D-6A594517BB3F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Kafka", "src\Volo.Abp.Kafka\Volo.Abp.Kafka.csproj", "{2A864049-9CD5-4493-8CDB-C408474D43D4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EventBus.Kafka", "src\Volo.Abp.EventBus.Kafka\Volo.Abp.EventBus.Kafka.csproj", "{C1D891B0-AE83-42CB-987D-425A2787DE78}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -961,6 +965,14 @@ Global {2CD3B26A-CA81-4279-8D5D-6A594517BB3F}.Debug|Any CPU.Build.0 = Debug|Any CPU {2CD3B26A-CA81-4279-8D5D-6A594517BB3F}.Release|Any CPU.ActiveCfg = Release|Any CPU {2CD3B26A-CA81-4279-8D5D-6A594517BB3F}.Release|Any CPU.Build.0 = Release|Any CPU + {2A864049-9CD5-4493-8CDB-C408474D43D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2A864049-9CD5-4493-8CDB-C408474D43D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2A864049-9CD5-4493-8CDB-C408474D43D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2A864049-9CD5-4493-8CDB-C408474D43D4}.Release|Any CPU.Build.0 = Release|Any CPU + {C1D891B0-AE83-42CB-987D-425A2787DE78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1D891B0-AE83-42CB-987D-425A2787DE78}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C1D891B0-AE83-42CB-987D-425A2787DE78}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C1D891B0-AE83-42CB-987D-425A2787DE78}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1124,6 +1136,8 @@ Global {8E49687A-E69F-49F2-8DB0-428D0883A937} = {447C8A77-E5F0-4538-8687-7383196D04EA} {50968CDE-1029-4051-B2E5-B69D0ECF2A18} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {2CD3B26A-CA81-4279-8D5D-6A594517BB3F} = {447C8A77-E5F0-4538-8687-7383196D04EA} + {2A864049-9CD5-4493-8CDB-C408474D43D4} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {C1D891B0-AE83-42CB-987D-425A2787DE78} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.EventBus.Kafka/FodyWeavers.xml b/framework/src/Volo.Abp.EventBus.Kafka/FodyWeavers.xml new file mode 100644 index 0000000000..bc5a74a236 --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Kafka/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + diff --git a/framework/src/Volo.Abp.EventBus.Kafka/FodyWeavers.xsd b/framework/src/Volo.Abp.EventBus.Kafka/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Kafka/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.EventBus.Kafka/Volo.Abp.EventBus.Kafka.csproj b/framework/src/Volo.Abp.EventBus.Kafka/Volo.Abp.EventBus.Kafka.csproj new file mode 100644 index 0000000000..42b0293781 --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Kafka/Volo.Abp.EventBus.Kafka.csproj @@ -0,0 +1,16 @@ + + + + + + + netstandard2.0 + + + + + + + + + diff --git a/framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/AbpEventBusKafkaModule.cs b/framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/AbpEventBusKafkaModule.cs new file mode 100644 index 0000000000..e0e408cb6b --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/AbpEventBusKafkaModule.cs @@ -0,0 +1,27 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Kafka; +using Volo.Abp.Modularity; + +namespace Volo.Abp.EventBus.Kafka +{ + [DependsOn( + typeof(AbpEventBusModule), + typeof(AbpKafkaModule))] + public class AbpEventBusKafkaModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + + Configure(configuration.GetSection("Kafka:EventBus")); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + context + .ServiceProvider + .GetRequiredService() + .Initialize(); + } + } +} diff --git a/framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/AbpKafkaEventBusOptions.cs b/framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/AbpKafkaEventBusOptions.cs new file mode 100644 index 0000000000..3aff9699fb --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/AbpKafkaEventBusOptions.cs @@ -0,0 +1,12 @@ +namespace Volo.Abp.EventBus.Kafka +{ + public class AbpKafkaEventBusOptions + { + + public string ConnectionName { get; set; } + + public string TopicName { get; set; } + + public string GroupId { get; set; } + } +} diff --git a/framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/KafkaDistributedEventBus.cs b/framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/KafkaDistributedEventBus.cs new file mode 100644 index 0000000000..fd6d773952 --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Kafka/Volo/Abp/EventBus/Kafka/KafkaDistributedEventBus.cs @@ -0,0 +1,208 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Confluent.Kafka; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EventBus.Distributed; +using Volo.Abp.Kafka; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Threading; + +namespace Volo.Abp.EventBus.Kafka +{ + [Dependency(ReplaceServices = true)] + [ExposeServices(typeof(IDistributedEventBus), typeof(KafkaDistributedEventBus))] + public class KafkaDistributedEventBus : EventBusBase, IDistributedEventBus, ISingletonDependency + { + protected AbpKafkaEventBusOptions AbpKafkaEventBusOptions { get; } + protected AbpDistributedEventBusOptions AbpDistributedEventBusOptions { get; } + protected IKafkaMessageConsumerFactory MessageConsumerFactory { get; } + protected IKafkaSerializer Serializer { get; } + protected IProducerPool ProducerPool { get; } + protected ConcurrentDictionary> HandlerFactories { get; } + protected ConcurrentDictionary EventTypes { get; } + protected IKafkaMessageConsumer Consumer { get; private set; } + + public KafkaDistributedEventBus( + IServiceScopeFactory serviceScopeFactory, + ICurrentTenant currentTenant, + IOptions abpKafkaEventBusOptions, + IKafkaMessageConsumerFactory messageConsumerFactory, + IOptions abpDistributedEventBusOptions, + IKafkaSerializer serializer, + IProducerPool producerPool) + : base(serviceScopeFactory, currentTenant) + { + AbpKafkaEventBusOptions = abpKafkaEventBusOptions.Value; + AbpDistributedEventBusOptions = abpDistributedEventBusOptions.Value; + MessageConsumerFactory = messageConsumerFactory; + Serializer = serializer; + ProducerPool = producerPool; + + HandlerFactories = new ConcurrentDictionary>(); + EventTypes = new ConcurrentDictionary(); + } + + public void Initialize() + { + Consumer = MessageConsumerFactory.Create( + AbpKafkaEventBusOptions.TopicName, + AbpKafkaEventBusOptions.GroupId, + AbpKafkaEventBusOptions.ConnectionName); + + Consumer.OnMessageReceived(ProcessEventAsync); + + SubscribeHandlers(AbpDistributedEventBusOptions.Handlers); + } + + private async Task ProcessEventAsync(Message message) + { + var eventName = message.Key; + var eventType = EventTypes.GetOrDefault(eventName); + if (eventType == null) + { + return; + } + + var eventData = Serializer.Deserialize(message.Value, eventType); + + await TriggerHandlersAsync(eventType, eventData); + } + + public IDisposable Subscribe(IDistributedEventHandler handler) where TEvent : class + { + return Subscribe(typeof(TEvent), handler); + } + + public override IDisposable Subscribe(Type eventType, IEventHandlerFactory factory) + { + var handlerFactories = GetOrCreateHandlerFactories(eventType); + + if (factory.IsInFactories(handlerFactories)) + { + return NullDisposable.Instance; + } + + handlerFactories.Add(factory); + + return new EventHandlerFactoryUnregistrar(this, eventType, factory); + } + + /// + public override void Unsubscribe(Func action) + { + Check.NotNull(action, nameof(action)); + + GetOrCreateHandlerFactories(typeof(TEvent)) + .Locking(factories => + { + factories.RemoveAll( + factory => + { + var singleInstanceFactory = factory as SingleInstanceHandlerFactory; + if (singleInstanceFactory == null) + { + return false; + } + + var actionHandler = singleInstanceFactory.HandlerInstance as ActionEventHandler; + if (actionHandler == null) + { + return false; + } + + return actionHandler.Action == action; + }); + }); + } + + /// + public override void Unsubscribe(Type eventType, IEventHandler handler) + { + GetOrCreateHandlerFactories(eventType) + .Locking(factories => + { + factories.RemoveAll( + factory => + factory is SingleInstanceHandlerFactory handlerFactory && + handlerFactory.HandlerInstance == handler + ); + }); + } + + /// + public override void Unsubscribe(Type eventType, IEventHandlerFactory factory) + { + GetOrCreateHandlerFactories(eventType).Locking(factories => factories.Remove(factory)); + } + + /// + public override void UnsubscribeAll(Type eventType) + { + GetOrCreateHandlerFactories(eventType).Locking(factories => factories.Clear()); + } + + public override async Task PublishAsync(Type eventType, object eventData) + { + var eventName = EventNameAttribute.GetNameOrDefault(eventType); + var body = Serializer.Serialize(eventData); + + var producer = ProducerPool.Get(AbpKafkaEventBusOptions.ConnectionName); + + await producer.ProduceAsync( + AbpKafkaEventBusOptions.TopicName, + new Message + { + Key = eventName, Value = body + }); + } + + private List GetOrCreateHandlerFactories(Type eventType) + { + return HandlerFactories.GetOrAdd( + eventType, + type => + { + var eventName = EventNameAttribute.GetNameOrDefault(type); + EventTypes[eventName] = type; + return new List(); + } + ); + } + + protected override IEnumerable GetHandlerFactories(Type eventType) + { + var handlerFactoryList = new List(); + + foreach (var handlerFactory in HandlerFactories.Where(hf => ShouldTriggerEventForHandler(eventType, hf.Key)) + ) + { + handlerFactoryList.Add( + new EventTypeWithEventHandlerFactories(handlerFactory.Key, handlerFactory.Value)); + } + + return handlerFactoryList.ToArray(); + } + + private static bool ShouldTriggerEventForHandler(Type targetEventType, Type handlerEventType) + { + //Should trigger same type + if (handlerEventType == targetEventType) + { + return true; + } + + //Should trigger for inherited types + if (handlerEventType.IsAssignableFrom(targetEventType)) + { + return true; + } + + return false; + } + } +} diff --git a/framework/src/Volo.Abp.Kafka/FodyWeavers.xml b/framework/src/Volo.Abp.Kafka/FodyWeavers.xml new file mode 100644 index 0000000000..be0de3a908 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Kafka/FodyWeavers.xsd b/framework/src/Volo.Abp.Kafka/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj b/framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj new file mode 100644 index 0000000000..e91f42d7b2 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj @@ -0,0 +1,17 @@ + + + + + + + netstandard2.0 + + + + + + + + + + diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/AbpKafkaModule.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/AbpKafkaModule.cs new file mode 100644 index 0000000000..d69e924349 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/AbpKafkaModule.cs @@ -0,0 +1,31 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Json; +using Volo.Abp.Modularity; +using Volo.Abp.Threading; + +namespace Volo.Abp.Kafka +{ + [DependsOn( + typeof(AbpJsonModule), + typeof(AbpThreadingModule) + )] + public class AbpKafkaModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + Configure(configuration.GetSection("Kafka")); + } + + public override void OnApplicationShutdown(ApplicationShutdownContext context) + { + context.ServiceProvider + .GetRequiredService() + .Dispose(); + + context.ServiceProvider + .GetRequiredService() + .Dispose(); + } + } +} diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/AbpKafkaOptions.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/AbpKafkaOptions.cs new file mode 100644 index 0000000000..1769d8a076 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/AbpKafkaOptions.cs @@ -0,0 +1,22 @@ +using System; +using Confluent.Kafka; +using Confluent.Kafka.Admin; + +namespace Volo.Abp.Kafka +{ + public class AbpKafkaOptions + { + public KafkaConnections Connections { get; } + + public Action ConfigureProducer { get; set; } + + public Action ConfigureConsumer { get; set; } + + public Action ConfigureTopic { get; set; } + + public AbpKafkaOptions() + { + Connections = new KafkaConnections(); + } + } +} diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ConsumerPool.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ConsumerPool.cs new file mode 100644 index 0000000000..07af447e1a --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ConsumerPool.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using Confluent.Kafka; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.Options; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Kafka +{ + public class ConsumerPool : IConsumerPool, ISingletonDependency + { + protected AbpKafkaOptions Options { get; } + + protected ConcurrentDictionary> Consumers { get; } + + protected TimeSpan TotalDisposeWaitDuration { get; set; } = TimeSpan.FromSeconds(10); + + public ILogger Logger { get; set; } + + private bool _isDisposed; + + public ConsumerPool(IOptions options) + { + Options = options.Value; + + Consumers = new ConcurrentDictionary>(); + Logger = new NullLogger(); + } + + public virtual IConsumer Get(string groupId, string connectionName = null) + { + connectionName ??= KafkaConnections.DefaultConnectionName; + var config = new ConsumerConfig(Options.Connections.GetOrDefault(connectionName)) + { + GroupId = groupId, + EnableAutoCommit = false + }; + + Options.ConfigureConsumer?.Invoke(config); + + return Consumers.GetOrAdd( + connectionName, + new ConsumerBuilder(config).Build()); + } + + public void Dispose() + { + if (_isDisposed) + { + return; + } + + _isDisposed = true; + + if (!Consumers.Any()) + { + Logger.LogDebug($"Disposed consumer pool with no consumers in the pool."); + return; + } + + var poolDisposeStopwatch = Stopwatch.StartNew(); + + Logger.LogInformation($"Disposing consumer pool ({Consumers.Count} consumers)."); + + var remainingWaitDuration = TotalDisposeWaitDuration; + + foreach (var consumer in Consumers.Values) + { + var poolItemDisposeStopwatch = Stopwatch.StartNew(); + + try + { + consumer.Close(); + consumer.Dispose(); + } + catch + { + } + + poolItemDisposeStopwatch.Stop(); + + remainingWaitDuration = remainingWaitDuration > poolItemDisposeStopwatch.Elapsed + ? remainingWaitDuration.Subtract(poolItemDisposeStopwatch.Elapsed) + : TimeSpan.Zero; + } + + poolDisposeStopwatch.Stop(); + + Logger.LogInformation( + $"Disposed Kafka Consumer Pool ({Consumers.Count} consumers in {poolDisposeStopwatch.Elapsed.TotalMilliseconds:0.00} ms)."); + + if (poolDisposeStopwatch.Elapsed.TotalSeconds > 5.0) + { + Logger.LogWarning( + $"Disposing Kafka Consumer Pool got time greather than expected: {poolDisposeStopwatch.Elapsed.TotalMilliseconds:0.00} ms."); + } + + Consumers.Clear(); + } + } +} diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IConsumerPool.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IConsumerPool.cs new file mode 100644 index 0000000000..94c8a551e2 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IConsumerPool.cs @@ -0,0 +1,10 @@ +using System; +using Confluent.Kafka; + +namespace Volo.Abp.Kafka +{ + public interface IConsumerPool : IDisposable + { + IConsumer Get(string groupId, string connectionName = null); + } +} diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaMessageConsumer.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaMessageConsumer.cs new file mode 100644 index 0000000000..87872b31a2 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaMessageConsumer.cs @@ -0,0 +1,11 @@ +using System; +using System.Threading.Tasks; +using Confluent.Kafka; + +namespace Volo.Abp.Kafka +{ + public interface IKafkaMessageConsumer + { + void OnMessageReceived(Func, Task> callback); + } +} diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaMessageConsumerFactory.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaMessageConsumerFactory.cs new file mode 100644 index 0000000000..2b01b5a935 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaMessageConsumerFactory.cs @@ -0,0 +1,19 @@ +namespace Volo.Abp.Kafka +{ + public interface IKafkaMessageConsumerFactory + { + /// + /// Creates a new . + /// Avoid to create too many consumers since they are + /// not disposed until end of the application. + /// + /// + /// + /// + /// + IKafkaMessageConsumer Create( + string topicName, + string groupId, + string connectionName = null); + } +} diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaSerializer.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaSerializer.cs new file mode 100644 index 0000000000..58e718831c --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IKafkaSerializer.cs @@ -0,0 +1,11 @@ +using System; + +namespace Volo.Abp.Kafka +{ + public interface IKafkaSerializer + { + byte[] Serialize(object obj); + + object Deserialize(byte[] value, Type type); + } +} diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IProducerPool.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IProducerPool.cs new file mode 100644 index 0000000000..2f94f23e2a --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/IProducerPool.cs @@ -0,0 +1,10 @@ +using System; +using Confluent.Kafka; + +namespace Volo.Abp.Kafka +{ + public interface IProducerPool : IDisposable + { + IProducer Get(string connectionName = null); + } +} diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaConnections.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaConnections.cs new file mode 100644 index 0000000000..159c798691 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaConnections.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using Confluent.Kafka; +using JetBrains.Annotations; + +namespace Volo.Abp.Kafka +{ + [Serializable] + public class KafkaConnections : Dictionary + { + public const string DefaultConnectionName = "Default"; + + [NotNull] + public ClientConfig Default + { + get => this[DefaultConnectionName]; + set => this[DefaultConnectionName] = Check.NotNull(value, nameof(value)); + } + + public KafkaConnections() + { + Default = new ClientConfig(); + } + + public ClientConfig GetOrDefault(string connectionName) + { + if (TryGetValue(connectionName, out var connectionFactory)) + { + return connectionFactory; + } + + return Default; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaMessageConsumer.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaMessageConsumer.cs new file mode 100644 index 0000000000..c22ca6756b --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaMessageConsumer.cs @@ -0,0 +1,156 @@ +using System; +using System.Collections.Concurrent; +using System.Linq; +using System.Threading.Tasks; +using Confluent.Kafka; +using Confluent.Kafka.Admin; +using JetBrains.Annotations; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.Options; +using Volo.Abp.DependencyInjection; +using Volo.Abp.ExceptionHandling; +using Volo.Abp.Threading; + +namespace Volo.Abp.Kafka +{ + public class KafkaMessageConsumer : IKafkaMessageConsumer, ITransientDependency, IDisposable + { + public ILogger Logger { get; set; } + + protected IConsumerPool ConsumerPool { get; } + + protected IExceptionNotifier ExceptionNotifier { get; } + + protected AbpKafkaOptions Options { get; } + + protected ConcurrentBag, Task>> Callbacks { get; } + + protected IConsumer Consumer { get; private set; } + + protected string ConnectionName { get; private set; } + + protected string GroupId { get; private set; } + + protected string TopicName { get; private set; } + + public KafkaMessageConsumer( + IConsumerPool consumerPool, + IExceptionNotifier exceptionNotifier, + IOptions options) + { + ConsumerPool = consumerPool; + ExceptionNotifier = exceptionNotifier; + Options = options.Value; + Logger = NullLogger.Instance; + + Callbacks = new ConcurrentBag, Task>>(); + } + + public virtual void Initialize( + [NotNull] string topicName, + [NotNull] string groupId, + string connectionName = null) + { + Check.NotNull(topicName, nameof(topicName)); + Check.NotNull(groupId, nameof(groupId)); + TopicName = topicName; + ConnectionName = connectionName ?? KafkaConnections.DefaultConnectionName; + GroupId = groupId; + + AsyncHelper.RunSync(CreateTopicAsync); + Consume(); + } + + public virtual void OnMessageReceived(Func, Task> callback) + { + Callbacks.Add(callback); + } + + protected virtual async Task CreateTopicAsync() + { + using (var adminClient = new AdminClientBuilder(Options.Connections.GetOrDefault(ConnectionName)).Build()) + { + var topic = new TopicSpecification + { + Name = TopicName, + NumPartitions = 1, + ReplicationFactor = 1 + }; + + Options.ConfigureTopic?.Invoke(topic); + + try + { + await adminClient.CreateTopicsAsync(new[] {topic}); + } + catch (CreateTopicsException e) + { + if (!e.Error.Reason.Contains($"Topic '{TopicName}' already exists")) + { + throw; + } + } + } + } + + protected virtual void Consume() + { + Consumer = ConsumerPool.Get(GroupId, ConnectionName); + + Task.Factory.StartNew(async () => + { + Consumer.Subscribe(TopicName); + + while (true) + { + try + { + var consumeResult = Consumer.Consume(); + + if (consumeResult.IsPartitionEOF) + { + continue; + } + + await HandleIncomingMessage(consumeResult); + } + catch (ConsumeException ex) + { + Logger.LogException(ex, LogLevel.Warning); + AsyncHelper.RunSync(() => ExceptionNotifier.NotifyAsync(ex, logLevel: LogLevel.Warning)); + } + } + }); + } + + protected virtual async Task HandleIncomingMessage(ConsumeResult consumeResult) + { + try + { + foreach (var callback in Callbacks) + { + await callback(consumeResult.Message); + } + + Consumer.Commit(consumeResult); + } + catch (Exception ex) + { + Logger.LogException(ex); + await ExceptionNotifier.NotifyAsync(ex); + } + } + + public virtual void Dispose() + { + if (Consumer == null) + { + return; + } + + Consumer.Close(); + Consumer.Dispose(); + } + } +} diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaMessageConsumerFactory.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaMessageConsumerFactory.cs new file mode 100644 index 0000000000..fb08aa4144 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/KafkaMessageConsumerFactory.cs @@ -0,0 +1,32 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Kafka +{ + public class KafkaMessageConsumerFactory : IKafkaMessageConsumerFactory, ISingletonDependency, IDisposable + { + protected IServiceScope ServiceScope { get; } + + public KafkaMessageConsumerFactory(IServiceScopeFactory serviceScopeFactory) + { + ServiceScope = serviceScopeFactory.CreateScope(); + } + + public IKafkaMessageConsumer Create( + string topicName, + string groupId, + string connectionName = null) + { + var consumer = ServiceScope.ServiceProvider.GetRequiredService(); + consumer.Initialize(topicName, groupId, connectionName); + return consumer; + } + + public void Dispose() + { + ServiceScope?.Dispose(); + } + } +} diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ProducerPool.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ProducerPool.cs new file mode 100644 index 0000000000..77c8898d42 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ProducerPool.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Concurrent; +using System.Diagnostics; +using System.Linq; +using Confluent.Kafka; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.Options; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Kafka +{ + public class ProducerPool : IProducerPool, ISingletonDependency + { + protected AbpKafkaOptions Options { get; } + + protected ConcurrentDictionary> Producers { get; } + + protected TimeSpan TotalDisposeWaitDuration { get; set; } = TimeSpan.FromSeconds(10); + + public ILogger Logger { get; set; } + + private bool _isDisposed; + + public ProducerPool(IOptions options) + { + Options = options.Value; + + Producers = new ConcurrentDictionary>(); + Logger = new NullLogger(); + } + + public virtual IProducer Get(string connectionName = null) + { + connectionName ??= KafkaConnections.DefaultConnectionName; + var config = Options.Connections.GetOrDefault(connectionName); + + Options.ConfigureProducer?.Invoke(new ProducerConfig(config)); + + return Producers.GetOrAdd( + connectionName, + new ProducerBuilder(config).Build()); + } + + public void Dispose() + { + if (_isDisposed) + { + return; + } + + _isDisposed = true; + + if (!Producers.Any()) + { + Logger.LogDebug($"Disposed producer pool with no producers in the pool."); + return; + } + + var poolDisposeStopwatch = Stopwatch.StartNew(); + + Logger.LogInformation($"Disposing producer pool ({Producers.Count} producers)."); + + var remainingWaitDuration = TotalDisposeWaitDuration; + + foreach (var producer in Producers.Values) + { + var poolItemDisposeStopwatch = Stopwatch.StartNew(); + + try + { + producer.Dispose(); + } + catch + { + } + + poolItemDisposeStopwatch.Stop(); + + remainingWaitDuration = remainingWaitDuration > poolItemDisposeStopwatch.Elapsed + ? remainingWaitDuration.Subtract(poolItemDisposeStopwatch.Elapsed) + : TimeSpan.Zero; + } + + poolDisposeStopwatch.Stop(); + + Logger.LogInformation($"Disposed Kafka Producer Pool ({Producers.Count} producers in {poolDisposeStopwatch.Elapsed.TotalMilliseconds:0.00} ms)."); + + if(poolDisposeStopwatch.Elapsed.TotalSeconds > 5.0) + { + Logger.LogWarning($"Disposing Kafka Producer Pool got time greather than expected: {poolDisposeStopwatch.Elapsed.TotalMilliseconds:0.00} ms."); + } + + Producers.Clear(); + } + } +} diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/Utf8JsonKafkaSerializer.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/Utf8JsonKafkaSerializer.cs new file mode 100644 index 0000000000..a04125f8a6 --- /dev/null +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/Utf8JsonKafkaSerializer.cs @@ -0,0 +1,27 @@ +using System; +using System.Text; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Json; + +namespace Volo.Abp.Kafka +{ + public class Utf8JsonKafkaSerializer : IKafkaSerializer, ITransientDependency + { + private readonly IJsonSerializer _jsonSerializer; + + public Utf8JsonKafkaSerializer(IJsonSerializer jsonSerializer) + { + _jsonSerializer = jsonSerializer; + } + + public byte[] Serialize(object obj) + { + return Encoding.UTF8.GetBytes(_jsonSerializer.Serialize(obj)); + } + + public object Deserialize(byte[] value, Type type) + { + return _jsonSerializer.Deserialize(type, Encoding.UTF8.GetString(value)); + } + } +} diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index 99244d5d6c..39d2700411 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -84,6 +84,7 @@ $projects = ( "framework/src/Volo.Abp.EntityFrameworkCore.SqlServer", "framework/src/Volo.Abp.EventBus", "framework/src/Volo.Abp.EventBus.RabbitMQ", + "framework/src/Volo.Abp.EventBus.Kafka", "framework/src/Volo.Abp.Features", "framework/src/Volo.Abp.FluentValidation", "framework/src/Volo.Abp.Guids", @@ -122,6 +123,7 @@ $projects = ( "framework/src/Volo.Abp.Validation.Abstractions", "framework/src/Volo.Abp.Validation", "framework/src/Volo.Abp.VirtualFileSystem", + "framework/src/Volo.Abp.Kafka" # modules/account "modules/account/src/Volo.Abp.Account.Application.Contracts", From 0e25b18aad27aded5468e693d56a94d5c23287ab Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 14 Aug 2020 15:12:05 +0800 Subject: [PATCH 002/474] Update kafka connection pool --- .../Volo/Abp/Kafka/ConsumerPool.cs | 22 ++++++++++-------- .../Volo/Abp/Kafka/ProducerPool.cs | 23 +++++++++++-------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ConsumerPool.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ConsumerPool.cs index 07af447e1a..b2995d1079 100644 --- a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ConsumerPool.cs +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ConsumerPool.cs @@ -34,17 +34,21 @@ namespace Volo.Abp.Kafka public virtual IConsumer Get(string groupId, string connectionName = null) { connectionName ??= KafkaConnections.DefaultConnectionName; - var config = new ConsumerConfig(Options.Connections.GetOrDefault(connectionName)) - { - GroupId = groupId, - EnableAutoCommit = false - }; - - Options.ConfigureConsumer?.Invoke(config); return Consumers.GetOrAdd( - connectionName, - new ConsumerBuilder(config).Build()); + connectionName, connection => + { + var config = new ConsumerConfig(Options.Connections.GetOrDefault(connection)) + { + GroupId = groupId, + EnableAutoCommit = false + }; + + Options.ConfigureConsumer?.Invoke(config); + + return new ConsumerBuilder(config).Build(); + } + ); } public void Dispose() diff --git a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ProducerPool.cs b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ProducerPool.cs index 77c8898d42..c4b4b9ead0 100644 --- a/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ProducerPool.cs +++ b/framework/src/Volo.Abp.Kafka/Volo/Abp/Kafka/ProducerPool.cs @@ -33,13 +33,16 @@ namespace Volo.Abp.Kafka public virtual IProducer Get(string connectionName = null) { connectionName ??= KafkaConnections.DefaultConnectionName; - var config = Options.Connections.GetOrDefault(connectionName); - - Options.ConfigureProducer?.Invoke(new ProducerConfig(config)); - + return Producers.GetOrAdd( - connectionName, - new ProducerBuilder(config).Build()); + connectionName, connection => + { + var config = Options.Connections.GetOrDefault(connection); + + Options.ConfigureProducer?.Invoke(new ProducerConfig(config)); + + return new ProducerBuilder(config).Build(); + }); } public void Dispose() @@ -84,11 +87,13 @@ namespace Volo.Abp.Kafka poolDisposeStopwatch.Stop(); - Logger.LogInformation($"Disposed Kafka Producer Pool ({Producers.Count} producers in {poolDisposeStopwatch.Elapsed.TotalMilliseconds:0.00} ms)."); + Logger.LogInformation( + $"Disposed Kafka Producer Pool ({Producers.Count} producers in {poolDisposeStopwatch.Elapsed.TotalMilliseconds:0.00} ms)."); - if(poolDisposeStopwatch.Elapsed.TotalSeconds > 5.0) + if (poolDisposeStopwatch.Elapsed.TotalSeconds > 5.0) { - Logger.LogWarning($"Disposing Kafka Producer Pool got time greather than expected: {poolDisposeStopwatch.Elapsed.TotalMilliseconds:0.00} ms."); + Logger.LogWarning( + $"Disposing Kafka Producer Pool got time greather than expected: {poolDisposeStopwatch.Elapsed.TotalMilliseconds:0.00} ms."); } Producers.Clear(); From 7fd9c6ab554cd7a0499960b52310b990e2bd62f2 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Thu, 20 Aug 2020 17:06:52 +0300 Subject: [PATCH 003/474] docs: create environment docs for Angular --- docs/en/UI/Angular/Environment.md | 99 +++++++++++++++++++++++++++++ docs/en/UI/Angular/Multi-Tenancy.md | 2 +- docs/en/docs-nav.json | 8 ++- 3 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 docs/en/UI/Angular/Environment.md diff --git a/docs/en/UI/Angular/Environment.md b/docs/en/UI/Angular/Environment.md new file mode 100644 index 0000000000..b1f47ac864 --- /dev/null +++ b/docs/en/UI/Angular/Environment.md @@ -0,0 +1,99 @@ +# Environment + +Current `Environment` Configuration holds sub config classes. + +```typescript +export interface Environment { + apis: Apis; + application: Application; + hmr?: boolean; + localization?: { defaultResourceName?: string }; + oAuthConfig: AuthConfig; + production: boolean; + remoteEnv?: RemoteEnv; +} +``` + +## Apis + +```typescript +export interface Apis { + [key: string]: ApiConfig; + default: ApiConfig; +} + +export interface ApiConfig { + [key: string]: string; + url: string; +} +``` + +Api config has to have a default config and it may have some additional ones for different modules. +I.e. you may want to connect to different Apis for different modules. + +Take a look at example + +```json +{ + ... + "apis": { + "default": { + "url": "https://localhost:8080", + }, + "AbpIdentity": { + "url": "https://localhost:9090", + } + } +} +``` + +When an api from `AbpIdentity` is called, the request will be sent to `"https://localhost:9090"`. +Everything else will be sent to `"https://localhost:8080"` + +## Application + +```typescript + export interface Application { + name: string; + baseUrl?: string; + logoUrl?: string; +} +``` + +* `name`: Name of the backend Application. It is also used by `logo.component` if `logoUrl` is not provided. +* `logoUrl`: Url of application logo. It is used by `logo.component` +* `baseUrl`: [For detailed information](./Multi-Tenancy.md#domain-tenant-resolver) + +## Localization + +You can read about `Localization` [here in detail](./Localization.md) + +## OAuthConfig + +..... + +## RemoteEnvironment + +To integrate an existing config json into environment, you need to set `remoteEnv` + +```typescript +export type customMergeFn = ( + localEnv: Partial, + remoteEnv: any, +) => Config.Environment; + +export interface RemoteEnv { + url: string; + mergeStrategy: 'deepmerge' | 'overwrite' | customMergeFn; + method?: string; + headers?: ABP.Dictionary; +} +``` + +* `url` *: Required. The url to be used to retrieve environment config +* `mergeStrategy`: Defines how local and remote environment json will be merged + * `deepmerge`: Both local and remote environment json will be merged recursively. If both config has same nested path, remote environment will be prioritized. + * `overwrite`: Remote environment will be used and local environment will be ignored. + * `customMergeFn`: You can also provide your own merge function as shown in the example. It will take two parameters, `localEnv: Partial` and `remoteEnv` and it needs to return a `Config.Environment` object. +* `method`: HTTP method to be used when retrieving environment config. Default: `GET` +* `headers`: If extra headers are needed for the request, it can be set through this field. \ No newline at end of file diff --git a/docs/en/UI/Angular/Multi-Tenancy.md b/docs/en/UI/Angular/Multi-Tenancy.md index fb9fb54f76..2f768de32a 100644 --- a/docs/en/UI/Angular/Multi-Tenancy.md +++ b/docs/en/UI/Angular/Multi-Tenancy.md @@ -20,7 +20,7 @@ On the page above, you can; You can switch between existing tenants by using the tenant switching component in the child pages of the `AccountLayoutComponent` (like Login page). Angular UI sends the selected tenant id to the backend as `__tenant` header on each request. -## Domain Tenant Resolver +

Domain Tenant Resolver

Angular UI can get the tenant name from the app running URL. You can determine the current tenant by subdomain (like mytenant1.mydomain.com) or by the whole domain (like mytenant.com). To do this, you need to set the `application.baseUrl` property in the environment: diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index 660f2b1b60..411cced68d 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -219,11 +219,11 @@ "items": [ { "text": "Email Sending System", - "path": "Emailing.md", + "path": "Emailing.md" }, { "text": "MailKit Integration", - "path": "MailKit.md", + "path": "MailKit.md" } ] }, @@ -423,6 +423,10 @@ "text": "Migration Guide v2.x to v3", "path": "UI/Angular/Migration-Guide-v3.md" }, + { + "text": "Environment", + "path": "UI/Angular/Environment.md" + }, { "text": "Service Proxies", "path": "UI/Angular/Service-Proxies.md" From 1bb107bde4443854773c8509cd4d2cd005fdb80c Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Fri, 21 Aug 2020 09:02:33 +0300 Subject: [PATCH 004/474] docs: improve environment.md --- docs/en/UI/Angular/Environment.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/en/UI/Angular/Environment.md b/docs/en/UI/Angular/Environment.md index b1f47ac864..22acc369d9 100644 --- a/docs/en/UI/Angular/Environment.md +++ b/docs/en/UI/Angular/Environment.md @@ -35,7 +35,7 @@ Take a look at example ```json { - ... + // ... "apis": { "default": { "url": "https://localhost:8080", @@ -43,7 +43,8 @@ Take a look at example "AbpIdentity": { "url": "https://localhost:9090", } - } + }, + // ... } ``` @@ -68,9 +69,9 @@ Everything else will be sent to `"https://localhost:8080"` You can read about `Localization` [here in detail](./Localization.md) -## OAuthConfig +## AuthConfig -..... +For authentication, we use [angular-oauth2-oidc](https://github.com/manfredsteyer/angular-oauth2-oidc) ## RemoteEnvironment From 45458342e4fd46e6d51c8761000241bd00d57702 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Fri, 21 Aug 2020 12:17:00 +0300 Subject: [PATCH 005/474] docs: improve environment md --- docs/en/UI/Angular/Environment.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/docs/en/UI/Angular/Environment.md b/docs/en/UI/Angular/Environment.md index 22acc369d9..34b7a38370 100644 --- a/docs/en/UI/Angular/Environment.md +++ b/docs/en/UI/Angular/Environment.md @@ -1,6 +1,8 @@ # Environment -Current `Environment` Configuration holds sub config classes. +Every application needs some ** environment ** variables. In Angular world, this is usually managed by `environment.ts`, `environment.prod.ts` and so on. It is the same for Abp as well. + +Current `Environment` configuration holds sub config classes as follows: ```typescript export interface Environment { @@ -31,7 +33,7 @@ export interface ApiConfig { Api config has to have a default config and it may have some additional ones for different modules. I.e. you may want to connect to different Apis for different modules. -Take a look at example +Take a look at following example ```json { @@ -62,7 +64,7 @@ Everything else will be sent to `"https://localhost:8080"` ``` * `name`: Name of the backend Application. It is also used by `logo.component` if `logoUrl` is not provided. -* `logoUrl`: Url of application logo. It is used by `logo.component` +* `logoUrl`: Url of the application logo. It is used by `logo.component` * `baseUrl`: [For detailed information](./Multi-Tenancy.md#domain-tenant-resolver) ## Localization @@ -71,11 +73,14 @@ You can read about `Localization` [here in detail](./Localization.md) ## AuthConfig -For authentication, we use [angular-oauth2-oidc](https://github.com/manfredsteyer/angular-oauth2-oidc) +For authentication, we use angular-oauth2-oidc. Please check their [docs](https://github.com/manfredsteyer/angular-oauth2-oidc) out ## RemoteEnvironment -To integrate an existing config json into environment, you need to set `remoteEnv` +Some applications need to integrate an existing config into the `environment` used throughout the application. +Abp Framework supports this out of box. + +To integrate an existing config json into the `environment`, you need to set `remoteEnv` ```typescript export type customMergeFn = ( @@ -92,9 +97,9 @@ export interface RemoteEnv { ``` * `url` *: Required. The url to be used to retrieve environment config -* `mergeStrategy`: Defines how local and remote environment json will be merged - * `deepmerge`: Both local and remote environment json will be merged recursively. If both config has same nested path, remote environment will be prioritized. - * `overwrite`: Remote environment will be used and local environment will be ignored. +* `mergeStrategy` *: Required. Defines how the local and the remote `environment` json will be merged + * `deepmerge`: Both local and remote `environment` json will be merged recursively. If both configs have same nested path, the remote `environment` will be prioritized. + * `overwrite`: Remote `environment` will be used and local environment will be ignored. * `customMergeFn`: You can also provide your own merge function as shown in the example. It will take two parameters, `localEnv: Partial` and `remoteEnv` and it needs to return a `Config.Environment` object. * `method`: HTTP method to be used when retrieving environment config. Default: `GET` * `headers`: If extra headers are needed for the request, it can be set through this field. \ No newline at end of file From d410e8059ced47fbaadc04536bb2595b03c04562 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Fri, 21 Aug 2020 23:31:59 +0300 Subject: [PATCH 006/474] Introduce @abp/cropperjs npm package CropperJs script and style contributor are added --- .../CropperJs/CropperJsScriptContributor.cs | 13 +++++++++++++ .../Packages/CropperJs/CropperJsStyleContributor.cs | 13 +++++++++++++ npm/packs/cropperjs/abp.resourcemapping.js | 6 ++++++ npm/packs/cropperjs/package.json | 11 +++++++++++ 4 files changed, 43 insertions(+) create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/CropperJs/CropperJsScriptContributor.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/CropperJs/CropperJsStyleContributor.cs create mode 100644 npm/packs/cropperjs/abp.resourcemapping.js create mode 100644 npm/packs/cropperjs/package.json diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/CropperJs/CropperJsScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/CropperJs/CropperJsScriptContributor.cs new file mode 100644 index 0000000000..fbfd19f765 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/CropperJs/CropperJsScriptContributor.cs @@ -0,0 +1,13 @@ +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using System.Collections.Generic; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.CropperJs +{ + public class CropperJsScriptContributor : BundleContributor + { + public override void ConfigureBundle(BundleConfigurationContext context) + { + context.Files.AddIfNotContains("/libs/cropperjs/js/cropper.min.js"); + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/CropperJs/CropperJsStyleContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/CropperJs/CropperJsStyleContributor.cs new file mode 100644 index 0000000000..1e6f78ff3f --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/CropperJs/CropperJsStyleContributor.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.CropperJs +{ + public class CropperJsStyleContributor : BundleContributor + { + public override void ConfigureBundle(BundleConfigurationContext context) + { + context.Files.AddIfNotContains("/libs/cropperjs/css/cropper.min.css"); + } + } +} \ No newline at end of file diff --git a/npm/packs/cropperjs/abp.resourcemapping.js b/npm/packs/cropperjs/abp.resourcemapping.js new file mode 100644 index 0000000000..68cc55b64e --- /dev/null +++ b/npm/packs/cropperjs/abp.resourcemapping.js @@ -0,0 +1,6 @@ +module.exports = { + mappings: { + "@node_modules/cropperjs/dist/cropper.min.js": "@libs/cropperjs/js/", + "@node_modules/cropperjs/dist/cropper.min.css": "@libs/cropperjs/css/" + } +} \ No newline at end of file diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json new file mode 100644 index 0000000000..9ce511e71b --- /dev/null +++ b/npm/packs/cropperjs/package.json @@ -0,0 +1,11 @@ +{ + "version": "3.0.5", + "name": "@abp/cropperjs", + "publishConfig": { + "access": "public" + }, + "dependencies": { + "cropperjs": "^1.5.7" + }, + "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" +} From 1706038bba5691290c05f1fc5410585ba5441ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 22 Aug 2020 21:13:21 +0300 Subject: [PATCH 007/474] Created the initial Blazor application inside the startup template. --- .../MyCompanyName.MyProjectName.sln | 7 + .../App.razor | 10 + .../MyCompanyName.MyProjectName.Blazor.csproj | 15 + .../Pages/Counter.razor | 16 + .../Pages/FetchData.razor | 55 ++ .../Pages/Index.razor | 7 + .../Program.cs | 25 + .../Properties/launchSettings.json | 29 + .../Shared/MainLayout.razor | 15 + .../Shared/NavMenu.razor | 37 ++ .../Shared/SurveyPrompt.razor | 16 + .../_Imports.razor | 9 + .../wwwroot/css/app.css | 183 ++++++ .../wwwroot/css/bootstrap/bootstrap.min.css | 7 + .../css/bootstrap/bootstrap.min.css.map | 1 + .../wwwroot/css/open-iconic/FONT-LICENSE | 86 +++ .../wwwroot/css/open-iconic/ICON-LICENSE | 21 + .../wwwroot/css/open-iconic/README.md | 114 ++++ .../font/css/open-iconic-bootstrap.min.css | 1 + .../open-iconic/font/fonts/open-iconic.eot | Bin 0 -> 28196 bytes .../open-iconic/font/fonts/open-iconic.otf | Bin 0 -> 20996 bytes .../open-iconic/font/fonts/open-iconic.svg | 543 ++++++++++++++++++ .../open-iconic/font/fonts/open-iconic.ttf | Bin 0 -> 28028 bytes .../open-iconic/font/fonts/open-iconic.woff | Bin 0 -> 14984 bytes .../wwwroot/favicon.ico | Bin 0 -> 32038 bytes .../wwwroot/index.html | 24 + .../wwwroot/sample-data/weather.json | 27 + 27 files changed, 1248 insertions(+) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Counter.razor create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/FetchData.razor create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Properties/launchSettings.json create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/MainLayout.razor create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/SurveyPrompt.razor create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/app.css create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/bootstrap/bootstrap.min.css create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/bootstrap/bootstrap.min.css.map create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/open-iconic/FONT-LICENSE create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/open-iconic/ICON-LICENSE create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/open-iconic/README.md create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/open-iconic/font/fonts/open-iconic.eot create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/open-iconic/font/fonts/open-iconic.otf create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/open-iconic/font/fonts/open-iconic.svg create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/open-iconic/font/fonts/open-iconic.woff create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/favicon.ico create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/sample-data/weather.json diff --git a/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln b/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln index bc8ab2ff39..440c4fad8c 100644 --- a/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln +++ b/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln @@ -51,6 +51,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.HttpApi.HostWithIds", "src\MyCompanyName.MyProjectName.HttpApi.HostWithIds\MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj", "{748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.Blazor", "src\MyCompanyName.MyProjectName.Blazor\MyCompanyName.MyProjectName.Blazor.csproj", "{64F33915-25E3-4E12-82D9-6E976A23EFFB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -145,6 +147,10 @@ Global {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}.Debug|Any CPU.Build.0 = Debug|Any CPU {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}.Release|Any CPU.ActiveCfg = Release|Any CPU {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}.Release|Any CPU.Build.0 = Release|Any CPU + {64F33915-25E3-4E12-82D9-6E976A23EFFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {64F33915-25E3-4E12-82D9-6E976A23EFFB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {64F33915-25E3-4E12-82D9-6E976A23EFFB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {64F33915-25E3-4E12-82D9-6E976A23EFFB}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -172,6 +178,7 @@ Global {EF480016-9127-4916-8735-D2466BDBC582} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} {AA94D832-1CCC-4715-95A9-A483F23A1A5D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} {748584B1-BA69-4F6A-81AA-F4BDE6BCE29D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {64F33915-25E3-4E12-82D9-6E976A23EFFB} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor new file mode 100644 index 0000000000..6f67a6ea61 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor @@ -0,0 +1,10 @@ + + + + + + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj new file mode 100644 index 0000000000..7bd5dfd389 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj @@ -0,0 +1,15 @@ + + + + netstandard2.1 + 3.0 + + + + + + + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Counter.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Counter.razor new file mode 100644 index 0000000000..8641f78199 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Counter.razor @@ -0,0 +1,16 @@ +@page "/counter" + +

Counter

+ +

Current count: @currentCount

+ + + +@code { + private int currentCount = 0; + + private void IncrementCount() + { + currentCount++; + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/FetchData.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/FetchData.razor new file mode 100644 index 0000000000..5824082f06 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/FetchData.razor @@ -0,0 +1,55 @@ +@page "/fetchdata" +@inject HttpClient Http + +

Weather forecast

+ +

This component demonstrates fetching data from the server.

+ +@if (forecasts == null) +{ +

Loading...

+} +else +{ + + + + + + + + + + + @foreach (var forecast in forecasts) + { + + + + + + + } + +
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
+} + +@code { + private WeatherForecast[] forecasts; + + protected override async Task OnInitializedAsync() + { + forecasts = await Http.GetFromJsonAsync("sample-data/weather.json"); + } + + public class WeatherForecast + { + public DateTime Date { get; set; } + + public int TemperatureC { get; set; } + + public string Summary { get; set; } + + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor new file mode 100644 index 0000000000..e54d914390 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor @@ -0,0 +1,7 @@ +@page "/" + +

Hello, world!

+ +Welcome to your new app. + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs new file mode 100644 index 0000000000..308941c03b --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs @@ -0,0 +1,25 @@ +using System; +using System.Net.Http; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Text; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace MyCompanyName.MyProjectName.Blazor +{ + public class Program + { + public static async Task Main(string[] args) + { + var builder = WebAssemblyHostBuilder.CreateDefault(args); + builder.RootComponents.Add("app"); + + builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); + + await builder.Build().RunAsync(); + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Properties/launchSettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Properties/launchSettings.json new file mode 100644 index 0000000000..a9c9ac945d --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Properties/launchSettings.json @@ -0,0 +1,29 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:49205", + "sslPort": 44319 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "MyCompanyName.MyProjectName.Blazor": { + "commandName": "Project", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:5001;http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/MainLayout.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/MainLayout.razor new file mode 100644 index 0000000000..0f4e22a943 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/MainLayout.razor @@ -0,0 +1,15 @@ +@inherits LayoutComponentBase + + + +
+
+ About +
+ +
+ @Body +
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor new file mode 100644 index 0000000000..8c9d6e22f5 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor @@ -0,0 +1,37 @@ + + +
+ +
+ +@code { + private bool collapseNavMenu = true; + + private string NavMenuCssClass => collapseNavMenu ? "collapse" : null; + + private void ToggleNavMenu() + { + collapseNavMenu = !collapseNavMenu; + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/SurveyPrompt.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/SurveyPrompt.razor new file mode 100644 index 0000000000..02714098ef --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/SurveyPrompt.razor @@ -0,0 +1,16 @@ + + +@code { + // Demonstrates how a parent component can supply parameters + [Parameter] + public string Title { get; set; } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor new file mode 100644 index 0000000000..711a501e3c --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor @@ -0,0 +1,9 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using MyCompanyName.MyProjectName.Blazor +@using MyCompanyName.MyProjectName.Blazor.Shared diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/app.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/app.css new file mode 100644 index 0000000000..4e4425c9b3 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/app.css @@ -0,0 +1,183 @@ +@import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); + +html, body { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +a, .btn-link { + color: #0366d6; +} + +.btn-primary { + color: #fff; + background-color: #1b6ec2; + border-color: #1861ac; +} + +app { + position: relative; + display: flex; + flex-direction: column; +} + +.top-row { + height: 3.5rem; + display: flex; + align-items: center; +} + +.main { + flex: 1; +} + + .main .top-row { + background-color: #f7f7f7; + border-bottom: 1px solid #d6d5d5; + justify-content: flex-end; + } + + .main .top-row > a, .main .top-row .btn-link { + white-space: nowrap; + margin-left: 1.5rem; + } + +.main .top-row a:first-child { + overflow: hidden; + text-overflow: ellipsis; +} + +.sidebar { + background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); +} + + .sidebar .top-row { + background-color: rgba(0,0,0,0.4); + } + + .sidebar .navbar-brand { + font-size: 1.1rem; + } + + .sidebar .oi { + width: 2rem; + font-size: 1.1rem; + vertical-align: text-top; + top: -2px; + } + + .sidebar .nav-item { + font-size: 0.9rem; + padding-bottom: 0.5rem; + } + + .sidebar .nav-item:first-of-type { + padding-top: 1rem; + } + + .sidebar .nav-item:last-of-type { + padding-bottom: 1rem; + } + + .sidebar .nav-item a { + color: #d7d7d7; + border-radius: 4px; + height: 3rem; + display: flex; + align-items: center; + line-height: 3rem; + } + + .sidebar .nav-item a.active { + background-color: rgba(255,255,255,0.25); + color: white; + } + + .sidebar .nav-item a:hover { + background-color: rgba(255,255,255,0.1); + color: white; + } + +.content { + padding-top: 1.1rem; +} + +.navbar-toggler { + background-color: rgba(255, 255, 255, 0.1); +} + +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} + +.invalid { + outline: 1px solid red; +} + +.validation-message { + color: red; +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + +#blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; +} + +@media (max-width: 767.98px) { + .main .top-row:not(.auth) { + display: none; + } + + .main .top-row.auth { + justify-content: space-between; + } + + .main .top-row a, .main .top-row .btn-link { + margin-left: 0; + } +} + +@media (min-width: 768px) { + app { + flex-direction: row; + } + + .sidebar { + width: 250px; + height: 100vh; + position: sticky; + top: 0; + } + + .main .top-row { + position: sticky; + top: 0; + } + + .main > div { + padding-left: 2rem !important; + padding-right: 1.5rem !important; + } + + .navbar-toggler { + display: none; + } + + .sidebar .collapse { + /* Never collapse the sidebar for wide screens */ + display: block; + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/bootstrap/bootstrap.min.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/bootstrap/bootstrap.min.css new file mode 100644 index 0000000000..92e3fe8712 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/bootstrap/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/bootstrap/bootstrap.min.css.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/bootstrap/bootstrap.min.css.map new file mode 100644 index 0000000000..1e9cb78a53 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/css/bootstrap/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_forms.scss","../../scss/mixins/_gradients.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/utilities/_align.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_background.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_embed.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/utilities/_overflow.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_shadows.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_stretched-link.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/_print.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"utilities\";\n@import \"print\";\n",":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n","// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable-next-line selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-monospace;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg {\n // Workaround for the SVG overflow bug in IE10/11 is still required.\n // See https://github.com/twbs/bootstrap/issues/26878\n overflow: hidden;\n vertical-align: middle;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $table-caption-color;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `` alignment by inheriting from the ``, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n // stylelint-disable-next-line property-blacklist\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// Remove the inheritance of word-wrap in Safari.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24990\nselect {\n word-wrap: normal;\n}\n\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Opinionated: add \"hand\" cursor to non-disabled button elements.\n@if $enable-pointer-cursor-for-buttons {\n button,\n [type=\"button\"],\n [type=\"reset\"],\n [type=\"submit\"] {\n &:not(:disabled) {\n cursor: pointer;\n }\n }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `

`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n @include font-size(1.5rem);\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n\n.blockquote-footer::before {\n content: \"\\2014\\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\n\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-break: break-word;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n.row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n\n.col-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n -ms-flex-order: -1;\n order: -1;\n}\n\n.order-last {\n -ms-flex-order: 13;\n order: 13;\n}\n\n.order-0 {\n -ms-flex-order: 0;\n order: 0;\n}\n\n.order-1 {\n -ms-flex-order: 1;\n order: 1;\n}\n\n.order-2 {\n -ms-flex-order: 2;\n order: 2;\n}\n\n.order-3 {\n -ms-flex-order: 3;\n order: 3;\n}\n\n.order-4 {\n -ms-flex-order: 4;\n order: 4;\n}\n\n.order-5 {\n -ms-flex-order: 5;\n order: 5;\n}\n\n.order-6 {\n -ms-flex-order: 6;\n order: 6;\n}\n\n.order-7 {\n -ms-flex-order: 7;\n order: 7;\n}\n\n.order-8 {\n -ms-flex-order: 8;\n order: 8;\n}\n\n.order-9 {\n -ms-flex-order: 9;\n order: 9;\n}\n\n.order-10 {\n -ms-flex-order: 10;\n order: 10;\n}\n\n.order-11 {\n -ms-flex-order: 11;\n order: 11;\n}\n\n.order-12 {\n -ms-flex-order: 12;\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-sm-last {\n -ms-flex-order: 13;\n order: 13;\n }\n .order-sm-0 {\n -ms-flex-order: 0;\n order: 0;\n }\n .order-sm-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-sm-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-sm-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-sm-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-sm-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-sm-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-sm-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-sm-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-sm-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-sm-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-sm-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-sm-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-md-last {\n -ms-flex-order: 13;\n order: 13;\n }\n .order-md-0 {\n -ms-flex-order: 0;\n order: 0;\n }\n .order-md-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-md-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-md-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-md-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-md-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-md-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-md-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-md-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-md-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-md-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-md-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-md-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-lg-last {\n -ms-flex-order: 13;\n order: 13;\n }\n .order-lg-0 {\n -ms-flex-order: 0;\n order: 0;\n }\n .order-lg-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-lg-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-lg-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-lg-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-lg-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-lg-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-lg-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-lg-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-lg-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-lg-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-lg-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-lg-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n -ms-flex-order: -1;\n order: -1;\n }\n .order-xl-last {\n -ms-flex-order: 13;\n order: 13;\n }\n .order-xl-0 {\n -ms-flex-order: 0;\n order: 0;\n }\n .order-xl-1 {\n -ms-flex-order: 1;\n order: 1;\n }\n .order-xl-2 {\n -ms-flex-order: 2;\n order: 2;\n }\n .order-xl-3 {\n -ms-flex-order: 3;\n order: 3;\n }\n .order-xl-4 {\n -ms-flex-order: 4;\n order: 4;\n }\n .order-xl-5 {\n -ms-flex-order: 5;\n order: 5;\n }\n .order-xl-6 {\n -ms-flex-order: 6;\n order: 6;\n }\n .order-xl-7 {\n -ms-flex-order: 7;\n order: 7;\n }\n .order-xl-8 {\n -ms-flex-order: 8;\n order: 8;\n }\n .order-xl-9 {\n -ms-flex-order: 9;\n order: 9;\n }\n .order-xl-10 {\n -ms-flex-order: 10;\n order: 10;\n }\n .order-xl-11 {\n -ms-flex-order: 11;\n order: 11;\n }\n .order-xl-12 {\n -ms-flex-order: 12;\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n margin-bottom: 1rem;\n color: #212529;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n border: 0;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n color: #212529;\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n border-color: #7abaff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n border-color: #b3b7bb;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n border-color: #8fd19e;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n border-color: #86cfda;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n border-color: #ffdf7e;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n border-color: #ed969e;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n border-color: #fbfcfc;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n border-color: #95999c;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n color: #fff;\n background-color: #343a40;\n border-color: #454d55;\n}\n\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.table-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #454d55;\n}\n\n.table-dark.table-bordered {\n border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n color: #fff;\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.table-responsive > .table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::-webkit-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control::-moz-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:-ms-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control::-ms-input-placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0;\n line-height: 1.5;\n color: #212529;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.form-control-lg {\n height: calc(1.5em + 1rem + 2px);\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control[size], select.form-control[multiple] {\n height: auto;\n}\n\ntextarea.form-control {\n height: auto;\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n\n.form-check-label {\n margin-bottom: 0;\n}\n\n.form-check-inline {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: #28a745;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: center right calc(0.375em + 0.1875rem);\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:valid, .custom-select.is-valid {\n border-color: #28a745;\n padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-select:valid ~ .valid-feedback,\n.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control-file:valid ~ .valid-feedback,\n.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,\n.form-control-file.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n border-color: #34ce57;\n background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: #dc3545;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\");\n background-repeat: no-repeat;\n background-position: center right calc(0.375em + 0.1875rem);\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n border-color: #dc3545;\n padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-select:invalid ~ .invalid-feedback,\n.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control-file:invalid ~ .invalid-feedback,\n.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,\n.form-control-file.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n border-color: #e4606d;\n background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -ms-flex-align: center;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group,\n .form-inline .custom-select {\n width: auto;\n }\n .form-inline .form-check {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: 400;\n color: #212529;\n text-align: center;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n\n.btn:hover {\n color: #212529;\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-outline-primary {\n color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n text-decoration: none;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 768px) {\n .dropdown-menu-md-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 992px) {\n .dropdown-menu-lg-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 1200px) {\n .dropdown-menu-xl-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-right {\n right: 0;\n left: auto;\n }\n}\n\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: 0.25rem 1.5rem;\n color: #212529;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: -ms-inline-flexbox;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n margin-left: -1px;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: -1px;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: stretch;\n align-items: stretch;\n width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .form-control-plaintext,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .form-control-plaintext + .form-control,\n.input-group > .form-control-plaintext + .custom-select,\n.input-group > .form-control-plaintext + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n z-index: 3;\n}\n\n.input-group > .custom-file .custom-file-input:focus {\n z-index: 4;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n display: -ms-flexbox;\n display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n\n.input-group-prepend .btn:focus,\n.input-group-append .btn:focus {\n z-index: 3;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n\n.input-group-prepend {\n margin-right: -1px;\n}\n\n.input-group-append {\n margin-left: -1px;\n}\n\n.input-group-text {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n height: calc(1.5em + 1rem + 2px);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n height: calc(1.5em + 0.5rem + 2px);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n padding-right: 1.75rem;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n display: -ms-inline-flexbox;\n display: inline-flex;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #80bdff;\n}\n\n.custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n border-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n\n.custom-control-label {\n position: relative;\n margin-bottom: 0;\n vertical-align: top;\n}\n\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n background-color: #fff;\n border: #adb5bd solid 1px;\n}\n\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background: no-repeat 50% / 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-switch {\n padding-left: 2.25rem;\n}\n\n.custom-switch .custom-control-label::before {\n left: -2.25rem;\n width: 1.75rem;\n pointer-events: all;\n border-radius: 0.5rem;\n}\n\n.custom-switch .custom-control-label::after {\n top: calc(0.25rem + 2px);\n left: calc(-2.25rem + 2px);\n width: calc(1rem - 4px);\n height: calc(1rem - 4px);\n background-color: #adb5bd;\n border-radius: 0.5rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-switch .custom-control-label::after {\n transition: none;\n }\n}\n\n.custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n background-color: #fff;\n -webkit-transform: translateX(0.75rem);\n transform: translateX(0.75rem);\n}\n\n.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n display: none;\n}\n\n.custom-select-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n}\n\n.custom-select-lg {\n height: calc(1.5em + 1rem + 2px);\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-label {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input:disabled ~ .custom-file-label {\n background-color: #e9ecef;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n\n.custom-file-input ~ .custom-file-label[data-browse]::after {\n content: attr(data-browse);\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(1.5em + 0.75rem);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: inherit;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-range {\n width: 100%;\n height: calc(1rem + 0.4rem);\n padding: 0;\n background-color: transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.custom-range:focus {\n outline: none;\n}\n\n.custom-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-ms-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-moz-focus-outer {\n border: 0;\n}\n\n.custom-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n -webkit-appearance: none;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n\n.custom-range::-webkit-slider-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n -moz-appearance: none;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-moz-range-thumb {\n transition: none;\n }\n}\n\n.custom-range::-moz-range-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: 0;\n margin-right: 0.2rem;\n margin-left: 0.2rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-ms-thumb {\n transition: none;\n }\n}\n\n.custom-range::-ms-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-ms-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: transparent;\n border-color: transparent;\n border-width: 0.5rem;\n}\n\n.custom-range::-ms-fill-lower {\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-fill-upper {\n margin-right: 15px;\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range:disabled::-webkit-slider-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-webkit-slider-runnable-track {\n cursor: default;\n}\n\n.custom-range:disabled::-moz-range-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-moz-range-track {\n cursor: default;\n}\n\n.custom-range:disabled::-ms-thumb {\n background-color: #adb5bd;\n}\n\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-control-label::before,\n .custom-file-label,\n .custom-select {\n transition: none;\n }\n}\n\n.nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #6c757d;\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -ms-flex-positive: 1;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n -ms-flex-preferred-size: 100%;\n flex-basis: 100%;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n\n.card {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n\n.card-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n }\n .card-group > .card {\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n -moz-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n -moz-column-gap: 1.25rem;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.accordion > .card {\n overflow: hidden;\n}\n\n.accordion > .card:not(:first-of-type) .card-header:first-child {\n border-radius: 0;\n}\n\n.accordion > .card:not(:first-of-type):not(:last-of-type) {\n border-bottom: 0;\n border-radius: 0;\n}\n\n.accordion > .card:first-of-type {\n border-bottom: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.accordion > .card:last-of-type {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.accordion > .card .card-header {\n margin-bottom: -1px;\n}\n\n.breadcrumb {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: 0.5rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #6c757d;\n}\n\n.pagination {\n display: -ms-flexbox;\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n z-index: 2;\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.page-link:focus {\n z-index: 2;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 1;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .badge {\n transition: none;\n }\n}\n\na.badge:hover, a.badge:focus {\n text-decoration: none;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\na.badge-primary:hover, a.badge-primary:focus {\n color: #fff;\n background-color: #0062cc;\n}\n\na.badge-primary:focus, a.badge-primary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\na.badge-secondary:hover, a.badge-secondary:focus {\n color: #fff;\n background-color: #545b62;\n}\n\na.badge-secondary:focus, a.badge-secondary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\na.badge-success:hover, a.badge-success:focus {\n color: #fff;\n background-color: #1e7e34;\n}\n\na.badge-success:focus, a.badge-success.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\na.badge-info:hover, a.badge-info:focus {\n color: #fff;\n background-color: #117a8b;\n}\n\na.badge-info:focus, a.badge-info.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\na.badge-warning:hover, a.badge-warning:focus {\n color: #212529;\n background-color: #d39e00;\n}\n\na.badge-warning:focus, a.badge-warning.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\na.badge-danger:hover, a.badge-danger:focus {\n color: #fff;\n background-color: #bd2130;\n}\n\na.badge-danger:focus, a.badge-danger.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\na.badge-light:hover, a.badge-light:focus {\n color: #212529;\n background-color: #dae0e5;\n}\n\na.badge-light:focus, a.badge-light.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\na.badge-dark:hover, a.badge-dark:focus {\n color: #fff;\n background-color: #1d2124;\n}\n\na.badge-dark:focus, a.badge-dark.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n color: #202326;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: -ms-flexbox;\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: center;\n justify-content: center;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n -webkit-animation: progress-bar-stripes 1s linear infinite;\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n -webkit-animation: none;\n animation: none;\n }\n}\n\n.media {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.media-body {\n -ms-flex: 1;\n flex: 1;\n}\n\n.list-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-horizontal {\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.list-group-horizontal .list-group-item {\n margin-right: -1px;\n margin-bottom: 0;\n}\n\n.list-group-horizontal .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n}\n\n.list-group-horizontal .list-group-item:last-child {\n margin-right: 0;\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .list-group-horizontal-sm .list-group-item {\n margin-right: -1px;\n margin-bottom: 0;\n }\n .list-group-horizontal-sm .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item:last-child {\n margin-right: 0;\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n}\n\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .list-group-horizontal-md .list-group-item {\n margin-right: -1px;\n margin-bottom: 0;\n }\n .list-group-horizontal-md .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md .list-group-item:last-child {\n margin-right: 0;\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n}\n\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .list-group-horizontal-lg .list-group-item {\n margin-right: -1px;\n margin-bottom: 0;\n }\n .list-group-horizontal-lg .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item:last-child {\n margin-right: 0;\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n -ms-flex-direction: row;\n flex-direction: row;\n }\n .list-group-horizontal-xl .list-group-item {\n margin-right: -1px;\n margin-bottom: 0;\n }\n .list-group-horizontal-xl .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item:last-child {\n margin-right: 0;\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush .list-group-item:last-child {\n margin-bottom: -1px;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n margin-bottom: 0;\n border-bottom: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:hover {\n color: #000;\n text-decoration: none;\n}\n\n.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\na.close.disabled {\n pointer-events: none;\n}\n\n.toast {\n max-width: 350px;\n overflow: hidden;\n font-size: 0.875rem;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n opacity: 0;\n border-radius: 0.25rem;\n}\n\n.toast:not(:last-child) {\n margin-bottom: 0.75rem;\n}\n\n.toast.showing {\n opacity: 1;\n}\n\n.toast.show {\n display: block;\n opacity: 1;\n}\n\n.toast.hide {\n display: none;\n}\n\n.toast-header {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n padding: 0.25rem 0.75rem;\n color: #6c757d;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n\n.toast-body {\n padding: 0.75rem;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1050;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n -webkit-transform: translate(0, -50px);\n transform: translate(0, -50px);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n\n.modal.show .modal-dialog {\n -webkit-transform: none;\n transform: none;\n}\n\n.modal-dialog-scrollable {\n display: -ms-flexbox;\n display: flex;\n max-height: calc(100% - 1rem);\n}\n\n.modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 1rem);\n overflow: hidden;\n}\n\n.modal-dialog-scrollable .modal-header,\n.modal-dialog-scrollable .modal-footer {\n -ms-flex-negative: 0;\n flex-shrink: 0;\n}\n\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n min-height: calc(100% - 1rem);\n}\n\n.modal-dialog-centered::before {\n display: block;\n height: calc(100vh - 1rem);\n content: \"\";\n}\n\n.modal-dialog-centered.modal-dialog-scrollable {\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: center;\n justify-content: center;\n height: 100%;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable .modal-content {\n max-height: none;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable::before {\n content: none;\n}\n\n.modal-content {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 1rem 1rem;\n border-bottom: 1px solid #dee2e6;\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n padding: 1rem 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: end;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #dee2e6;\n border-bottom-right-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-scrollable {\n max-height: calc(100% - 3.5rem);\n }\n .modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 3.5rem);\n }\n .modal-dialog-centered {\n min-height: calc(100% - 3.5rem);\n }\n .modal-dialog-centered::before {\n height: calc(100vh - 3.5rem);\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n max-width: 800px;\n }\n}\n\n@media (min-width: 1200px) {\n .modal-xl {\n max-width: 1140px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n\n.bs-popover-top > .arrow, .bs-popover-auto[x-placement^=\"top\"] > .arrow {\n bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^=\"top\"] > .arrow::before {\n bottom: 0;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^=\"top\"] > .arrow::after {\n bottom: 1px;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n\n.bs-popover-right > .arrow, .bs-popover-auto[x-placement^=\"right\"] > .arrow {\n left: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^=\"right\"] > .arrow::before {\n left: 0;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^=\"right\"] > .arrow::after {\n left: 1px;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n\n.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow {\n top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::before {\n top: 0;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::after {\n top: 1px;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n\n.bs-popover-left > .arrow, .bs-popover-auto[x-placement^=\"left\"] > .arrow {\n right: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^=\"left\"] > .arrow::before {\n right: 0;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^=\"left\"] > .arrow::after {\n right: 1px;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n -ms-touch-action: pan-y;\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n transition: -webkit-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n -webkit-transform: translateX(100%);\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n -webkit-transform: none;\n transform: none;\n}\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n z-index: 1;\n opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n z-index: 0;\n opacity: 0;\n transition: 0s 0.6s opacity;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-left,\n .carousel-fade .active.carousel-item-right {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: no-repeat 50% / 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 15;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n box-sizing: content-box;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: .5;\n transition: opacity 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators li {\n transition: none;\n }\n}\n\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n@-webkit-keyframes spinner-border {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes spinner-border {\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n.spinner-border {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n border: 0.25em solid currentColor;\n border-right-color: transparent;\n border-radius: 50%;\n -webkit-animation: spinner-border .75s linear infinite;\n animation: spinner-border .75s linear infinite;\n}\n\n.spinner-border-sm {\n width: 1rem;\n height: 1rem;\n border-width: 0.2em;\n}\n\n@-webkit-keyframes spinner-grow {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n\n@keyframes spinner-grow {\n 0% {\n -webkit-transform: scale(0);\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n\n.spinner-grow {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n background-color: currentColor;\n border-radius: 50%;\n opacity: 0;\n -webkit-animation: spinner-grow .75s linear infinite;\n animation: spinner-grow .75s linear infinite;\n}\n\n.spinner-grow-sm {\n width: 1rem;\n height: 1rem;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded-sm {\n border-radius: 0.2rem !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-lg {\n border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: 50rem !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n}\n\n.d-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-md-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: -ms-flexbox !important;\n display: flex !important;\n }\n .d-print-inline-flex {\n display: -ms-inline-flexbox !important;\n display: inline-flex !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n}\n\n.flex-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n}\n\n.flex-fill {\n -ms-flex: 1 1 auto !important;\n flex: 1 1 auto !important;\n}\n\n.flex-grow-0 {\n -ms-flex-positive: 0 !important;\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n -ms-flex-negative: 0 !important;\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n -ms-flex-negative: 1 !important;\n flex-shrink: 1 !important;\n}\n\n.justify-content-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n}\n\n.justify-content-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n}\n\n.align-items-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n}\n\n.align-items-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n}\n\n.align-items-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n}\n\n.align-items-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n}\n\n.align-content-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n}\n\n.align-content-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n}\n\n.align-content-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n}\n\n.align-content-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n}\n\n.align-content-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n}\n\n.align-self-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n}\n\n.align-self-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n}\n\n.align-self-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n}\n\n.align-self-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n}\n\n.align-self-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-sm-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .flex-sm-fill {\n -ms-flex: 1 1 auto !important;\n flex: 1 1 auto !important;\n }\n .flex-sm-grow-0 {\n -ms-flex-positive: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n -ms-flex-negative: 0 !important;\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n -ms-flex-negative: 1 !important;\n flex-shrink: 1 !important;\n }\n .justify-content-sm-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-sm-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-sm-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-sm-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-sm-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-sm-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-sm-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-sm-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-md-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .flex-md-fill {\n -ms-flex: 1 1 auto !important;\n flex: 1 1 auto !important;\n }\n .flex-md-grow-0 {\n -ms-flex-positive: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n -ms-flex-negative: 0 !important;\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n -ms-flex-negative: 1 !important;\n flex-shrink: 1 !important;\n }\n .justify-content-md-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-md-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-md-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-md-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-md-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-md-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-md-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-md-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-md-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-md-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-md-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-md-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-md-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-md-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-md-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-md-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-lg-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .flex-lg-fill {\n -ms-flex: 1 1 auto !important;\n flex: 1 1 auto !important;\n }\n .flex-lg-grow-0 {\n -ms-flex-positive: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n -ms-flex-negative: 0 !important;\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n -ms-flex-negative: 1 !important;\n flex-shrink: 1 !important;\n }\n .justify-content-lg-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-lg-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-lg-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-lg-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-lg-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-lg-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-lg-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-lg-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n -ms-flex-direction: row !important;\n flex-direction: row !important;\n }\n .flex-xl-column {\n -ms-flex-direction: column !important;\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n }\n .flex-xl-fill {\n -ms-flex: 1 1 auto !important;\n flex: 1 1 auto !important;\n }\n .flex-xl-grow-0 {\n -ms-flex-positive: 0 !important;\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n -ms-flex-negative: 0 !important;\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n -ms-flex-negative: 1 !important;\n flex-shrink: 1 !important;\n }\n .justify-content-xl-start {\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n .justify-content-xl-between {\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n -ms-flex-align: center !important;\n align-items: center !important;\n }\n .align-items-xl-baseline {\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n }\n .align-content-xl-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important;\n }\n .align-content-xl-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important;\n }\n .align-content-xl-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n }\n .align-self-xl-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n -ms-flex-item-align: center !important;\n align-self: center !important;\n }\n .align-self-xl-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n .sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n}\n\n.shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n pointer-events: auto;\n content: \"\";\n background-color: rgba(0, 0, 0, 0);\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-n1 {\n margin: -0.25rem !important;\n}\n\n.mt-n1,\n.my-n1 {\n margin-top: -0.25rem !important;\n}\n\n.mr-n1,\n.mx-n1 {\n margin-right: -0.25rem !important;\n}\n\n.mb-n1,\n.my-n1 {\n margin-bottom: -0.25rem !important;\n}\n\n.ml-n1,\n.mx-n1 {\n margin-left: -0.25rem !important;\n}\n\n.m-n2 {\n margin: -0.5rem !important;\n}\n\n.mt-n2,\n.my-n2 {\n margin-top: -0.5rem !important;\n}\n\n.mr-n2,\n.mx-n2 {\n margin-right: -0.5rem !important;\n}\n\n.mb-n2,\n.my-n2 {\n margin-bottom: -0.5rem !important;\n}\n\n.ml-n2,\n.mx-n2 {\n margin-left: -0.5rem !important;\n}\n\n.m-n3 {\n margin: -1rem !important;\n}\n\n.mt-n3,\n.my-n3 {\n margin-top: -1rem !important;\n}\n\n.mr-n3,\n.mx-n3 {\n margin-right: -1rem !important;\n}\n\n.mb-n3,\n.my-n3 {\n margin-bottom: -1rem !important;\n}\n\n.ml-n3,\n.mx-n3 {\n margin-left: -1rem !important;\n}\n\n.m-n4 {\n margin: -1.5rem !important;\n}\n\n.mt-n4,\n.my-n4 {\n margin-top: -1.5rem !important;\n}\n\n.mr-n4,\n.mx-n4 {\n margin-right: -1.5rem !important;\n}\n\n.mb-n4,\n.my-n4 {\n margin-bottom: -1.5rem !important;\n}\n\n.ml-n4,\n.mx-n4 {\n margin-left: -1.5rem !important;\n}\n\n.m-n5 {\n margin: -3rem !important;\n}\n\n.mt-n5,\n.my-n5 {\n margin-top: -3rem !important;\n}\n\n.mr-n5,\n.mx-n5 {\n margin-right: -3rem !important;\n}\n\n.mb-n5,\n.my-n5 {\n margin-bottom: -3rem !important;\n}\n\n.ml-n5,\n.mx-n5 {\n margin-left: -3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-n1 {\n margin: -0.25rem !important;\n }\n .mt-sm-n1,\n .my-sm-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-sm-n1,\n .mx-sm-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-sm-n1,\n .my-sm-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-sm-n1,\n .mx-sm-n1 {\n margin-left: -0.25rem !important;\n }\n .m-sm-n2 {\n margin: -0.5rem !important;\n }\n .mt-sm-n2,\n .my-sm-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-sm-n2,\n .mx-sm-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-sm-n2,\n .my-sm-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-sm-n2,\n .mx-sm-n2 {\n margin-left: -0.5rem !important;\n }\n .m-sm-n3 {\n margin: -1rem !important;\n }\n .mt-sm-n3,\n .my-sm-n3 {\n margin-top: -1rem !important;\n }\n .mr-sm-n3,\n .mx-sm-n3 {\n margin-right: -1rem !important;\n }\n .mb-sm-n3,\n .my-sm-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-sm-n3,\n .mx-sm-n3 {\n margin-left: -1rem !important;\n }\n .m-sm-n4 {\n margin: -1.5rem !important;\n }\n .mt-sm-n4,\n .my-sm-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-sm-n4,\n .mx-sm-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-sm-n4,\n .my-sm-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-sm-n4,\n .mx-sm-n4 {\n margin-left: -1.5rem !important;\n }\n .m-sm-n5 {\n margin: -3rem !important;\n }\n .mt-sm-n5,\n .my-sm-n5 {\n margin-top: -3rem !important;\n }\n .mr-sm-n5,\n .mx-sm-n5 {\n margin-right: -3rem !important;\n }\n .mb-sm-n5,\n .my-sm-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-sm-n5,\n .mx-sm-n5 {\n margin-left: -3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-n1 {\n margin: -0.25rem !important;\n }\n .mt-md-n1,\n .my-md-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-md-n1,\n .mx-md-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-md-n1,\n .my-md-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-md-n1,\n .mx-md-n1 {\n margin-left: -0.25rem !important;\n }\n .m-md-n2 {\n margin: -0.5rem !important;\n }\n .mt-md-n2,\n .my-md-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-md-n2,\n .mx-md-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-md-n2,\n .my-md-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-md-n2,\n .mx-md-n2 {\n margin-left: -0.5rem !important;\n }\n .m-md-n3 {\n margin: -1rem !important;\n }\n .mt-md-n3,\n .my-md-n3 {\n margin-top: -1rem !important;\n }\n .mr-md-n3,\n .mx-md-n3 {\n margin-right: -1rem !important;\n }\n .mb-md-n3,\n .my-md-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-md-n3,\n .mx-md-n3 {\n margin-left: -1rem !important;\n }\n .m-md-n4 {\n margin: -1.5rem !important;\n }\n .mt-md-n4,\n .my-md-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-md-n4,\n .mx-md-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-md-n4,\n .my-md-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-md-n4,\n .mx-md-n4 {\n margin-left: -1.5rem !important;\n }\n .m-md-n5 {\n margin: -3rem !important;\n }\n .mt-md-n5,\n .my-md-n5 {\n margin-top: -3rem !important;\n }\n .mr-md-n5,\n .mx-md-n5 {\n margin-right: -3rem !important;\n }\n .mb-md-n5,\n .my-md-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-md-n5,\n .mx-md-n5 {\n margin-left: -3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-n1 {\n margin: -0.25rem !important;\n }\n .mt-lg-n1,\n .my-lg-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-lg-n1,\n .mx-lg-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-lg-n1,\n .my-lg-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-lg-n1,\n .mx-lg-n1 {\n margin-left: -0.25rem !important;\n }\n .m-lg-n2 {\n margin: -0.5rem !important;\n }\n .mt-lg-n2,\n .my-lg-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-lg-n2,\n .mx-lg-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-lg-n2,\n .my-lg-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-lg-n2,\n .mx-lg-n2 {\n margin-left: -0.5rem !important;\n }\n .m-lg-n3 {\n margin: -1rem !important;\n }\n .mt-lg-n3,\n .my-lg-n3 {\n margin-top: -1rem !important;\n }\n .mr-lg-n3,\n .mx-lg-n3 {\n margin-right: -1rem !important;\n }\n .mb-lg-n3,\n .my-lg-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-lg-n3,\n .mx-lg-n3 {\n margin-left: -1rem !important;\n }\n .m-lg-n4 {\n margin: -1.5rem !important;\n }\n .mt-lg-n4,\n .my-lg-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-lg-n4,\n .mx-lg-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-lg-n4,\n .my-lg-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-lg-n4,\n .mx-lg-n4 {\n margin-left: -1.5rem !important;\n }\n .m-lg-n5 {\n margin: -3rem !important;\n }\n .mt-lg-n5,\n .my-lg-n5 {\n margin-top: -3rem !important;\n }\n .mr-lg-n5,\n .mx-lg-n5 {\n margin-right: -3rem !important;\n }\n .mb-lg-n5,\n .my-lg-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-lg-n5,\n .mx-lg-n5 {\n margin-left: -3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-n1 {\n margin: -0.25rem !important;\n }\n .mt-xl-n1,\n .my-xl-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-xl-n1,\n .mx-xl-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-xl-n1,\n .my-xl-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-xl-n1,\n .mx-xl-n1 {\n margin-left: -0.25rem !important;\n }\n .m-xl-n2 {\n margin: -0.5rem !important;\n }\n .mt-xl-n2,\n .my-xl-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-xl-n2,\n .mx-xl-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-xl-n2,\n .my-xl-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-xl-n2,\n .mx-xl-n2 {\n margin-left: -0.5rem !important;\n }\n .m-xl-n3 {\n margin: -1rem !important;\n }\n .mt-xl-n3,\n .my-xl-n3 {\n margin-top: -1rem !important;\n }\n .mr-xl-n3,\n .mx-xl-n3 {\n margin-right: -1rem !important;\n }\n .mb-xl-n3,\n .my-xl-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-xl-n3,\n .mx-xl-n3 {\n margin-left: -1rem !important;\n }\n .m-xl-n4 {\n margin: -1.5rem !important;\n }\n .mt-xl-n4,\n .my-xl-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-xl-n4,\n .mx-xl-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-xl-n4,\n .my-xl-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-xl-n4,\n .mx-xl-n4 {\n margin-left: -1.5rem !important;\n }\n .m-xl-n5 {\n margin: -3rem !important;\n }\n .mt-xl-n5,\n .my-xl-n5 {\n margin-top: -3rem !important;\n }\n .mr-xl-n5,\n .mx-xl-n5 {\n margin-right: -3rem !important;\n }\n .mb-xl-n5,\n .my-xl-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-xl-n5,\n .mx-xl-n5 {\n margin-left: -3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n\n.text-monospace {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important;\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-lighter {\n font-weight: lighter !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-weight-bolder {\n font-weight: bolder !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0056b3 !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #494f54 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #19692c !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #0f6674 !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #ba8b00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #a71d2a !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #cbd3da !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #121416 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-break {\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n}\n\n.text-reset {\n color: inherit !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #adb5bd;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #dee2e6 !important;\n }\n .table-dark {\n color: inherit;\n }\n .table-dark th,\n .table-dark td,\n .table-dark thead th,\n .table-dark tbody + tbody {\n border-color: #dee2e6;\n }\n .table .thead-dark th {\n color: inherit;\n border-color: #dee2e6;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated font-resizing\n//\n// See https://github.com/twbs/rfs\n\n// Configuration\n\n// Base font size\n$rfs-base-font-size: 1.25rem !default;\n$rfs-font-size-unit: rem !default;\n\n// Breakpoint at where font-size starts decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n// Resize font-size based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != \"number\" or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-responsive-font-sizes to false\n$enable-responsive-font-sizes: true !default;\n\n// Cache $rfs-base-font-size unit\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\n\n// Remove px-unit from $rfs-base-font-size for calculations\n@if $rfs-base-font-size-unit == \"px\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1);\n}\n@else if $rfs-base-font-size-unit == \"rem\" {\n $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value);\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == \"px\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == \"rem\" or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);\n}\n\n// Responsive font-size mixin\n@mixin rfs($fs, $important: false) {\n // Cache $fs unit\n $fs-unit: if(type-of($fs) == \"number\", unit($fs), false);\n\n // Add !important suffix if needed\n $rfs-suffix: if($important, \" !important\", \"\");\n\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $fs-unit or $fs-unit != \"\" and $fs-unit != \"px\" and $fs-unit != \"rem\" or $fs == 0 {\n font-size: #{$fs}#{$rfs-suffix};\n }\n @else {\n // Variables for storing static and fluid rescaling\n $rfs-static: null;\n $rfs-fluid: null;\n\n // Remove px-unit from $fs for calculations\n @if $fs-unit == \"px\" {\n $fs: $fs / ($fs * 0 + 1);\n }\n @else if $fs-unit == \"rem\" {\n $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value);\n }\n\n // Set default font-size\n @if $rfs-font-size-unit == rem {\n $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix};\n }\n @else if $rfs-font-size-unit == px {\n $rfs-static: #{$fs}px#{$rfs-suffix};\n }\n @else {\n @error \"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\";\n }\n\n // Only add media query if font-size is bigger as the minimum font-size\n // If $rfs-factor == 1, no rescaling will take place\n @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes {\n $min-width: null;\n $variable-unit: null;\n\n // Calculate minimum font-size for given font-size\n $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor;\n\n // Calculate difference between given font-size and minimum font-size for given font-size\n $fs-diff: $fs - $fs-min;\n\n // Base font-size formatting\n // No need to check if the unit is valid, because we did that before\n $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px);\n\n // If two-dimensional, use smallest of screen width and height\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit};\n\n // Set the calculated font-size.\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\n }\n\n // Rendering\n @if $rfs-fluid == null {\n // Only render static font-size if no fluid font-size is available\n font-size: $rfs-static;\n }\n @else {\n $mq-value: null;\n\n // RFS breakpoint formatting\n @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem {\n $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit};\n }\n @else if $rfs-breakpoint-unit == px {\n $mq-value: #{$rfs-breakpoint}px;\n }\n @else {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n }\n\n @if $rfs-class == \"disable\" {\n // Adding an extra class increases specificity,\n // which prevents the media query to override the font size\n &,\n .disable-responsive-font-size &,\n &.disable-responsive-font-size {\n font-size: $rfs-static;\n }\n }\n @else {\n font-size: $rfs-static;\n }\n\n @if $rfs-two-dimensional {\n @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n @else {\n @media (max-width: #{$mq-value}) {\n @if $rfs-class == \"enable\" {\n .enable-responsive-font-size &,\n &.enable-responsive-font-size {\n font-size: $rfs-fluid;\n }\n }\n @else {\n font-size: $rfs-fluid;\n }\n\n @if $rfs-safari-iframe-resize-bug-fix {\n // stylelint-disable-next-line length-zero-no-unit\n min-width: 0vw;\n }\n }\n }\n }\n }\n}\n\n// The font-size & responsive-font-size mixin uses RFS to rescale font sizes\n@mixin font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n\n@mixin responsive-font-size($fs, $important: false) {\n @include rfs($fs, $important);\n}\n","/*!\n * Bootstrap v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n --blue: #007bff;\n --indigo: #6610f2;\n --purple: #6f42c1;\n --pink: #e83e8c;\n --red: #dc3545;\n --orange: #fd7e14;\n --yellow: #ffc107;\n --green: #28a745;\n --teal: #20c997;\n --cyan: #17a2b8;\n --white: #fff;\n --gray: #6c757d;\n --gray-dark: #343a40;\n --primary: #007bff;\n --secondary: #6c757d;\n --success: #28a745;\n --info: #17a2b8;\n --warning: #ffc107;\n --danger: #dc3545;\n --light: #f8f9fa;\n --dark: #343a40;\n --breakpoint-xs: 0;\n --breakpoint-sm: 576px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 992px;\n --breakpoint-xl: 1200px;\n --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 0.5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type=\"button\"]:not(:disabled),\n[type=\"reset\"]:not(:disabled),\n[type=\"submit\"]:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #6c757d;\n}\n\n.blockquote-footer::before {\n content: \"\\2014\\00A0\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #dee2e6;\n border-radius: 0.25rem;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #6c757d;\n}\n\ncode {\n font-size: 87.5%;\n color: #e83e8c;\n word-break: break-word;\n}\n\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #212529;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n}\n\npre {\n display: block;\n font-size: 87.5%;\n color: #212529;\n}\n\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container {\n max-width: 540px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 720px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n max-width: 960px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n max-width: 1140px;\n }\n}\n\n.container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 13;\n}\n\n.order-0 {\n order: 0;\n}\n\n.order-1 {\n order: 1;\n}\n\n.order-2 {\n order: 2;\n}\n\n.order-3 {\n order: 3;\n}\n\n.order-4 {\n order: 4;\n}\n\n.order-5 {\n order: 5;\n}\n\n.order-6 {\n order: 6;\n}\n\n.order-7 {\n order: 7;\n}\n\n.order-8 {\n order: 8;\n}\n\n.order-9 {\n order: 9;\n}\n\n.order-10 {\n order: 10;\n}\n\n.order-11 {\n order: 11;\n}\n\n.order-12 {\n order: 12;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n margin-bottom: 1rem;\n color: #212529;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #dee2e6;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n border: 0;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n color: #212529;\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8daff;\n}\n\n.table-primary th,\n.table-primary td,\n.table-primary thead th,\n.table-primary tbody + tbody {\n border-color: #7abaff;\n}\n\n.table-hover .table-primary:hover {\n background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #d6d8db;\n}\n\n.table-secondary th,\n.table-secondary td,\n.table-secondary thead th,\n.table-secondary tbody + tbody {\n border-color: #b3b7bb;\n}\n\n.table-hover .table-secondary:hover {\n background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #c3e6cb;\n}\n\n.table-success th,\n.table-success td,\n.table-success thead th,\n.table-success tbody + tbody {\n border-color: #8fd19e;\n}\n\n.table-hover .table-success:hover {\n background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #bee5eb;\n}\n\n.table-info th,\n.table-info td,\n.table-info thead th,\n.table-info tbody + tbody {\n border-color: #86cfda;\n}\n\n.table-hover .table-info:hover {\n background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #ffeeba;\n}\n\n.table-warning th,\n.table-warning td,\n.table-warning thead th,\n.table-warning tbody + tbody {\n border-color: #ffdf7e;\n}\n\n.table-hover .table-warning:hover {\n background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f5c6cb;\n}\n\n.table-danger th,\n.table-danger td,\n.table-danger thead th,\n.table-danger tbody + tbody {\n border-color: #ed969e;\n}\n\n.table-hover .table-danger:hover {\n background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fdfdfe;\n}\n\n.table-light th,\n.table-light td,\n.table-light thead th,\n.table-light tbody + tbody {\n border-color: #fbfcfc;\n}\n\n.table-hover .table-light:hover {\n background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c6c8ca;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th,\n.table-dark tbody + tbody {\n border-color: #95999c;\n}\n\n.table-hover .table-dark:hover {\n background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n color: #fff;\n background-color: #343a40;\n border-color: #454d55;\n}\n\n.table .thead-light th {\n color: #495057;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.table-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n border-color: #454d55;\n}\n\n.table-dark.table-bordered {\n border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n color: #fff;\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-sm > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-md > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-lg > .table-bordered {\n border: 0;\n }\n}\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n .table-responsive-xl > .table-bordered {\n border: 0;\n }\n}\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.table-responsive > .table-bordered {\n border: 0;\n}\n\n.form-control {\n display: block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::placeholder {\n color: #6c757d;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #e9ecef;\n opacity: 1;\n}\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0;\n line-height: 1.5;\n color: #212529;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.form-control-lg {\n height: calc(1.5em + 1rem + 2px);\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control[size], select.form-control[multiple] {\n height: auto;\n}\n\ntextarea.form-control {\n height: auto;\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n padding-right: 5px;\n padding-left: 5px;\n}\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n color: #6c757d;\n}\n\n.form-check-label {\n margin-bottom: 0;\n}\n\n.form-check-inline {\n display: inline-flex;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #28a745;\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(40, 167, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: #28a745;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: center right calc(0.375em + 0.1875rem);\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:valid, .custom-select.is-valid {\n border-color: #28a745;\n padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-select:valid ~ .valid-feedback,\n.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control-file:valid ~ .valid-feedback,\n.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,\n.form-control-file.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n border-color: #34ce57;\n background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n border-color: #28a745;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #dc3545;\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: .1rem;\n font-size: 0.875rem;\n line-height: 1.5;\n color: #fff;\n background-color: rgba(220, 53, 69, 0.9);\n border-radius: 0.25rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: #dc3545;\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\");\n background-repeat: no-repeat;\n background-position: center right calc(0.375em + 0.1875rem);\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .custom-select:invalid, .custom-select.is-invalid {\n border-color: #dc3545;\n padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n\n.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-select:invalid ~ .invalid-feedback,\n.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control-file:invalid ~ .invalid-feedback,\n.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,\n.form-control-file.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n border-color: #e4606d;\n background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n border-color: #dc3545;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-plaintext {\n display: inline-block;\n }\n .form-inline .input-group,\n .form-inline .custom-select {\n width: auto;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n flex-shrink: 0;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n align-items: center;\n justify-content: center;\n }\n .form-inline .custom-control-label {\n margin-bottom: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: 400;\n color: #212529;\n text-align: center;\n vertical-align: middle;\n user-select: none;\n background-color: transparent;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n\n.btn:hover {\n color: #212529;\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n color: #fff;\n background-color: #545b62;\n border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #1e7e34;\n border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #117a8b;\n border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n color: #212529;\n background-color: #d39e00;\n border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #bd2130;\n border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n color: #212529;\n background-color: #dae0e5;\n border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #1d2124;\n border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);\n}\n\n.btn-outline-primary {\n color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #6c757d;\n background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #28a745;\n background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #17a2b8;\n background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #ffc107;\n background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #dc3545;\n background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #f8f9fa;\n background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #343a40;\n background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n text-decoration: none;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #212529;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 768px) {\n .dropdown-menu-md-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 992px) {\n .dropdown-menu-lg-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-right {\n right: 0;\n left: auto;\n }\n}\n\n@media (min-width: 1200px) {\n .dropdown-menu-xl-left {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-right {\n right: 0;\n left: auto;\n }\n}\n\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n right: auto;\n bottom: auto;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #212529;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n color: #16181b;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #6c757d;\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: 0.25rem 1.5rem;\n color: #212529;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n margin-left: -1px;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.dropleft .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: -1px;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .form-control-plaintext,\n.input-group > .custom-select,\n.input-group > .custom-file {\n position: relative;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .form-control-plaintext + .form-control,\n.input-group > .form-control-plaintext + .custom-select,\n.input-group > .form-control-plaintext + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n margin-left: -1px;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\n z-index: 3;\n}\n\n.input-group > .custom-file .custom-file-input:focus {\n z-index: 4;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n display: flex;\n align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n position: relative;\n z-index: 2;\n}\n\n.input-group-prepend .btn:focus,\n.input-group-append .btn:focus {\n z-index: 3;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n margin-left: -1px;\n}\n\n.input-group-prepend {\n margin-right: -1px;\n}\n\n.input-group-append {\n margin-left: -1px;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #e9ecef;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group-lg > .form-control:not(textarea),\n.input-group-lg > .custom-select {\n height: calc(1.5em + 1rem + 2px);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .custom-select,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control:not(textarea),\n.input-group-sm > .custom-select {\n height: calc(1.5em + 0.5rem + 2px);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .custom-select,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.input-group-lg > .custom-select,\n.input-group-sm > .custom-select {\n padding-right: 1.75rem;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n display: inline-flex;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\n border-color: #80bdff;\n}\n\n.custom-control-input:not(:disabled):active ~ .custom-control-label::before {\n color: #fff;\n background-color: #b3d7ff;\n border-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n color: #6c757d;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #e9ecef;\n}\n\n.custom-control-label {\n position: relative;\n margin-bottom: 0;\n vertical-align: top;\n}\n\n.custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: \"\";\n background-color: #fff;\n border: #adb5bd solid 1px;\n}\n\n.custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: -1.5rem;\n display: block;\n width: 1rem;\n height: 1rem;\n content: \"\";\n background: no-repeat 50% / 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n border-color: #007bff;\n background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-switch {\n padding-left: 2.25rem;\n}\n\n.custom-switch .custom-control-label::before {\n left: -2.25rem;\n width: 1.75rem;\n pointer-events: all;\n border-radius: 0.5rem;\n}\n\n.custom-switch .custom-control-label::after {\n top: calc(0.25rem + 2px);\n left: calc(-2.25rem + 2px);\n width: calc(1rem - 4px);\n height: calc(1rem - 4px);\n background-color: #adb5bd;\n border-radius: 0.5rem;\n transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-switch .custom-control-label::after {\n transition: none;\n }\n}\n\n.custom-switch .custom-control-input:checked ~ .custom-control-label::after {\n background-color: #fff;\n transform: translateX(0.75rem);\n}\n\n.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\") no-repeat right 0.75rem center/8px 10px;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #80bdff;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none;\n}\n\n.custom-select:disabled {\n color: #6c757d;\n background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n display: none;\n}\n\n.custom-select-sm {\n height: calc(1.5em + 0.5rem + 2px);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n}\n\n.custom-select-lg {\n height: calc(1.5em + 1rem + 2px);\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin-bottom: 0;\n}\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(1.5em + 0.75rem + 2px);\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-label {\n border-color: #80bdff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input:disabled ~ .custom-file-label {\n background-color: #e9ecef;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n content: \"Browse\";\n}\n\n.custom-file-input ~ .custom-file-label[data-browse]::after {\n content: attr(data-browse);\n}\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(1.5em + 0.75rem + 2px);\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ced4da;\n border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(1.5em + 0.75rem);\n padding: 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n content: \"Browse\";\n background-color: #e9ecef;\n border-left: inherit;\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-range {\n width: 100%;\n height: calc(1rem + 0.4rem);\n padding: 0;\n background-color: transparent;\n appearance: none;\n}\n\n.custom-range:focus {\n outline: none;\n}\n\n.custom-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range:focus::-ms-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-moz-focus-outer {\n border: 0;\n}\n\n.custom-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n\n.custom-range::-webkit-slider-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-moz-range-thumb {\n transition: none;\n }\n}\n\n.custom-range::-moz-range-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: #dee2e6;\n border-color: transparent;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: 0;\n margin-right: 0.2rem;\n margin-left: 0.2rem;\n background-color: #007bff;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n appearance: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-range::-ms-thumb {\n transition: none;\n }\n}\n\n.custom-range::-ms-thumb:active {\n background-color: #b3d7ff;\n}\n\n.custom-range::-ms-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: transparent;\n border-color: transparent;\n border-width: 0.5rem;\n}\n\n.custom-range::-ms-fill-lower {\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range::-ms-fill-upper {\n margin-right: 15px;\n background-color: #dee2e6;\n border-radius: 1rem;\n}\n\n.custom-range:disabled::-webkit-slider-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-webkit-slider-runnable-track {\n cursor: default;\n}\n\n.custom-range:disabled::-moz-range-thumb {\n background-color: #adb5bd;\n}\n\n.custom-range:disabled::-moz-range-track {\n cursor: default;\n}\n\n.custom-range:disabled::-ms-thumb {\n background-color: #adb5bd;\n}\n\n.custom-control-label::before,\n.custom-file-label,\n.custom-select {\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .custom-control-label::before,\n .custom-file-label,\n .custom-select {\n transition: none;\n }\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #6c757d;\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #6c757d;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n flex-grow: 1;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-flow: row nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n flex-flow: row nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff;\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n display: flex;\n flex-direction: column;\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: flex;\n flex: 1 0 0%;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}\n\n.card-group {\n display: flex;\n flex-direction: column;\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-top,\n .card-group > .card:not(:last-child) .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) .card-img-bottom,\n .card-group > .card:not(:last-child) .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-top,\n .card-group > .card:not(:first-child) .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) .card-img-bottom,\n .card-group > .card:not(:first-child) .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.accordion > .card {\n overflow: hidden;\n}\n\n.accordion > .card:not(:first-of-type) .card-header:first-child {\n border-radius: 0;\n}\n\n.accordion > .card:not(:first-of-type):not(:last-of-type) {\n border-bottom: 0;\n border-radius: 0;\n}\n\n.accordion > .card:first-of-type {\n border-bottom: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.accordion > .card:last-of-type {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.accordion > .card .card-header {\n margin-bottom: -1px;\n}\n\n.breadcrumb {\n display: flex;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: 0.5rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n color: #6c757d;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #6c757d;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #007bff;\n background-color: #fff;\n border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n z-index: 2;\n color: #0056b3;\n text-decoration: none;\n background-color: #e9ecef;\n border-color: #dee2e6;\n}\n\n.page-link:focus {\n z-index: 2;\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 1;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n color: #6c757d;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .badge {\n transition: none;\n }\n}\n\na.badge:hover, a.badge:focus {\n text-decoration: none;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\na.badge-primary:hover, a.badge-primary:focus {\n color: #fff;\n background-color: #0062cc;\n}\n\na.badge-primary:focus, a.badge-primary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\na.badge-secondary:hover, a.badge-secondary:focus {\n color: #fff;\n background-color: #545b62;\n}\n\na.badge-secondary:focus, a.badge-secondary.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\na.badge-success:hover, a.badge-success:focus {\n color: #fff;\n background-color: #1e7e34;\n}\n\na.badge-success:focus, a.badge-success.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\na.badge-info:hover, a.badge-info:focus {\n color: #fff;\n background-color: #117a8b;\n}\n\na.badge-info:focus, a.badge-info.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\na.badge-warning:hover, a.badge-warning:focus {\n color: #212529;\n background-color: #d39e00;\n}\n\na.badge-warning:focus, a.badge-warning.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\na.badge-danger:hover, a.badge-danger:focus {\n color: #fff;\n background-color: #bd2130;\n}\n\na.badge-danger:focus, a.badge-danger.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\na.badge-light:hover, a.badge-light:focus {\n color: #212529;\n background-color: #dae0e5;\n}\n\na.badge-light:focus, a.badge-light.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\na.badge-dark:hover, a.badge-dark:focus {\n color: #fff;\n background-color: #1d2124;\n}\n\na.badge-dark:focus, a.badge-dark.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #e9ecef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n}\n\n.alert-dismissible {\n padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n color: #002752;\n}\n\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n color: #202326;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n color: #0b2e13;\n}\n\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n color: #062c33;\n}\n\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n color: #533f03;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n color: #491217;\n}\n\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n color: #686868;\n}\n\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n color: #040505;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.75rem;\n background-color: #e9ecef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n background-color: #007bff;\n transition: width 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n z-index: 1;\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n color: #212529;\n background-color: #e9ecef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #6c757d;\n pointer-events: none;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n\n.list-group-horizontal .list-group-item {\n margin-right: -1px;\n margin-bottom: 0;\n}\n\n.list-group-horizontal .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n}\n\n.list-group-horizontal .list-group-item:last-child {\n margin-right: 0;\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm .list-group-item {\n margin-right: -1px;\n margin-bottom: 0;\n }\n .list-group-horizontal-sm .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm .list-group-item:last-child {\n margin-right: 0;\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n}\n\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md .list-group-item {\n margin-right: -1px;\n margin-bottom: 0;\n }\n .list-group-horizontal-md .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md .list-group-item:last-child {\n margin-right: 0;\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n}\n\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg .list-group-item {\n margin-right: -1px;\n margin-bottom: 0;\n }\n .list-group-horizontal-lg .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg .list-group-item:last-child {\n margin-right: 0;\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl .list-group-item {\n margin-right: -1px;\n margin-bottom: 0;\n }\n .list-group-horizontal-xl .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl .list-group-item:last-child {\n margin-right: 0;\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0;\n }\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush .list-group-item:last-child {\n margin-bottom: -1px;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n margin-bottom: 0;\n border-bottom: 0;\n}\n\n.list-group-item-primary {\n color: #004085;\n background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004085;\n background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004085;\n border-color: #004085;\n}\n\n.list-group-item-secondary {\n color: #383d41;\n background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #383d41;\n background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #383d41;\n border-color: #383d41;\n}\n\n.list-group-item-success {\n color: #155724;\n background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #155724;\n background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #155724;\n border-color: #155724;\n}\n\n.list-group-item-info {\n color: #0c5460;\n background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #0c5460;\n background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #0c5460;\n border-color: #0c5460;\n}\n\n.list-group-item-warning {\n color: #856404;\n background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #856404;\n background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #856404;\n border-color: #856404;\n}\n\n.list-group-item-danger {\n color: #721c24;\n background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #721c24;\n background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #721c24;\n border-color: #721c24;\n}\n\n.list-group-item-light {\n color: #818182;\n background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #818182;\n background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #818182;\n border-color: #818182;\n}\n\n.list-group-item-dark {\n color: #1b1e21;\n background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #1b1e21;\n background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #1b1e21;\n border-color: #1b1e21;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:hover {\n color: #000;\n text-decoration: none;\n}\n\n.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n appearance: none;\n}\n\na.close.disabled {\n pointer-events: none;\n}\n\n.toast {\n max-width: 350px;\n overflow: hidden;\n font-size: 0.875rem;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n backdrop-filter: blur(10px);\n opacity: 0;\n border-radius: 0.25rem;\n}\n\n.toast:not(:last-child) {\n margin-bottom: 0.75rem;\n}\n\n.toast.showing {\n opacity: 1;\n}\n\n.toast.show {\n display: block;\n opacity: 1;\n}\n\n.toast.hide {\n display: none;\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: 0.25rem 0.75rem;\n color: #6c757d;\n background-color: rgba(255, 255, 255, 0.85);\n background-clip: padding-box;\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n}\n\n.toast-body {\n padding: 0.75rem;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1050;\n display: none;\n width: 100%;\n height: 100%;\n overflow: hidden;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -50px);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n\n.modal.show .modal-dialog {\n transform: none;\n}\n\n.modal-dialog-scrollable {\n display: flex;\n max-height: calc(100% - 1rem);\n}\n\n.modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 1rem);\n overflow: hidden;\n}\n\n.modal-dialog-scrollable .modal-header,\n.modal-dialog-scrollable .modal-footer {\n flex-shrink: 0;\n}\n\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - 1rem);\n}\n\n.modal-dialog-centered::before {\n display: block;\n height: calc(100vh - 1rem);\n content: \"\";\n}\n\n.modal-dialog-centered.modal-dialog-scrollable {\n flex-direction: column;\n justify-content: center;\n height: 100%;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable .modal-content {\n max-height: none;\n}\n\n.modal-dialog-centered.modal-dialog-scrollable::before {\n content: none;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 1rem 1rem;\n border-bottom: 1px solid #dee2e6;\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n padding: 1rem 1rem;\n margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 1rem;\n}\n\n.modal-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #dee2e6;\n border-bottom-right-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto;\n }\n .modal-dialog-scrollable {\n max-height: calc(100% - 3.5rem);\n }\n .modal-dialog-scrollable .modal-content {\n max-height: calc(100vh - 3.5rem);\n }\n .modal-dialog-centered {\n min-height: calc(100% - 3.5rem);\n }\n .modal-dialog-centered::before {\n height: calc(100vh - 3.5rem);\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n max-width: 800px;\n }\n}\n\n@media (min-width: 1200px) {\n .modal-xl {\n max-width: 1140px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n margin-bottom: 0.5rem;\n}\n\n.bs-popover-top > .arrow, .bs-popover-auto[x-placement^=\"top\"] > .arrow {\n bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^=\"top\"] > .arrow::before {\n bottom: 0;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^=\"top\"] > .arrow::after {\n bottom: 1px;\n border-width: 0.5rem 0.5rem 0;\n border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n margin-left: 0.5rem;\n}\n\n.bs-popover-right > .arrow, .bs-popover-auto[x-placement^=\"right\"] > .arrow {\n left: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^=\"right\"] > .arrow::before {\n left: 0;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^=\"right\"] > .arrow::after {\n left: 1px;\n border-width: 0.5rem 0.5rem 0.5rem 0;\n border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n margin-top: 0.5rem;\n}\n\n.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow {\n top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::before {\n top: 0;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::after {\n top: 1px;\n border-width: 0 0.5rem 0.5rem 0.5rem;\n border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n margin-right: 0.5rem;\n}\n\n.bs-popover-left > .arrow, .bs-popover-auto[x-placement^=\"left\"] > .arrow {\n right: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0.3rem 0;\n}\n\n.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^=\"left\"] > .arrow::before {\n right: 0;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^=\"left\"] > .arrow::after {\n right: 1px;\n border-width: 0.5rem 0 0.5rem 0.5rem;\n border-left-color: #fff;\n}\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 1rem;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #212529;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-left),\n.active.carousel-item-right {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-right),\n.active.carousel-item-left {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n z-index: 1;\n opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n z-index: 0;\n opacity: 0;\n transition: 0s 0.6s opacity;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-left,\n .carousel-fade .active.carousel-item-right {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: no-repeat 50% / 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #fff;\n background-clip: padding-box;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: .5;\n transition: opacity 0.6s ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators li {\n transition: none;\n }\n}\n\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg);\n }\n}\n\n.spinner-border {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n border: 0.25em solid currentColor;\n border-right-color: transparent;\n border-radius: 50%;\n animation: spinner-border .75s linear infinite;\n}\n\n.spinner-border-sm {\n width: 1rem;\n height: 1rem;\n border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n }\n}\n\n.spinner-grow {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n vertical-align: text-bottom;\n background-color: currentColor;\n border-radius: 50%;\n opacity: 0;\n animation: spinner-grow .75s linear infinite;\n}\n\n.spinner-grow-sm {\n width: 1rem;\n height: 1rem;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}\n\n.border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded-sm {\n border-radius: 0.2rem !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-lg {\n border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: 50rem !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n@supports (position: sticky) {\n .sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n}\n\n.shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n pointer-events: auto;\n content: \"\";\n background-color: rgba(0, 0, 0, 0);\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-n1 {\n margin: -0.25rem !important;\n}\n\n.mt-n1,\n.my-n1 {\n margin-top: -0.25rem !important;\n}\n\n.mr-n1,\n.mx-n1 {\n margin-right: -0.25rem !important;\n}\n\n.mb-n1,\n.my-n1 {\n margin-bottom: -0.25rem !important;\n}\n\n.ml-n1,\n.mx-n1 {\n margin-left: -0.25rem !important;\n}\n\n.m-n2 {\n margin: -0.5rem !important;\n}\n\n.mt-n2,\n.my-n2 {\n margin-top: -0.5rem !important;\n}\n\n.mr-n2,\n.mx-n2 {\n margin-right: -0.5rem !important;\n}\n\n.mb-n2,\n.my-n2 {\n margin-bottom: -0.5rem !important;\n}\n\n.ml-n2,\n.mx-n2 {\n margin-left: -0.5rem !important;\n}\n\n.m-n3 {\n margin: -1rem !important;\n}\n\n.mt-n3,\n.my-n3 {\n margin-top: -1rem !important;\n}\n\n.mr-n3,\n.mx-n3 {\n margin-right: -1rem !important;\n}\n\n.mb-n3,\n.my-n3 {\n margin-bottom: -1rem !important;\n}\n\n.ml-n3,\n.mx-n3 {\n margin-left: -1rem !important;\n}\n\n.m-n4 {\n margin: -1.5rem !important;\n}\n\n.mt-n4,\n.my-n4 {\n margin-top: -1.5rem !important;\n}\n\n.mr-n4,\n.mx-n4 {\n margin-right: -1.5rem !important;\n}\n\n.mb-n4,\n.my-n4 {\n margin-bottom: -1.5rem !important;\n}\n\n.ml-n4,\n.mx-n4 {\n margin-left: -1.5rem !important;\n}\n\n.m-n5 {\n margin: -3rem !important;\n}\n\n.mt-n5,\n.my-n5 {\n margin-top: -3rem !important;\n}\n\n.mr-n5,\n.mx-n5 {\n margin-right: -3rem !important;\n}\n\n.mb-n5,\n.my-n5 {\n margin-bottom: -3rem !important;\n}\n\n.ml-n5,\n.mx-n5 {\n margin-left: -3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important;\n }\n .m-sm-n1 {\n margin: -0.25rem !important;\n }\n .mt-sm-n1,\n .my-sm-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-sm-n1,\n .mx-sm-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-sm-n1,\n .my-sm-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-sm-n1,\n .mx-sm-n1 {\n margin-left: -0.25rem !important;\n }\n .m-sm-n2 {\n margin: -0.5rem !important;\n }\n .mt-sm-n2,\n .my-sm-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-sm-n2,\n .mx-sm-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-sm-n2,\n .my-sm-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-sm-n2,\n .mx-sm-n2 {\n margin-left: -0.5rem !important;\n }\n .m-sm-n3 {\n margin: -1rem !important;\n }\n .mt-sm-n3,\n .my-sm-n3 {\n margin-top: -1rem !important;\n }\n .mr-sm-n3,\n .mx-sm-n3 {\n margin-right: -1rem !important;\n }\n .mb-sm-n3,\n .my-sm-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-sm-n3,\n .mx-sm-n3 {\n margin-left: -1rem !important;\n }\n .m-sm-n4 {\n margin: -1.5rem !important;\n }\n .mt-sm-n4,\n .my-sm-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-sm-n4,\n .mx-sm-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-sm-n4,\n .my-sm-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-sm-n4,\n .mx-sm-n4 {\n margin-left: -1.5rem !important;\n }\n .m-sm-n5 {\n margin: -3rem !important;\n }\n .mt-sm-n5,\n .my-sm-n5 {\n margin-top: -3rem !important;\n }\n .mr-sm-n5,\n .mx-sm-n5 {\n margin-right: -3rem !important;\n }\n .mb-sm-n5,\n .my-sm-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-sm-n5,\n .mx-sm-n5 {\n margin-left: -3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important;\n }\n .m-md-n1 {\n margin: -0.25rem !important;\n }\n .mt-md-n1,\n .my-md-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-md-n1,\n .mx-md-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-md-n1,\n .my-md-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-md-n1,\n .mx-md-n1 {\n margin-left: -0.25rem !important;\n }\n .m-md-n2 {\n margin: -0.5rem !important;\n }\n .mt-md-n2,\n .my-md-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-md-n2,\n .mx-md-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-md-n2,\n .my-md-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-md-n2,\n .mx-md-n2 {\n margin-left: -0.5rem !important;\n }\n .m-md-n3 {\n margin: -1rem !important;\n }\n .mt-md-n3,\n .my-md-n3 {\n margin-top: -1rem !important;\n }\n .mr-md-n3,\n .mx-md-n3 {\n margin-right: -1rem !important;\n }\n .mb-md-n3,\n .my-md-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-md-n3,\n .mx-md-n3 {\n margin-left: -1rem !important;\n }\n .m-md-n4 {\n margin: -1.5rem !important;\n }\n .mt-md-n4,\n .my-md-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-md-n4,\n .mx-md-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-md-n4,\n .my-md-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-md-n4,\n .mx-md-n4 {\n margin-left: -1.5rem !important;\n }\n .m-md-n5 {\n margin: -3rem !important;\n }\n .mt-md-n5,\n .my-md-n5 {\n margin-top: -3rem !important;\n }\n .mr-md-n5,\n .mx-md-n5 {\n margin-right: -3rem !important;\n }\n .mb-md-n5,\n .my-md-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-md-n5,\n .mx-md-n5 {\n margin-left: -3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important;\n }\n .m-lg-n1 {\n margin: -0.25rem !important;\n }\n .mt-lg-n1,\n .my-lg-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-lg-n1,\n .mx-lg-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-lg-n1,\n .my-lg-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-lg-n1,\n .mx-lg-n1 {\n margin-left: -0.25rem !important;\n }\n .m-lg-n2 {\n margin: -0.5rem !important;\n }\n .mt-lg-n2,\n .my-lg-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-lg-n2,\n .mx-lg-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-lg-n2,\n .my-lg-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-lg-n2,\n .mx-lg-n2 {\n margin-left: -0.5rem !important;\n }\n .m-lg-n3 {\n margin: -1rem !important;\n }\n .mt-lg-n3,\n .my-lg-n3 {\n margin-top: -1rem !important;\n }\n .mr-lg-n3,\n .mx-lg-n3 {\n margin-right: -1rem !important;\n }\n .mb-lg-n3,\n .my-lg-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-lg-n3,\n .mx-lg-n3 {\n margin-left: -1rem !important;\n }\n .m-lg-n4 {\n margin: -1.5rem !important;\n }\n .mt-lg-n4,\n .my-lg-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-lg-n4,\n .mx-lg-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-lg-n4,\n .my-lg-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-lg-n4,\n .mx-lg-n4 {\n margin-left: -1.5rem !important;\n }\n .m-lg-n5 {\n margin: -3rem !important;\n }\n .mt-lg-n5,\n .my-lg-n5 {\n margin-top: -3rem !important;\n }\n .mr-lg-n5,\n .mx-lg-n5 {\n margin-right: -3rem !important;\n }\n .mb-lg-n5,\n .my-lg-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-lg-n5,\n .mx-lg-n5 {\n margin-left: -3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important;\n }\n .m-xl-n1 {\n margin: -0.25rem !important;\n }\n .mt-xl-n1,\n .my-xl-n1 {\n margin-top: -0.25rem !important;\n }\n .mr-xl-n1,\n .mx-xl-n1 {\n margin-right: -0.25rem !important;\n }\n .mb-xl-n1,\n .my-xl-n1 {\n margin-bottom: -0.25rem !important;\n }\n .ml-xl-n1,\n .mx-xl-n1 {\n margin-left: -0.25rem !important;\n }\n .m-xl-n2 {\n margin: -0.5rem !important;\n }\n .mt-xl-n2,\n .my-xl-n2 {\n margin-top: -0.5rem !important;\n }\n .mr-xl-n2,\n .mx-xl-n2 {\n margin-right: -0.5rem !important;\n }\n .mb-xl-n2,\n .my-xl-n2 {\n margin-bottom: -0.5rem !important;\n }\n .ml-xl-n2,\n .mx-xl-n2 {\n margin-left: -0.5rem !important;\n }\n .m-xl-n3 {\n margin: -1rem !important;\n }\n .mt-xl-n3,\n .my-xl-n3 {\n margin-top: -1rem !important;\n }\n .mr-xl-n3,\n .mx-xl-n3 {\n margin-right: -1rem !important;\n }\n .mb-xl-n3,\n .my-xl-n3 {\n margin-bottom: -1rem !important;\n }\n .ml-xl-n3,\n .mx-xl-n3 {\n margin-left: -1rem !important;\n }\n .m-xl-n4 {\n margin: -1.5rem !important;\n }\n .mt-xl-n4,\n .my-xl-n4 {\n margin-top: -1.5rem !important;\n }\n .mr-xl-n4,\n .mx-xl-n4 {\n margin-right: -1.5rem !important;\n }\n .mb-xl-n4,\n .my-xl-n4 {\n margin-bottom: -1.5rem !important;\n }\n .ml-xl-n4,\n .mx-xl-n4 {\n margin-left: -1.5rem !important;\n }\n .m-xl-n5 {\n margin: -3rem !important;\n }\n .mt-xl-n5,\n .my-xl-n5 {\n margin-top: -3rem !important;\n }\n .mr-xl-n5,\n .mx-xl-n5 {\n margin-right: -3rem !important;\n }\n .mb-xl-n5,\n .my-xl-n5 {\n margin-bottom: -3rem !important;\n }\n .ml-xl-n5,\n .mx-xl-n5 {\n margin-left: -3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important;\n }\n}\n\n.text-monospace {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important;\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-lighter {\n font-weight: lighter !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-weight-bolder {\n font-weight: bolder !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0056b3 !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #494f54 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #19692c !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #0f6674 !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #ba8b00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #a71d2a !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #cbd3da !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #121416 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-break {\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n}\n\n.text-reset {\n color: inherit !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a:not(.btn) {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #adb5bd;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n @page {\n size: a3;\n }\n body {\n min-width: 992px !important;\n }\n .container {\n min-width: 992px !important;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #dee2e6 !important;\n }\n .table-dark {\n color: inherit;\n }\n .table-dark th,\n .table-dark td,\n .table-dark thead th,\n .table-dark tbody + tbody {\n border-color: #dee2e6;\n }\n .table .thead-dark th {\n color: inherit;\n border-color: #dee2e6;\n }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */","// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Originally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n","// stylelint-disable declaration-no-important, selector-list-comma-newline-after\n\n//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1, .h1 { @include font-size($h1-font-size); }\nh2, .h2 { @include font-size($h2-font-size); }\nh3, .h3 { @include font-size($h3-font-size); }\nh4, .h4 { @include font-size($h4-font-size); }\nh5, .h5 { @include font-size($h5-font-size); }\nh6, .h6 { @include font-size($h6-font-size); }\n\n.lead {\n @include font-size($lead-font-size);\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n @include font-size($display1-size);\n font-weight: $display1-weight;\n line-height: $display-line-height;\n}\n.display-2 {\n @include font-size($display2-size);\n font-weight: $display2-weight;\n line-height: $display-line-height;\n}\n.display-3 {\n @include font-size($display3-size);\n font-weight: $display3-weight;\n line-height: $display-line-height;\n}\n.display-4 {\n @include font-size($display4-size);\n font-weight: $display4-weight;\n line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n margin-top: $hr-margin-y;\n margin-bottom: $hr-margin-y;\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n @include font-size($small-font-size);\n font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled;\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n @include font-size(90%);\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $spacer;\n @include font-size($blockquote-font-size);\n}\n\n.blockquote-footer {\n display: block;\n @include font-size($blockquote-small-font-size);\n color: $blockquote-small-color;\n\n &::before {\n content: \"\\2014\\00A0\"; // em dash, nbsp\n }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all ``s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid;\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid;\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: $spacer / 2;\n line-height: 1;\n}\n\n.figure-caption {\n @include font-size($figure-caption-font-size);\n color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n background-image: url($file-1x);\n\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n // but doesn't convert dppx=>dpi.\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n only screen and (min-resolution: 2dppx) { // Standardized\n background-image: url($file-2x);\n background-size: $width-1x $height-1x;\n }\n @include deprecate(\"`img-retina()`\", \"v4.3.0\", \"v5\");\n}\n","// stylelint-disable property-blacklist\n// Single side border-radius\n\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: $radius;\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n border-bottom-left-radius: $radius;\n }\n}\n\n@mixin border-top-left-radius($radius) {\n @if $enable-rounded {\n border-top-left-radius: $radius;\n }\n}\n\n@mixin border-top-right-radius($radius) {\n @if $enable-rounded {\n border-top-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-right-radius($radius) {\n @if $enable-rounded {\n border-bottom-right-radius: $radius;\n }\n}\n\n@mixin border-bottom-left-radius($radius) {\n @if $enable-rounded {\n border-bottom-left-radius: $radius;\n }\n}\n","// Inline code\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-break: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n @include box-shadow($kbd-box-shadow);\n\n kbd {\n padding: 0;\n @include font-size(100%);\n font-weight: $nested-kbd-font-weight;\n @include box-shadow(none);\n }\n}\n\n// Blocks of code\npre {\n display: block;\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: $pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n .container {\n @include make-container();\n @include make-container-max-widths();\n }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n .container-fluid {\n @include make-container();\n }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n }\n\n // Remove the negative margin from default .row, then the horizontal padding\n // from all immediate children columns (to prevent runaway style inheritance).\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n > .col,\n > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container($gutter: $grid-gutter-width) {\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n margin-right: auto;\n margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n @each $breakpoint, $container-max-width in $max-widths {\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n max-width: $container-max-width;\n }\n }\n}\n\n@mixin make-row($gutter: $grid-gutter-width) {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter / 2;\n margin-left: -$gutter / 2;\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n position: relative;\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we use `flex` values\n // later on to override this initial width.\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 percentage($size / $columns);\n // Add a `max-width` to ensure content within each column does not blow out\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n // do not appear to require this.\n max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $next: breakpoint-next($name, $breakpoints);\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $max: breakpoint-max($name, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($name, $breakpoints) {\n @content;\n }\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n // Common properties for all breakpoints\n %grid-column {\n position: relative;\n width: 100%;\n padding-right: $gutter / 2;\n padding-left: $gutter / 2;\n }\n\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n // Allow columns to stretch full width below their breakpoints\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @extend %grid-column;\n }\n }\n .col#{$infix},\n .col#{$infix}-auto {\n @extend %grid-column;\n }\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col#{$infix}-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%; // Reset earlier grid tiers\n }\n\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n .order#{$infix}-first { order: -1; }\n\n .order#{$infix}-last { order: $columns + 1; }\n\n @for $i from 0 through $columns {\n .order#{$infix}-#{$i} { order: $i; }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n width: 100%;\n margin-bottom: $spacer;\n color: $table-color;\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n th,\n td {\n padding: $table-cell-padding;\n vertical-align: top;\n border-top: $table-border-width solid $table-border-color;\n }\n\n thead th {\n vertical-align: bottom;\n border-bottom: (2 * $table-border-width) solid $table-border-color;\n }\n\n tbody + tbody {\n border-top: (2 * $table-border-width) solid $table-border-color;\n }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n th,\n td {\n padding: $table-cell-padding-sm;\n }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n\n.table-bordered {\n border: $table-border-width solid $table-border-color;\n\n th,\n td {\n border: $table-border-width solid $table-border-color;\n }\n\n thead {\n th,\n td {\n border-bottom-width: 2 * $table-border-width;\n }\n }\n}\n\n.table-borderless {\n th,\n td,\n thead th,\n tbody + tbody {\n border: 0;\n }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n tbody tr:nth-of-type(#{$table-striped-order}) {\n background-color: $table-accent-bg;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n tbody tr {\n @include hover {\n color: $table-hover-color;\n background-color: $table-hover-bg;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n@each $color, $value in $theme-colors {\n @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Dark styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.table {\n .thead-dark {\n th {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n border-color: $table-dark-border-color;\n }\n }\n\n .thead-light {\n th {\n color: $table-head-color;\n background-color: $table-head-bg;\n border-color: $table-border-color;\n }\n }\n}\n\n.table-dark {\n color: $table-dark-color;\n background-color: $table-dark-bg;\n\n th,\n td,\n thead th {\n border-color: $table-dark-border-color;\n }\n\n &.table-bordered {\n border: 0;\n }\n\n &.table-striped {\n tbody tr:nth-of-type(odd) {\n background-color: $table-dark-accent-bg;\n }\n }\n\n &.table-hover {\n tbody tr {\n @include hover {\n color: $table-dark-hover-color;\n background-color: $table-dark-hover-bg;\n }\n }\n }\n}\n\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n.table-responsive {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\n $infix: breakpoint-infix($next, $grid-breakpoints);\n\n &#{$infix} {\n @include media-breakpoint-down($breakpoint) {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n\n // Prevent double border on horizontal scroll due to use of `display: block;`\n > .table-bordered {\n border: 0;\n }\n }\n }\n }\n}\n","// Tables\n\n@mixin table-row-variant($state, $background, $border: null) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table-#{$state} {\n &,\n > th,\n > td {\n background-color: $background;\n }\n\n @if $border != null {\n th,\n td,\n thead th,\n tbody + tbody {\n border-color: $border;\n }\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover {\n $hover-background: darken($background, 5%);\n\n .table-#{$state} {\n @include hover {\n background-color: $hover-background;\n\n > td,\n > th {\n background-color: $hover-background;\n }\n }\n }\n }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Textual form controls\n//\n\n.form-control {\n display: block;\n width: 100%;\n height: $input-height;\n padding: $input-padding-y $input-padding-x;\n font-family: $input-font-family;\n @include font-size($input-font-size);\n font-weight: $input-font-weight;\n line-height: $input-line-height;\n color: $input-color;\n background-color: $input-bg;\n background-clip: padding-box;\n border: $input-border-width solid $input-border-color;\n\n // Note: This has no effect on `s in CSS.\n @include border-radius($input-border-radius, 0);\n\n @include box-shadow($input-box-shadow);\n @include transition($input-transition);\n\n // Unstyle the caret on ` receives focus\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n // match the appearance of the native widget.\n // See https://github.com/twbs/bootstrap/issues/19398.\n color: $input-color;\n background-color: $input-bg;\n }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n padding-top: calc(#{$input-padding-y} + #{$input-border-width});\n padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});\n margin-bottom: 0; // Override the `
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor index 6e23b030ce..d65eae16bc 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor @@ -1,5 +1,4 @@ @using System.Net.Http -@using System.Net.Http.Json @using Microsoft.AspNetCore.Components.Authorization @using Microsoft.AspNetCore.Components.Forms @using Microsoft.AspNetCore.Components.Routing From 4e9bff2934c47c45707d0cc1fb16caca3ab41c24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 26 Aug 2020 09:51:31 +0300 Subject: [PATCH 050/474] Change Volo.Abp.AspNetCore.Mvc.Contracts to .netstandard2.0 --- .../Volo.Abp.AspNetCore.Mvc.Contracts.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo.Abp.AspNetCore.Mvc.Contracts.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo.Abp.AspNetCore.Mvc.Contracts.csproj index a979cfa637..04b2e7ec59 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo.Abp.AspNetCore.Mvc.Contracts.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo.Abp.AspNetCore.Mvc.Contracts.csproj @@ -4,7 +4,7 @@ - netcoreapp3.1 + netstandard2.0 Volo.Abp.AspNetCore.Mvc.Contracts Volo.Abp.AspNetCore.Mvc.Contracts $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; From 160b9dfce1c5ca8f2905b0676c3963b017fd3caf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 26 Aug 2020 09:59:30 +0300 Subject: [PATCH 051/474] Create UserManagement.razor --- .../MyCompanyName.MyProjectName.sln | 2 +- .../Pages/Index.razor | 26 ---------------- .../Pages/UserManagement.razor | 30 +++++++++++++++++++ .../Shared/NavMenu.razor | 5 ++++ 4 files changed, 36 insertions(+), 27 deletions(-) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor diff --git a/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln b/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln index fdc2a82e65..d8b8d51d8a 100644 --- a/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln +++ b/templates/app/aspnet-core/MyCompanyName.MyProjectName.sln @@ -51,7 +51,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.HttpApi.HostWithIds", "src\MyCompanyName.MyProjectName.HttpApi.HostWithIds\MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj", "{748584B1-BA69-4F6A-81AA-F4BDE6BCE29D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyProjectName.Blazor", "src\MyCompanyName.MyProjectName.Blazor\MyCompanyName.MyProjectName.Blazor.csproj", "{27B2DDC7-8B75-4322-A312-25419C15D9D8}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Blazor", "src\MyCompanyName.MyProjectName.Blazor\MyCompanyName.MyProjectName.Blazor.csproj", "{27B2DDC7-8B75-4322-A312-25419C15D9D8}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor index 46308cfa29..2a4ab56ef2 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor @@ -1,7 +1,6 @@ @page "/" @using Volo.Abp.Identity @inject IProfileAppService ProfileAppService -@inject IIdentityUserAppService UserAppService

Profile Application Service Test

@@ -9,21 +8,6 @@ -

User Application Service Test

- - - -@if (_users != null) -{ -
    - @foreach (var user in _users) - { -
  • @user.UserName / @user.Email
  • - } -
-

Total user count: @_totalUserCount

-} - @code { private string _userName = "?"; @@ -34,14 +18,4 @@ _userName = (await ProfileAppService.GetAsync()).UserName; } - - private long _totalUserCount = 0; - private IReadOnlyList _users; - - private async Task GetUsersAsync() - { - var result = await UserAppService.GetListAsync(new GetIdentityUsersInput()); - _totalUserCount = result.TotalCount; - _users = result.Items; - } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor new file mode 100644 index 0000000000..ef88f62e3c --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor @@ -0,0 +1,30 @@ +@page "/user-management" +@using Volo.Abp.Identity +@inject IIdentityUserAppService UserAppService + +

UserManagement

+ + + +@if (_users != null) +{ +
    + @foreach (var user in _users) + { +
  • @user.UserName / @user.Email
  • + } +
+

Total user count: @_totalUserCount

+} + +@code { + private long _totalUserCount = 0; + private IReadOnlyList _users; + + private async Task GetUsersAsync() + { + var result = await UserAppService.GetListAsync(new GetIdentityUsersInput()); + _totalUserCount = result.TotalCount; + _users = result.Items; + } +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor index 5357fc0143..aad8473c73 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor @@ -12,6 +12,11 @@ Home + From ee842252606dcf6778c13432d59331fce5d1db89 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Wed, 26 Aug 2020 15:10:05 +0800 Subject: [PATCH 053/474] Fix unit test. --- .../Volo/Abp/FeatureManagement/FeatureAppService.cs | 7 +++---- .../Volo/Abp/FeatureManagement/FeatureManager.cs | 8 +++----- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs index 8fc761a632..c63336ded1 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs @@ -33,8 +33,7 @@ namespace Volo.Abp.FeatureManagement foreach (var featureDefinition in featureDefinitions) { - var value = await FeatureManager.GetOrNullWithProviderAsync(featureDefinition.Name, providerName, - providerKey); + var feature = await FeatureManager.GetOrNullWithProviderAsync(featureDefinition.Name, providerName, providerKey); features.Add(new FeatureDto { Name = featureDefinition.Name, @@ -42,8 +41,8 @@ namespace Volo.Abp.FeatureManagement ValueType = featureDefinition.ValueType, Description = featureDefinition.Description?.Localize(StringLocalizerFactory), ParentName = featureDefinition.Parent?.Name, - Value = value.Value, - ProviderName = value.Provider.Name + Value = feature.Value, + ProviderName = feature.Provider?.Name }); } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs index 5ff7c18407..c708743b93 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs @@ -184,7 +184,7 @@ namespace Volo.Abp.FeatureManagement providers = providers.SkipWhile(c => c.Name != providerName); } - FeatureNameValueWithGrantedProvider featureNameValueWithGrantedProvider = null; + var featureNameValueWithGrantedProvider = new FeatureNameValueWithGrantedProvider(name, null); foreach (var provider in providers) { string pk = null; @@ -196,10 +196,8 @@ namespace Volo.Abp.FeatureManagement var value = await provider.GetOrNullAsync(feature, pk); if (value != null) { - featureNameValueWithGrantedProvider = new FeatureNameValueWithGrantedProvider(name, value) - { - Provider = new FeatureValueProviderInfo(provider.Name, pk) - }; + featureNameValueWithGrantedProvider.Value = value; + featureNameValueWithGrantedProvider.Provider = new FeatureValueProviderInfo(provider.Name, pk); break; } } From 8f77c1e21c5f9972fa9b3533419c4afaa7e9ef2e Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Wed, 26 Aug 2020 15:22:24 +0800 Subject: [PATCH 054/474] Refactor GetAllWithProviderAsync method. --- .../Abp/FeatureManagement/FeatureManager.cs | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs index c708743b93..454ade5476 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs @@ -89,28 +89,27 @@ namespace Volo.Abp.FeatureManagement foreach (var feature in featureDefinitions) { - FeatureNameValueWithGrantedProvider value = null; - + var featureNameValueWithGrantedProvider = new FeatureNameValueWithGrantedProvider(feature.Name, null); foreach (var provider in providerList) { - var pk = provider.Name == providerName ? providerKey : null; - var providerValue = await provider.GetOrNullAsync( - feature, - pk - ); + string pk = null; + if (provider.Compatible(providerName)) + { + pk = providerKey; + } - if (providerValue != null) + var value = await provider.GetOrNullAsync(feature, pk); + if (value != null) { - value = new FeatureNameValueWithGrantedProvider(feature.Name, providerValue) - { - Provider = new FeatureValueProviderInfo(provider.Name, pk) - }; + featureNameValueWithGrantedProvider.Value = value; + featureNameValueWithGrantedProvider.Provider = new FeatureValueProviderInfo(provider.Name, pk); + break; } } - if (value != null) + if (featureNameValueWithGrantedProvider.Value != null) { - featureValues[feature.Name] = value; + featureValues[feature.Name] = featureNameValueWithGrantedProvider; } } From bde9bae9f0ebea467a84be7c49dbf9c40d928f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 26 Aug 2020 10:22:47 +0300 Subject: [PATCH 055/474] Update RoleManagement.razor --- .../Pages/RoleManagement.razor | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index 7b83c21d5d..c315fd3a55 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -7,27 +7,48 @@

Role Management

- - @if (_roles != null) {
    - @foreach (var role in _roles) + @foreach (var role in _roles.Items) { -
  • @role.Id / @role.Name
  • +
  • @role.Id / @role.Name ()
  • }
-

Total role count: @_totalRoleCount

+

Total role count: @_roles.TotalCount

} +

Create New Role

+ + + + + @code { - private long _totalRoleCount = 0; - private IReadOnlyList _roles; + private IdentityRoleCreateDto _newRole = new IdentityRoleCreateDto(); + + PagedResultDto _roles; + + protected override async Task OnInitializedAsync() + { + await GetRolesAsync(); + } private async Task GetRolesAsync() { - var result = await RoleAppService.GetListAsync(new PagedAndSortedResultRequestDto()); - _totalRoleCount = result.TotalCount; - _roles = result.Items; + _roles = await RoleAppService.GetListAsync(new PagedAndSortedResultRequestDto()); + } + + private async Task CreateRoleAsync() + { + await RoleAppService.CreateAsync(_newRole); + _newRole = new IdentityRoleCreateDto(); + await GetRolesAsync(); + } + + private async Task DeleteRoleAsync(Guid id) + { + await RoleAppService.DeleteAsync(id); + await GetRolesAsync(); } } \ No newline at end of file From 94b8888816b6f53e8b56aad3623246b65827b97c Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Wed, 26 Aug 2020 15:34:29 +0800 Subject: [PATCH 056/474] Add some extension methods. --- .../DefaultValueFeatureManagerExtensions.cs | 12 +++++++++++- .../EditionFeatureManagerExtensions.cs | 12 +++++++++++- .../TenantFeatureManagerExtensions.cs | 10 ++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/DefaultValueFeatureManagerExtensions.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/DefaultValueFeatureManagerExtensions.cs index c000b66df3..7ff616fccf 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/DefaultValueFeatureManagerExtensions.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/DefaultValueFeatureManagerExtensions.cs @@ -16,5 +16,15 @@ namespace Volo.Abp.FeatureManagement { return featureManager.GetAllAsync(DefaultValueFeatureValueProvider.ProviderName, null, fallback); } + + public static Task GetOrNullWithProviderAsync(this IFeatureManager featureManager, [NotNull] string name, bool fallback = true) + { + return featureManager.GetOrNullWithProviderAsync(name, DefaultValueFeatureValueProvider.ProviderName, null, fallback); + } + + public static Task> GetAllWithProviderAsync(this IFeatureManager featureManager, bool fallback = true) + { + return featureManager.GetAllWithProviderAsync(DefaultValueFeatureValueProvider.ProviderName, null, fallback); + } } -} \ No newline at end of file +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/EditionFeatureManagerExtensions.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/EditionFeatureManagerExtensions.cs index be8bbfc95a..2b26ec94e1 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/EditionFeatureManagerExtensions.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/EditionFeatureManagerExtensions.cs @@ -18,9 +18,19 @@ namespace Volo.Abp.FeatureManagement return featureManager.GetAllAsync(EditionFeatureValueProvider.ProviderName, editionId.ToString(), fallback); } + public static Task GetOrNullWithProviderForEditionAsync(this IFeatureManager featureManager, [NotNull] string name, Guid editionId, bool fallback = true) + { + return featureManager.GetOrNullWithProviderAsync(name, EditionFeatureValueProvider.ProviderName, editionId.ToString(), fallback); + } + + public static Task> GetAllWithProviderForEditionAsync(this IFeatureManager featureManager, Guid editionId, bool fallback = true) + { + return featureManager.GetAllWithProviderAsync(EditionFeatureValueProvider.ProviderName, editionId.ToString(), fallback); + } + public static Task SetForEditionAsync(this IFeatureManager featureManager, Guid editionId, [NotNull] string name, [CanBeNull] string value, bool forceToSet = false) { return featureManager.SetAsync(name, value, EditionFeatureValueProvider.ProviderName, editionId.ToString(), forceToSet); } } -} \ No newline at end of file +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/TenantFeatureManagerExtensions.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/TenantFeatureManagerExtensions.cs index 972c8f7d53..97a148d959 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/TenantFeatureManagerExtensions.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/TenantFeatureManagerExtensions.cs @@ -18,6 +18,16 @@ namespace Volo.Abp.FeatureManagement return featureManager.GetAllAsync(TenantFeatureValueProvider.ProviderName, tenantId.ToString(), fallback); } + public static Task GetOrNullWithProviderForTenantAsync(this IFeatureManager featureManager, [NotNull] string name, Guid tenantId, bool fallback = true) + { + return featureManager.GetOrNullWithProviderAsync(name, TenantFeatureValueProvider.ProviderName, tenantId.ToString(), fallback); + } + + public static Task> GetAllWithProviderForTenantAsync(this IFeatureManager featureManager, Guid tenantId, bool fallback = true) + { + return featureManager.GetAllWithProviderAsync(TenantFeatureValueProvider.ProviderName, tenantId.ToString(), fallback); + } + public static Task SetForTenantAsync(this IFeatureManager featureManager, Guid tenantId, [NotNull] string name, [CanBeNull] string value, bool forceToSet = false) { return featureManager.SetAsync(name, value, TenantFeatureValueProvider.ProviderName, tenantId.ToString(), forceToSet); From 1fcc6b5c95b1d46ec9e0abe9be7f71b551239d0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 26 Aug 2020 10:35:18 +0300 Subject: [PATCH 057/474] Add authorization on the view. --- .../Pages/RoleManagement.razor | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index c315fd3a55..ff4c9d37dd 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -12,7 +12,12 @@
    @foreach (var role in _roles.Items) { -
  • @role.Id / @role.Name ()
  • +
  • + @role.Id / @role.Name + + () + +
  • }

Total role count: @_roles.TotalCount

From e8504af0f9167c8ff5b1b10fd2d3135c507bebc7 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Wed, 26 Aug 2020 15:38:21 +0800 Subject: [PATCH 058/474] Add FeatureProviderDto. --- .../Volo/Abp/FeatureManagement/FeatureDto.cs | 3 +-- .../Volo/Abp/FeatureManagement/FeatureProviderDto.cs | 9 +++++++++ .../Volo/Abp/FeatureManagement/FeatureAppService.cs | 6 +++++- .../FeatureManagement/FeatureManagementModal.cshtml | 6 +++--- 4 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureProviderDto.cs diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureDto.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureDto.cs index 26b41dbc8f..11e1c6c005 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureDto.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureDto.cs @@ -1,4 +1,3 @@ -using System.Collections.Generic; using Volo.Abp.Validation.StringValues; namespace Volo.Abp.FeatureManagement @@ -11,7 +10,7 @@ namespace Volo.Abp.FeatureManagement public string Value { get; set; } - public string ProviderName { get; set; } + public FeatureProviderDto Provider { get; set; } public string Description { get; set; } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureProviderDto.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureProviderDto.cs new file mode 100644 index 0000000000..59c9dcb2ef --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureProviderDto.cs @@ -0,0 +1,9 @@ +namespace Volo.Abp.FeatureManagement +{ + public class FeatureProviderDto + { + public string Name { get; set; } + + public string Key { get; set; } + } +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs index c63336ded1..f0c310650d 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs @@ -42,7 +42,11 @@ namespace Volo.Abp.FeatureManagement Description = featureDefinition.Description?.Localize(StringLocalizerFactory), ParentName = featureDefinition.Parent?.Name, Value = feature.Value, - ProviderName = feature.Provider?.Name + Provider = new FeatureProviderDto + { + Name = feature.Provider?.Name, + Key = feature.Provider?.Key + } }); } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml index 90659844ac..f5adbf79d4 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml @@ -21,12 +21,12 @@ @for (var i = 0; i < Model.FeatureListDto.Features.Count; i++) { var feature = Model.FeatureListDto.Features[i]; - var disabled = Model.IsDisabled((feature.ProviderName)); + var disabled = Model.IsDisabled(feature.Provider.Name);
- @feature.DisplayName @(disabled ? $"({feature.ProviderName})" : "") + @feature.DisplayName @(disabled ? $"({feature.Provider.Name})" : "") - + @if (feature.ValueType is FreeTextStringValueType) { From a5267757f05ef870097e4b52d65baa768e54c524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 26 Aug 2020 10:43:39 +0300 Subject: [PATCH 059/474] Update texts --- .../Pages/RoleManagement.razor | 6 +++--- .../MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index ff4c9d37dd..f72590add0 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -5,7 +5,7 @@ @using Volo.Abp.Application.Dtos @inject IIdentityRoleAppService RoleAppService -

Role Management

+

Roles

@if (_roles != null) { @@ -15,7 +15,7 @@
  • @role.Id / @role.Name - () + ()
  • } @@ -23,7 +23,7 @@

    Total role count: @_roles.TotalCount

    } -

    Create New Role

    +

    New Role

    diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor index 68a2b03115..8f2dc1908b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor @@ -14,12 +14,12 @@ From d2458fb2ff293a8b51826390b246e56d5b2509fd Mon Sep 17 00:00:00 2001 From: EngincanV Date: Wed, 26 Aug 2020 10:54:20 +0300 Subject: [PATCH 060/474] CmsKit: Rating app service and repository implementations --- .../Volo/CmsKit/Ratings/IRatingRepository.cs | 10 ++- .../Volo/CmsKit/Ratings/Rating.cs | 14 +++- .../CmsKit/Ratings/EfCoreRatingRepository.cs | 18 ++++ .../CmsKit/MongoDB/CmsKitMongoDbContext.cs | 3 + .../MongoDB/CmsKitMongoDbContextExtensions.cs | 6 ++ .../CmsKit/MongoDB/CmsKitMongoDbModule.cs | 3 + .../CmsKit/MongoDB/ICmsKitMongoDbContext.cs | 3 + .../MongoDB/Ratings/MongoRatingRepository.cs | 31 +++++++ ...CmsKit.Public.Application.Contracts.csproj | 30 +++---- .../Public/Ratings/CreateRatingInput.cs | 10 +++ .../Public/Ratings/IRatingPublicAppService.cs | 18 ++++ .../Volo/CmsKit/Public/Ratings/RatingDto.cs | 19 +++++ .../Public/Ratings/UpdateRatingInput.cs | 10 +++ .../Volo.CmsKit.Public.Application.csproj | 32 ++++---- .../Public/Ratings/RatingPublicAppService.cs | 82 +++++++++++++++++++ 15 files changed, 256 insertions(+), 33 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateRatingInput.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingDto.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/UpdateRatingInput.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs index a2f7c779af..e7a25b1709 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs @@ -1,10 +1,18 @@ using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using JetBrains.Annotations; using Volo.Abp.Domain.Repositories; namespace Volo.CmsKit.Ratings { public interface IRatingRepository : IBasicRepository { - + Task> GetListAsync( + [NotNull] string entityType, + [NotNull] string entityId, + CancellationToken cancellationToken = default + ); } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs index a35fd022bf..4567b5d275 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs @@ -37,9 +37,21 @@ namespace Volo.CmsKit.Ratings { EntityType = Check.NotNullOrWhiteSpace(entityType, nameof(entityType), RatingConsts.MaxEntityTypeLength); EntityId = Check.NotNullOrWhiteSpace(entityId, nameof(entityId), RatingConsts.MaxEntityIdLength); - StarCount = starCount; + SetStarCount(starCount); CreatorId = creatorId; TenantId = tenantId; } + + public virtual void SetStarCount(short starCount) + { + if(starCount <= 5 && starCount > 0) + { + StarCount = starCount; + } + else + { + throw new ArgumentOutOfRangeException("Choosen star must between 1 and 5"); + } + } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs index b05db8fcfb..36ed50ad35 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs @@ -1,4 +1,11 @@ using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Dynamic.Core; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Volo.Abp; using Volo.Abp.Domain.Repositories.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; using Volo.CmsKit.EntityFrameworkCore; @@ -10,5 +17,16 @@ namespace Volo.CmsKit.Ratings public EfCoreRatingRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) { } + + public async Task> GetListAsync(string entityType, string entityId, CancellationToken cancellationToken = default) + { + Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); + Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); + + var query = DbSet.Where(r => r.EntityType == entityType && r.EntityId == entityId); + var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken)); + + return ratings; + } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContext.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContext.cs index 63bf48a14e..09053167f9 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContext.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContext.cs @@ -2,6 +2,7 @@ using Volo.Abp.Data; using Volo.Abp.MongoDB; using Volo.CmsKit.Comments; +using Volo.CmsKit.Ratings; using Volo.CmsKit.Reactions; using Volo.CmsKit.Users; @@ -16,6 +17,8 @@ namespace Volo.CmsKit.MongoDB public IMongoCollection CmsUsers => Collection(); + public IMongoCollection Ratings => Collection(); + protected override void CreateModel(IMongoModelBuilder modelBuilder) { base.CreateModel(modelBuilder); 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 568e136591..2dc4c55a71 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 @@ -2,6 +2,7 @@ using Volo.Abp; using Volo.Abp.MongoDB; using Volo.CmsKit.Comments; +using Volo.CmsKit.Ratings; using Volo.CmsKit.Reactions; using Volo.CmsKit.Users; @@ -35,6 +36,11 @@ namespace Volo.CmsKit.MongoDB { x.CollectionName = CmsKitDbProperties.DbTablePrefix + "Comments"; }); + + builder.Entity(x => + { + x.CollectionName = CmsKitDbProperties.DbTablePrefix + "Ratings"; + }); } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbModule.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbModule.cs index 736b30ada1..d479821b38 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbModule.cs @@ -4,8 +4,10 @@ using Volo.Abp.MongoDB; using Volo.Abp.Users.MongoDB; using Volo.CmsKit.Comments; using Volo.CmsKit.MongoDB.Comments; +using Volo.CmsKit.MongoDB.Ratings; using Volo.CmsKit.MongoDB.Reactions; using Volo.CmsKit.MongoDB.Users; +using Volo.CmsKit.Ratings; using Volo.CmsKit.Reactions; using Volo.CmsKit.Users; @@ -25,6 +27,7 @@ namespace Volo.CmsKit.MongoDB options.AddRepository(); options.AddRepository(); options.AddRepository(); + options.AddRepository(); }); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/ICmsKitMongoDbContext.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/ICmsKitMongoDbContext.cs index 16b72c8902..40914a9720 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/ICmsKitMongoDbContext.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/ICmsKitMongoDbContext.cs @@ -2,6 +2,7 @@ using Volo.Abp.Data; using Volo.Abp.MongoDB; using Volo.CmsKit.Comments; +using Volo.CmsKit.Ratings; using Volo.CmsKit.Reactions; using Volo.CmsKit.Users; @@ -15,5 +16,7 @@ namespace Volo.CmsKit.MongoDB IMongoCollection Comments { get; } IMongoCollection CmsUsers { get; } + + IMongoCollection Ratings { get; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs new file mode 100644 index 0000000000..a7b5fa33b2 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MongoDB.Driver; +using MongoDB.Driver.Linq; +using Volo.Abp; +using Volo.Abp.Domain.Repositories.MongoDB; +using Volo.Abp.MongoDB; +using Volo.CmsKit.Ratings; + +namespace Volo.CmsKit.MongoDB.Ratings +{ + public class MongoRatingRepository : MongoDbRepository, IRatingRepository + { + public MongoRatingRepository(IMongoDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + + public async Task> GetListAsync(string entityType, string entityId, CancellationToken cancellationToken = default) + { + Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); + Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); + + var query = GetMongoQueryable().Where(r => r.EntityType == entityType && r.EntityId == entityId); + var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken)); + + return ratings; + } + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.csproj b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.csproj index f44c745740..8515d28e83 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.csproj @@ -1,15 +1,15 @@ - - - - - - - netstandard2.0 - - - - - - - - + + + + + + + netstandard2.0 + + + + + + + + diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateRatingInput.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateRatingInput.cs new file mode 100644 index 0000000000..88b53d5b0c --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateRatingInput.cs @@ -0,0 +1,10 @@ +using System.ComponentModel.DataAnnotations; + +namespace Volo.CmsKit.Public.Ratings +{ + public class CreateRatingInput + { + [Required] + public short StarCount { get; set; } + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs new file mode 100644 index 0000000000..d72d9dd365 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs @@ -0,0 +1,18 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace Volo.CmsKit.Public.Ratings +{ + public interface IRatingPublicAppService : IApplicationService + { + Task> GetListAsync(string entityType, string entityId); + + Task CreateAsync(string entityType, string entityId, CreateRatingInput input); + + Task UpdateAsync(Guid id, UpdateRatingInput input); + + Task DeleteAsync(Guid id); + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingDto.cs new file mode 100644 index 0000000000..bf050465c9 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingDto.cs @@ -0,0 +1,19 @@ +using System; + +namespace Volo.CmsKit.Public.Ratings +{ + public class RatingDto + { + public Guid Id { get; set; } + + public string EntityType { get; set; } + + public string EntityId { get; set; } + + public short StarCount { get; set; } + + public Guid CreatorId { get; set; } + + public DateTime CreationTime { get; set; } + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/UpdateRatingInput.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/UpdateRatingInput.cs new file mode 100644 index 0000000000..e2f77122d4 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/UpdateRatingInput.cs @@ -0,0 +1,10 @@ +using System.ComponentModel.DataAnnotations; + +namespace Volo.CmsKit.Public.Ratings +{ + public class UpdateRatingInput + { + [Required] + public short StarCount { get; set; } + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.csproj b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.csproj index a8a9613fbf..702523e3c6 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.csproj @@ -1,16 +1,16 @@ - - - - - - - netstandard2.0 - - - - - - - - - + + + + + + + netstandard2.0 + + + + + + + + + diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs new file mode 100644 index 0000000000..4eb5e8e9ed --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; +using Volo.Abp.Authorization; +using Volo.Abp.Users; +using Volo.CmsKit.Ratings; +using Volo.CmsKit.Users; + +namespace Volo.CmsKit.Public.Ratings +{ + public class RatingPublicAppService : ApplicationService, IRatingPublicAppService + { + protected IRatingRepository RatingRepository { get; } + public ICmsUserLookupService CmsUserLookupService { get; } + + public RatingPublicAppService(IRatingRepository ratingRepository, ICmsUserLookupService cmsUserLookupService) + { + RatingRepository = ratingRepository; + CmsUserLookupService = cmsUserLookupService; + } + + public virtual async Task> GetListAsync(string entityType, string entityId) + { + var ratings = await RatingRepository.GetListAsync(entityType, entityId); + var ratingDto = ObjectMapper.Map, List>(ratings); + + return new ListResultDto(ratingDto); + } + + [Authorize] + public virtual async Task CreateAsync(string entityType, string entityId, CreateRatingInput input) + { + var user = await CmsUserLookupService.GetByIdAsync(CurrentUser.GetId()); + + var rating = await RatingRepository.InsertAsync( + new Rating( + GuidGenerator.Create(), + entityType, + entityId, + input.StarCount, + user.Id, + CurrentTenant.Id + ) + ); + + return ObjectMapper.Map(rating); + } + + [Authorize] + public virtual async Task UpdateAsync(Guid id, UpdateRatingInput input) + { + var rating = await RatingRepository.GetAsync(id); + + if (rating.CreatorId != CurrentUser.GetId()) + { + throw new AbpAuthorizationException(); + } + + rating.SetStarCount(input.StarCount); + + var updatedRating = await RatingRepository.UpdateAsync(rating); + + return ObjectMapper.Map(updatedRating); + } + + [Authorize] + public virtual async Task DeleteAsync(Guid id) + { + var rating = await RatingRepository.GetAsync(id); + + if (rating.CreatorId != CurrentUser.GetId()) + { + throw new AbpAuthorizationException(); + } + + await RatingRepository.DeleteAsync(id); + } + } +} \ No newline at end of file From 414e258f17223c7fb0eb4503f8db49e1df33ac17 Mon Sep 17 00:00:00 2001 From: erolarkat Date: Wed, 26 Aug 2020 12:13:51 +0300 Subject: [PATCH 061/474] npm packages 3.1.0-rc.2 --- .../package.json | 2 +- .../wwwroot/libs/abp/core/abp.js | 16 +- .../wwwroot/libs/abp/jquery/abp.jquery.js | 16 +- .../yarn.lock | 222 ++++++------ .../package.json | 2 +- .../wwwroot/libs/abp/core/abp.js | 16 +- .../wwwroot/libs/abp/jquery/abp.jquery.js | 16 +- .../yarn.lock | 236 ++++++------- .../app/Volo.BloggingTestApp/package.json | 4 +- .../wwwroot/libs/abp/core/abp.js | 16 +- .../wwwroot/libs/abp/jquery/abp.jquery.js | 16 +- .../app/Volo.BloggingTestApp/yarn.lock | 330 +++++++++--------- .../Volo.ClientSimulation.Demo/package.json | 2 +- .../wwwroot/libs/abp/core/abp.js | 16 +- .../wwwroot/libs/abp/jquery/abp.jquery.js | 16 +- .../demo/Volo.ClientSimulation.Demo/yarn.lock | 236 ++++++------- modules/cms-kit/angular/package.json | 10 +- .../angular/projects/cms-kit/package.json | 4 +- .../Volo.CmsKit.IdentityServer/package.json | 2 +- .../wwwroot/libs/abp/core/abp.js | 16 +- .../wwwroot/libs/abp/jquery/abp.jquery.js | 16 +- .../host/Volo.CmsKit.IdentityServer/yarn.lock | 236 ++++++------- .../host/Volo.CmsKit.Web.Host/package.json | 2 +- .../wwwroot/libs/abp/core/abp.js | 16 +- .../wwwroot/libs/abp/jquery/abp.jquery.js | 16 +- .../host/Volo.CmsKit.Web.Host/yarn.lock | 236 ++++++------- .../host/Volo.CmsKit.Web.Unified/package.json | 2 +- .../wwwroot/libs/abp/core/abp.js | 16 +- .../wwwroot/libs/abp/jquery/abp.jquery.js | 16 +- .../host/Volo.CmsKit.Web.Unified/yarn.lock | 236 ++++++------- modules/docs/app/VoloDocs.Web/package.json | 4 +- .../VoloDocs.Web/wwwroot/libs/abp/core/abp.js | 16 +- .../wwwroot/libs/abp/jquery/abp.jquery.js | 16 +- modules/docs/app/VoloDocs.Web/yarn.lock | 296 ++++++++-------- npm/lerna.json | 2 +- npm/ng-packs/lerna.version.json | 2 +- npm/ng-packs/package.json | 20 +- npm/ng-packs/packages/account/package.json | 4 +- npm/ng-packs/packages/components/package.json | 4 +- npm/ng-packs/packages/core/package.json | 4 +- .../packages/feature-management/package.json | 4 +- npm/ng-packs/packages/identity/package.json | 6 +- .../permission-management/package.json | 4 +- npm/ng-packs/packages/schematics/package.json | 2 +- .../packages/setting-management/package.json | 4 +- .../packages/tenant-management/package.json | 6 +- .../packages/theme-basic/package.json | 4 +- .../packages/theme-shared/package.json | 4 +- npm/packs/anchor-js/package.json | 4 +- .../package.json | 4 +- .../package.json | 30 +- npm/packs/aspnetcore.mvc.ui/package.json | 2 +- npm/packs/blogging/package.json | 10 +- npm/packs/bootstrap-datepicker/package.json | 2 +- npm/packs/bootstrap/package.json | 4 +- npm/packs/chart.js/package.json | 2 +- npm/packs/clipboard/package.json | 4 +- npm/packs/codemirror/package.json | 4 +- npm/packs/core/package.json | 4 +- npm/packs/datatables.net-bs4/package.json | 4 +- npm/packs/datatables.net/package.json | 4 +- npm/packs/docs/package.json | 12 +- npm/packs/flag-icon-css/package.json | 2 +- npm/packs/font-awesome/package.json | 4 +- npm/packs/highlight.js/package.json | 4 +- npm/packs/jquery-form/package.json | 4 +- .../package.json | 4 +- npm/packs/jquery-validation/package.json | 4 +- npm/packs/jquery/package.json | 4 +- npm/packs/jstree/package.json | 4 +- npm/packs/lodash/package.json | 4 +- npm/packs/luxon/package.json | 2 +- .../package.json | 4 +- npm/packs/markdown-it/package.json | 4 +- npm/packs/owl.carousel/package.json | 4 +- npm/packs/popper.js/package.json | 4 +- npm/packs/prismjs/package.json | 6 +- npm/packs/select2/package.json | 4 +- npm/packs/signalr/package.json | 4 +- npm/packs/sweetalert/package.json | 4 +- npm/packs/timeago/package.json | 4 +- npm/packs/toastr/package.json | 4 +- npm/packs/tui-editor/package.json | 10 +- npm/packs/uppy/package.json | 4 +- npm/packs/utils/package.json | 2 +- npm/packs/virtual-file-explorer/package.json | 6 +- templates/app/angular/package.json | 12 +- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../MyCompanyName.MyProjectName.Web/yarn.lock | 236 ++++++------- templates/module/angular/package.json | 12 +- .../projects/my-project-name/package.json | 4 +- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- 103 files changed, 2144 insertions(+), 2128 deletions(-) diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index 9838b50651..60d92094ba 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^3.0.5", + "@abp/aspnetcore.mvc.ui.theme.shared": "^3.1.0-rc.2", "highlight.js": "^9.13.1" }, "devDependencies": {} diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/core/abp.js b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/core/abp.js index 41837d2368..20bd92147a 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/core/abp.js +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/core/abp.js @@ -706,18 +706,18 @@ var abp = abp || {}; var toLocal = function (date) { return new Date( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - date.getUTCHours(), - date.getUTCMinutes(), - date.getUTCSeconds(), - date.getUTCMilliseconds() + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() ); }; var toUtc = function (date) { - Date.UTC( + return Date.UTC( date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/jquery/abp.jquery.js b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/jquery/abp.jquery.js index e6aff047f7..3087635e7d 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/jquery/abp.jquery.js @@ -79,13 +79,15 @@ var abp = abp || {}; } }; - new MutationObserver(mutationObserverCallback).observe( - $('body')[0], - { - subtree: true, - childList: true - } - ); + $(function(){ + new MutationObserver(mutationObserverCallback).observe( + $('body')[0], + { + subtree: true, + childList: true + } + ); + }); // AJAX /////////////////////////////////////////////////////////////////// diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock index 3399733e18..fe5adc6229 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock @@ -2,30 +2,30 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.shared@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.5.tgz#5b370902cf229963f9aa10dd64482d57299dde76" - integrity sha512-iobAH39xrCdnqdaABaiYZg4lqNSOwPkMCLnyc+ytxOMbu/YnNKahXPmRhgd8dR/l+iQY1+6T4SWfLdGswi3gAg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.0.5" - "@abp/bootstrap" "~3.0.5" - "@abp/bootstrap-datepicker" "~3.0.5" - "@abp/datatables.net-bs4" "~3.0.5" - "@abp/font-awesome" "~3.0.5" - "@abp/jquery-form" "~3.0.5" - "@abp/jquery-validation-unobtrusive" "~3.0.5" - "@abp/lodash" "~3.0.5" - "@abp/luxon" "~3.0.5" - "@abp/malihu-custom-scrollbar-plugin" "~3.0.5" - "@abp/select2" "~3.0.5" - "@abp/sweetalert" "~3.0.5" - "@abp/timeago" "~3.0.5" - "@abp/toastr" "~3.0.5" - -"@abp/aspnetcore.mvc.ui@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.5.tgz#a050eaee328c56a3730f5abbf25035adf612d6f0" - integrity sha512-/EOgjXTzR+I1OK9KA7L3yzQ2RGSDW97+n3cQrSdLAUF+tnRvMJS0nytDlSJSRK2hb8/clFMaofZHCC81aUkYUg== +"@abp/aspnetcore.mvc.ui.theme.shared@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -34,144 +34,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.5.tgz#3a7fd86dbcadc31c11be5b2b31c8cf8ac3035540" - integrity sha512-vIY1wT4RHoJAPhVK11Q5MS71iZbwsmM/0VTBvvs04mjRSSi6xhdyRYkA+l+P49fnOwhZNaaK19XwQdVVScDuhA== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.5.tgz#91f2c8fe6a57fc5789ae8fe9c206b2c159e55880" - integrity sha512-LdydeJIbw5k1k7FkWaI1lTectZeTXmEIoccJtj9Qx4N9yGt40wGsjz9SOvUdJ0IKAgntIWNQP8ohWiBPgzT7Xg== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.5.tgz#9a7bd990d02edc8128a5be3233b6fbb5669b15b8" - integrity sha512-LdkSkZQfN4hugcGNxBkje0+eQomivwNFbnAkMFQbvCwYLwKB2yvk7GCemEetW1piqvyrUGz4jqhtunjoXps5JA== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.0.5" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.5.tgz#9b79935970d2d4074994240b5deb01dff5987c0a" - integrity sha512-jIWRBEG/NlhaE43i6Xzr18XJ5aTWA+WWslf7WgNOArG5slGBbH4lLLja4HswLP3NGdSmzIyHJR1p9XQ82nBkbQ== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.0.5" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.5.tgz#0a0a39e8fa54522bf8a09ce76ff3927207a79491" - integrity sha512-HClQ2tcZuWBAChf9oOJOtMP1zHv8jqloPEcw3iqbhS/tWZBw5VQ4TO+BVfZsqHDXZNnWSmR6/2xiKsK32nliew== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.5.tgz#62d58c34f0abf268e30bdf788dfbd3f45b19b412" - integrity sha512-/+31Vtw1S9vvuNy/rN/Q6awkgUaYNNYXESgfvqI0pqIkvlPgigvS8E68mHqGzsxyRqdZisI6JGd94AF+vJD7sQ== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.5.tgz#9d2ea9b2509448ee163a163298a7a09480865f78" - integrity sha512-RKgvQciaMml33NvzA28aYyfNI+WQHRfKLFWvOvqc8qO4C3BvyrnwepuzZcnI/9UsELKLSLoFrfk3rJHhxnTJhg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.5.tgz#b8912e1c4cfdd4fdff6ad4aa7ee8693b55a3be1f" - integrity sha512-kPifDA+1ErbeQBwn+BzwtWuTHXzBke/EMCmITuj59plM/60gZ1ZfVm8EzzTmKS7iLaVVeOqTKf0vEQTobNYffw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.0.5" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.5.tgz#55e36b3c832a35447fac69af312dedf1dee22279" - integrity sha512-fdqxc5CJ6TpUAF8+NEsKCmXvvZiOPR5bzczcfvfovxLOjvHvdEO74XPGjsjlBNTdaKMhmNGZRK4JRLUz7fvTng== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.5.tgz#2e43ac19a8df6e1e0220d6d4991d33a93d890754" - integrity sha512-2d2l+smWKAVP4/b6GSO+8rmJ7pFXiUewpBDwkHm5qgkK6n6UGqIcK9lIgiS2YQ6rmL6qdtuNhhqtC9GF2TF2kQ== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.5.tgz#d5d9f14095d76239bc0e6f9804c24d1f92ffcab4" - integrity sha512-+B2vxfPwxoIIb8Ac8eHi6OgAn0qbjmPZuun7/es0/ouYYTbEhvhTAD20X3PGZlHrIYeDyS2ansuXm8gJI+/BzA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.5.tgz#083042c939ea58bf719e35114a6c8efb07b68688" - integrity sha512-0UVHO2CO89t34O35OA3JzWGWLBpg+e1NQXSfVtK90nmg/QmzGkHVM9m7Su0jjLNBt3N5EA5OPOhriot3bCKItw== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.5.tgz#f908289927a63fd76fb8f60b00a37747d9edbe39" - integrity sha512-3GoXA8VtGyZWKiqaPCipPXYLLM7h2Y5Oecq5c5YlMQyW2akv7uHiQQF2GZW/nVsFu3HBbGTOWpKRRmVk3PEO9Q== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.5.tgz#79d7754713c64a6549da520dc6867ef3e3dd0350" - integrity sha512-VbeSHdAdDy8exrjplHMMhLVV4oG7Gq9zBb5M52f0sIkA4DkXFhksXHcHNoOCfhaKAXpenGA03Z9GJewZ3MTpMw== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.5.tgz#e3b92d23cf3633983980b6255bf63c43d422ceab" - integrity sha512-OUt4ANgj14GESfRG7+UqdONS8daOu+8x2OZDWv98hriuX0uCVBjwB2J0jRI/n653C68Mi0yHixGONDv9OLy/lg== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.5.tgz#b191a7c43f3dc77645fe27273f2f6619f7d4eb31" - integrity sha512-QhvAOU4C+Qxh/gFuCSGZtLU4KwVhdv/jtK8ovWyqbGvQMCCIimqa8BFKIz0H5XWIJhHwwWblkpjICWgjWh6uXw== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.5.tgz#fc83b678f5be3a22040d0421ad9db5b2eac9d4fc" - integrity sha512-qgi2DEu6FYpN/DYcOZrmXsAr1HqcIKMhBWeXgjfoYUIl/K5+OuUgbQ69D/jdc0jz8HU9a4Cw7Q8hhe4CkgssEw== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.5.tgz#66b3da953500e73ff1f23d1b41168cde8216ce49" - integrity sha512-X9V1xLIEazItaf93nFSA4p94WT6QK3yA4eIyvU7GyyEkkOQdaakNwPbRwy930sd+I+/oXnIqM1vDsJu9QDhgvg== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index 8f9f972442..66d620dc75 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.5" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" }, "devDependencies": {} } \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/core/abp.js b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/core/abp.js index 41837d2368..20bd92147a 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/core/abp.js +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/core/abp.js @@ -706,18 +706,18 @@ var abp = abp || {}; var toLocal = function (date) { return new Date( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - date.getUTCHours(), - date.getUTCMinutes(), - date.getUTCSeconds(), - date.getUTCMilliseconds() + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() ); }; var toUtc = function (date) { - Date.UTC( + return Date.UTC( date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/jquery/abp.jquery.js b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/jquery/abp.jquery.js index e6aff047f7..3087635e7d 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/jquery/abp.jquery.js @@ -79,13 +79,15 @@ var abp = abp || {}; } }; - new MutationObserver(mutationObserverCallback).observe( - $('body')[0], - { - subtree: true, - childList: true - } - ); + $(function(){ + new MutationObserver(mutationObserverCallback).observe( + $('body')[0], + { + subtree: true, + childList: true + } + ); + }); // AJAX /////////////////////////////////////////////////////////////////// diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index b30d4d2f76..f1b72d84a6 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.5.tgz#c146f20226522f0305cc0fa31cfcf9d39be78901" - integrity sha512-ptNhD4xV2wSLW7vQ5KUgaRiH5Ov1OscZW2ZEoivnt3kqgtIC3DGw+SiE9vjFCvyY83fjRkIlW2PIfQxSySbteQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.5" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.5.tgz#5b370902cf229963f9aa10dd64482d57299dde76" - integrity sha512-iobAH39xrCdnqdaABaiYZg4lqNSOwPkMCLnyc+ytxOMbu/YnNKahXPmRhgd8dR/l+iQY1+6T4SWfLdGswi3gAg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.0.5" - "@abp/bootstrap" "~3.0.5" - "@abp/bootstrap-datepicker" "~3.0.5" - "@abp/datatables.net-bs4" "~3.0.5" - "@abp/font-awesome" "~3.0.5" - "@abp/jquery-form" "~3.0.5" - "@abp/jquery-validation-unobtrusive" "~3.0.5" - "@abp/lodash" "~3.0.5" - "@abp/luxon" "~3.0.5" - "@abp/malihu-custom-scrollbar-plugin" "~3.0.5" - "@abp/select2" "~3.0.5" - "@abp/sweetalert" "~3.0.5" - "@abp/timeago" "~3.0.5" - "@abp/toastr" "~3.0.5" - -"@abp/aspnetcore.mvc.ui@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.5.tgz#a050eaee328c56a3730f5abbf25035adf612d6f0" - integrity sha512-/EOgjXTzR+I1OK9KA7L3yzQ2RGSDW97+n3cQrSdLAUF+tnRvMJS0nytDlSJSRK2hb8/clFMaofZHCC81aUkYUg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.5.tgz#3a7fd86dbcadc31c11be5b2b31c8cf8ac3035540" - integrity sha512-vIY1wT4RHoJAPhVK11Q5MS71iZbwsmM/0VTBvvs04mjRSSi6xhdyRYkA+l+P49fnOwhZNaaK19XwQdVVScDuhA== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.5.tgz#91f2c8fe6a57fc5789ae8fe9c206b2c159e55880" - integrity sha512-LdydeJIbw5k1k7FkWaI1lTectZeTXmEIoccJtj9Qx4N9yGt40wGsjz9SOvUdJ0IKAgntIWNQP8ohWiBPgzT7Xg== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.5.tgz#9a7bd990d02edc8128a5be3233b6fbb5669b15b8" - integrity sha512-LdkSkZQfN4hugcGNxBkje0+eQomivwNFbnAkMFQbvCwYLwKB2yvk7GCemEetW1piqvyrUGz4jqhtunjoXps5JA== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.0.5" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.5.tgz#9b79935970d2d4074994240b5deb01dff5987c0a" - integrity sha512-jIWRBEG/NlhaE43i6Xzr18XJ5aTWA+WWslf7WgNOArG5slGBbH4lLLja4HswLP3NGdSmzIyHJR1p9XQ82nBkbQ== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.0.5" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.5.tgz#0a0a39e8fa54522bf8a09ce76ff3927207a79491" - integrity sha512-HClQ2tcZuWBAChf9oOJOtMP1zHv8jqloPEcw3iqbhS/tWZBw5VQ4TO+BVfZsqHDXZNnWSmR6/2xiKsK32nliew== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.5.tgz#62d58c34f0abf268e30bdf788dfbd3f45b19b412" - integrity sha512-/+31Vtw1S9vvuNy/rN/Q6awkgUaYNNYXESgfvqI0pqIkvlPgigvS8E68mHqGzsxyRqdZisI6JGd94AF+vJD7sQ== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.5.tgz#9d2ea9b2509448ee163a163298a7a09480865f78" - integrity sha512-RKgvQciaMml33NvzA28aYyfNI+WQHRfKLFWvOvqc8qO4C3BvyrnwepuzZcnI/9UsELKLSLoFrfk3rJHhxnTJhg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.5.tgz#b8912e1c4cfdd4fdff6ad4aa7ee8693b55a3be1f" - integrity sha512-kPifDA+1ErbeQBwn+BzwtWuTHXzBke/EMCmITuj59plM/60gZ1ZfVm8EzzTmKS7iLaVVeOqTKf0vEQTobNYffw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.0.5" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.5.tgz#55e36b3c832a35447fac69af312dedf1dee22279" - integrity sha512-fdqxc5CJ6TpUAF8+NEsKCmXvvZiOPR5bzczcfvfovxLOjvHvdEO74XPGjsjlBNTdaKMhmNGZRK4JRLUz7fvTng== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.5.tgz#2e43ac19a8df6e1e0220d6d4991d33a93d890754" - integrity sha512-2d2l+smWKAVP4/b6GSO+8rmJ7pFXiUewpBDwkHm5qgkK6n6UGqIcK9lIgiS2YQ6rmL6qdtuNhhqtC9GF2TF2kQ== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.5.tgz#d5d9f14095d76239bc0e6f9804c24d1f92ffcab4" - integrity sha512-+B2vxfPwxoIIb8Ac8eHi6OgAn0qbjmPZuun7/es0/ouYYTbEhvhTAD20X3PGZlHrIYeDyS2ansuXm8gJI+/BzA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.5.tgz#083042c939ea58bf719e35114a6c8efb07b68688" - integrity sha512-0UVHO2CO89t34O35OA3JzWGWLBpg+e1NQXSfVtK90nmg/QmzGkHVM9m7Su0jjLNBt3N5EA5OPOhriot3bCKItw== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.5.tgz#f908289927a63fd76fb8f60b00a37747d9edbe39" - integrity sha512-3GoXA8VtGyZWKiqaPCipPXYLLM7h2Y5Oecq5c5YlMQyW2akv7uHiQQF2GZW/nVsFu3HBbGTOWpKRRmVk3PEO9Q== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.5.tgz#79d7754713c64a6549da520dc6867ef3e3dd0350" - integrity sha512-VbeSHdAdDy8exrjplHMMhLVV4oG7Gq9zBb5M52f0sIkA4DkXFhksXHcHNoOCfhaKAXpenGA03Z9GJewZ3MTpMw== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.5.tgz#e3b92d23cf3633983980b6255bf63c43d422ceab" - integrity sha512-OUt4ANgj14GESfRG7+UqdONS8daOu+8x2OZDWv98hriuX0uCVBjwB2J0jRI/n653C68Mi0yHixGONDv9OLy/lg== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.5.tgz#b191a7c43f3dc77645fe27273f2f6619f7d4eb31" - integrity sha512-QhvAOU4C+Qxh/gFuCSGZtLU4KwVhdv/jtK8ovWyqbGvQMCCIimqa8BFKIz0H5XWIJhHwwWblkpjICWgjWh6uXw== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.5.tgz#fc83b678f5be3a22040d0421ad9db5b2eac9d4fc" - integrity sha512-qgi2DEu6FYpN/DYcOZrmXsAr1HqcIKMhBWeXgjfoYUIl/K5+OuUgbQ69D/jdc0jz8HU9a4Cw7Q8hhe4CkgssEw== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.5.tgz#66b3da953500e73ff1f23d1b41168cde8216ce49" - integrity sha512-X9V1xLIEazItaf93nFSA4p94WT6QK3yA4eIyvU7GyyEkkOQdaakNwPbRwy930sd+I+/oXnIqM1vDsJu9QDhgvg== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index 63cfac4070..3329e0c9b4 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.5", - "@abp/blogging": "^3.0.5" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2", + "@abp/blogging": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/core/abp.js b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/core/abp.js index 41837d2368..20bd92147a 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/core/abp.js +++ b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/core/abp.js @@ -706,18 +706,18 @@ var abp = abp || {}; var toLocal = function (date) { return new Date( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - date.getUTCHours(), - date.getUTCMinutes(), - date.getUTCSeconds(), - date.getUTCMilliseconds() + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() ); }; var toUtc = function (date) { - Date.UTC( + return Date.UTC( date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/jquery/abp.jquery.js b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/jquery/abp.jquery.js index e6aff047f7..3087635e7d 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/jquery/abp.jquery.js @@ -79,13 +79,15 @@ var abp = abp || {}; } }; - new MutationObserver(mutationObserverCallback).observe( - $('body')[0], - { - subtree: true, - childList: true - } - ); + $(function(){ + new MutationObserver(mutationObserverCallback).observe( + $('body')[0], + { + subtree: true, + childList: true + } + ); + }); // AJAX /////////////////////////////////////////////////////////////////// diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index fcd9dbcd00..259516d463 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.5.tgz#c146f20226522f0305cc0fa31cfcf9d39be78901" - integrity sha512-ptNhD4xV2wSLW7vQ5KUgaRiH5Ov1OscZW2ZEoivnt3kqgtIC3DGw+SiE9vjFCvyY83fjRkIlW2PIfQxSySbteQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.5" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.5.tgz#5b370902cf229963f9aa10dd64482d57299dde76" - integrity sha512-iobAH39xrCdnqdaABaiYZg4lqNSOwPkMCLnyc+ytxOMbu/YnNKahXPmRhgd8dR/l+iQY1+6T4SWfLdGswi3gAg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.0.5" - "@abp/bootstrap" "~3.0.5" - "@abp/bootstrap-datepicker" "~3.0.5" - "@abp/datatables.net-bs4" "~3.0.5" - "@abp/font-awesome" "~3.0.5" - "@abp/jquery-form" "~3.0.5" - "@abp/jquery-validation-unobtrusive" "~3.0.5" - "@abp/lodash" "~3.0.5" - "@abp/luxon" "~3.0.5" - "@abp/malihu-custom-scrollbar-plugin" "~3.0.5" - "@abp/select2" "~3.0.5" - "@abp/sweetalert" "~3.0.5" - "@abp/timeago" "~3.0.5" - "@abp/toastr" "~3.0.5" - -"@abp/aspnetcore.mvc.ui@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.5.tgz#a050eaee328c56a3730f5abbf25035adf612d6f0" - integrity sha512-/EOgjXTzR+I1OK9KA7L3yzQ2RGSDW97+n3cQrSdLAUF+tnRvMJS0nytDlSJSRK2hb8/clFMaofZHCC81aUkYUg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,213 +41,213 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/blogging@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.0.5.tgz#07d476d9d7bb20b52ccd122c8cf7c7c2bd3c1aa4" - integrity sha512-3qBS3EfBRrcGzgo8xaJXIVNu/qkuhBLYixPur69nUa8sDAsYI725mVIOfznyYyTAxPXB2EDOf4WA+NKiEINrqQ== +"@abp/blogging@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.1.0-rc.2.tgz#89f056ce6218cbeffeefbc96138d98596db6dd91" + integrity sha512-SrAsp6S/1FM9IRnpsOKLSxT/Cx0mENS7LmLYm/rMc8YwYTUZDg9s9DJhs6WqFgghadByvul6bgJ8NDLrktKJcA== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.5" - "@abp/owl.carousel" "~3.0.5" - "@abp/prismjs" "~3.0.5" - "@abp/tui-editor" "~3.0.5" + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + "@abp/owl.carousel" "~3.1.0-rc.2" + "@abp/prismjs" "~3.1.0-rc.2" + "@abp/tui-editor" "~3.1.0-rc.2" -"@abp/bootstrap-datepicker@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.5.tgz#3a7fd86dbcadc31c11be5b2b31c8cf8ac3035540" - integrity sha512-vIY1wT4RHoJAPhVK11Q5MS71iZbwsmM/0VTBvvs04mjRSSi6xhdyRYkA+l+P49fnOwhZNaaK19XwQdVVScDuhA== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.5.tgz#91f2c8fe6a57fc5789ae8fe9c206b2c159e55880" - integrity sha512-LdydeJIbw5k1k7FkWaI1lTectZeTXmEIoccJtj9Qx4N9yGt40wGsjz9SOvUdJ0IKAgntIWNQP8ohWiBPgzT7Xg== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/clipboard@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.0.5.tgz#7ceadd21360db11c91582a532029bfe65d10a930" - integrity sha512-iq455C096L5D+b6IrWkMxA9mbpggBNZ1kWfCQ3rhIjo0qbOGrvdGB3uQ+BqRS9Ni9ku7vBb2COldouIC9KOp5A== +"@abp/clipboard@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.2.tgz#73a8dbc1f98cfb64d374b463dcd16b186bb694bb" + integrity sha512-Q1Z9pcs3gpptjE8Cjm/38bPKwKncjoVYSO0TknyEZLM3QG+PtZwa9UCkaK+Truz/U3QoZqbPuNbPKr5cz7o+lw== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" clipboard "^2.0.6" -"@abp/codemirror@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.0.5.tgz#2d60ad50f7b50833b0032f3c2e8992a89f257aa9" - integrity sha512-RkbmRGmSCB2962rJdhp0NgJ+qEP4gG05wuSuCMsYJTU3U9IkhkqiJbzupUzAkHQTaCQwCOUeXoBLUkwCHUP2DA== +"@abp/codemirror@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.1.0-rc.2.tgz#020d6207094293109a0752b046064c2592056c27" + integrity sha512-TmbfAP+CpzbWly03iibi7x9dW655Zxcu50tifAyi3LSTwrQIbhB6jo1aksdA2X97qTSLBhvOt3avcqj91sKRhQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" codemirror "^5.54.0" -"@abp/core@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.5.tgz#9a7bd990d02edc8128a5be3233b6fbb5669b15b8" - integrity sha512-LdkSkZQfN4hugcGNxBkje0+eQomivwNFbnAkMFQbvCwYLwKB2yvk7GCemEetW1piqvyrUGz4jqhtunjoXps5JA== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.0.5" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.5.tgz#9b79935970d2d4074994240b5deb01dff5987c0a" - integrity sha512-jIWRBEG/NlhaE43i6Xzr18XJ5aTWA+WWslf7WgNOArG5slGBbH4lLLja4HswLP3NGdSmzIyHJR1p9XQ82nBkbQ== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.0.5" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.5.tgz#0a0a39e8fa54522bf8a09ce76ff3927207a79491" - integrity sha512-HClQ2tcZuWBAChf9oOJOtMP1zHv8jqloPEcw3iqbhS/tWZBw5VQ4TO+BVfZsqHDXZNnWSmR6/2xiKsK32nliew== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.5.tgz#62d58c34f0abf268e30bdf788dfbd3f45b19b412" - integrity sha512-/+31Vtw1S9vvuNy/rN/Q6awkgUaYNNYXESgfvqI0pqIkvlPgigvS8E68mHqGzsxyRqdZisI6JGd94AF+vJD7sQ== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/highlight.js@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.0.5.tgz#f222b54958bd842840db5ad8b32d82f1cd209302" - integrity sha512-VT9UfukzbhMsWhUZNc8b792fY04lqkuJL98QprU59No1Rb7+XUa1k9FMbt2kl12Je3jltY3+UrDl+vrdasFxKg== +"@abp/highlight.js@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.1.0-rc.2.tgz#4c796617471ec571dd6be2fc5327ae02e720ea1f" + integrity sha512-EUBRx7kDRmWEZx4bx1tHRjs0goMV1TzvuBQj7Wrq41CUqhpz2cBk9ZUI5AFGQJTSf0tz1SFqZhr4xDMpo8szTw== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" -"@abp/jquery-form@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.5.tgz#9d2ea9b2509448ee163a163298a7a09480865f78" - integrity sha512-RKgvQciaMml33NvzA28aYyfNI+WQHRfKLFWvOvqc8qO4C3BvyrnwepuzZcnI/9UsELKLSLoFrfk3rJHhxnTJhg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.5.tgz#b8912e1c4cfdd4fdff6ad4aa7ee8693b55a3be1f" - integrity sha512-kPifDA+1ErbeQBwn+BzwtWuTHXzBke/EMCmITuj59plM/60gZ1ZfVm8EzzTmKS7iLaVVeOqTKf0vEQTobNYffw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.0.5" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.5.tgz#55e36b3c832a35447fac69af312dedf1dee22279" - integrity sha512-fdqxc5CJ6TpUAF8+NEsKCmXvvZiOPR5bzczcfvfovxLOjvHvdEO74XPGjsjlBNTdaKMhmNGZRK4JRLUz7fvTng== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.5.tgz#2e43ac19a8df6e1e0220d6d4991d33a93d890754" - integrity sha512-2d2l+smWKAVP4/b6GSO+8rmJ7pFXiUewpBDwkHm5qgkK6n6UGqIcK9lIgiS2YQ6rmL6qdtuNhhqtC9GF2TF2kQ== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.5.tgz#d5d9f14095d76239bc0e6f9804c24d1f92ffcab4" - integrity sha512-+B2vxfPwxoIIb8Ac8eHi6OgAn0qbjmPZuun7/es0/ouYYTbEhvhTAD20X3PGZlHrIYeDyS2ansuXm8gJI+/BzA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.5.tgz#083042c939ea58bf719e35114a6c8efb07b68688" - integrity sha512-0UVHO2CO89t34O35OA3JzWGWLBpg+e1NQXSfVtK90nmg/QmzGkHVM9m7Su0jjLNBt3N5EA5OPOhriot3bCKItw== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.5.tgz#f908289927a63fd76fb8f60b00a37747d9edbe39" - integrity sha512-3GoXA8VtGyZWKiqaPCipPXYLLM7h2Y5Oecq5c5YlMQyW2akv7uHiQQF2GZW/nVsFu3HBbGTOWpKRRmVk3PEO9Q== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/markdown-it@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.0.5.tgz#43c0daf0dd30de3d0109980aa5493db6f72108c1" - integrity sha512-HMRv5B29fQ5nPz4wFlfTsJ3dACotNLHZUuQbOt8SifRkt9Va0t20j+IwIGhSYVc93ttYHjB0IuMk6G10mdBA1A== +"@abp/markdown-it@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.1.0-rc.2.tgz#cd9e84d4188c1adaad4f37ce5f9a1fa028fb5405" + integrity sha512-CufWWxhceJqzKxnTbFXMB+SVi2Ikp2CH8tQ5wvrsDwqJV6ViOCyhBLMIwcV1/oAY9lHzCI+abPiEUZdN7AzhYQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" markdown-it "^11.0.0" -"@abp/owl.carousel@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.0.5.tgz#d575d201a9c4853aa8578e6d8da396de60d6c961" - integrity sha512-fBzNaJPRnFc1VV5MBpRAGr3yZtkcbRHOOKlq74bkg9kvnqNa8dLISPRxHsBCtX+bxndWI3OfmN9Uliiq39TgSA== +"@abp/owl.carousel@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.1.0-rc.2.tgz#c17e34dd4a38aef12f59ad0ef9ad20715880aa98" + integrity sha512-065bHPn7XJHs2ABKdUx3hunnRmKuedjyZZuIMZNvavH4hJyiV3MI0F6RjWLohgMFIvmp0iM259bQwoCkvGFrBA== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" owl.carousel "^2.3.4" -"@abp/prismjs@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.0.5.tgz#81a6ef656f3d7a76f365eb0bcbf2d0d3013d6e72" - integrity sha512-vdSSa1+tXS5+HWIgQyjDy4yQG7Q1YyuHQnFU6zlDJCQlE+20PL6lYgPnqR7DQ+Cd4lhRb3oxvloImYjwiwSQvA== +"@abp/prismjs@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.2.tgz#767d58c07e94c6e5056fd187d4e398efa108f67e" + integrity sha512-HCX/nw6noslnlw7xh94IaybI7xNYrjVOIld1C+J7p9AHizLhxh4kRbwVTpLhFzUWsSrTe8+VssgryimLQvTmjg== dependencies: - "@abp/clipboard" "~3.0.5" - "@abp/core" "~3.0.5" + "@abp/clipboard" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.2" prismjs "^1.20.0" -"@abp/select2@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.5.tgz#79d7754713c64a6549da520dc6867ef3e3dd0350" - integrity sha512-VbeSHdAdDy8exrjplHMMhLVV4oG7Gq9zBb5M52f0sIkA4DkXFhksXHcHNoOCfhaKAXpenGA03Z9GJewZ3MTpMw== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.5.tgz#e3b92d23cf3633983980b6255bf63c43d422ceab" - integrity sha512-OUt4ANgj14GESfRG7+UqdONS8daOu+8x2OZDWv98hriuX0uCVBjwB2J0jRI/n653C68Mi0yHixGONDv9OLy/lg== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.5.tgz#b191a7c43f3dc77645fe27273f2f6619f7d4eb31" - integrity sha512-QhvAOU4C+Qxh/gFuCSGZtLU4KwVhdv/jtK8ovWyqbGvQMCCIimqa8BFKIz0H5XWIJhHwwWblkpjICWgjWh6uXw== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.5.tgz#fc83b678f5be3a22040d0421ad9db5b2eac9d4fc" - integrity sha512-qgi2DEu6FYpN/DYcOZrmXsAr1HqcIKMhBWeXgjfoYUIl/K5+OuUgbQ69D/jdc0jz8HU9a4Cw7Q8hhe4CkgssEw== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/tui-editor@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.0.5.tgz#9eee7cb555793a9c01a6e0ce10e77bb46577857c" - integrity sha512-xwaBhwnyvoIbEKWMSrTs2JHIOf3JK6tsABfcxhTRHXQfr2VONOEjbaLaAruNOuLJy3m/7rOsGWTeT8lMWwf3Fw== +"@abp/tui-editor@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.1.0-rc.2.tgz#48a1f78b4aca6a82daeb243b2d192c1dbe01710f" + integrity sha512-w9mNBY4c1DXAsIwLpLLKXHoIZMMaQhY2xONhD771v503ZGyNKHU+0donbyowLUzznf3PX7LcVVx/vpYxCnWybw== dependencies: - "@abp/codemirror" "~3.0.5" - "@abp/highlight.js" "~3.0.5" - "@abp/jquery" "~3.0.5" - "@abp/markdown-it" "~3.0.5" + "@abp/codemirror" "~3.1.0-rc.2" + "@abp/highlight.js" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.2" + "@abp/markdown-it" "~3.1.0-rc.2" tui-editor "^1.4.10" -"@abp/utils@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.5.tgz#66b3da953500e73ff1f23d1b41168cde8216ce49" - integrity sha512-X9V1xLIEazItaf93nFSA4p94WT6QK3yA4eIyvU7GyyEkkOQdaakNwPbRwy930sd+I+/oXnIqM1vDsJu9QDhgvg== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index c4410d5c13..1c05d0716c 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.5" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/core/abp.js b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/core/abp.js index 41837d2368..20bd92147a 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/core/abp.js +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/core/abp.js @@ -706,18 +706,18 @@ var abp = abp || {}; var toLocal = function (date) { return new Date( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - date.getUTCHours(), - date.getUTCMinutes(), - date.getUTCSeconds(), - date.getUTCMilliseconds() + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() ); }; var toUtc = function (date) { - Date.UTC( + return Date.UTC( date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/jquery/abp.jquery.js b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/jquery/abp.jquery.js index e6aff047f7..3087635e7d 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/jquery/abp.jquery.js @@ -79,13 +79,15 @@ var abp = abp || {}; } }; - new MutationObserver(mutationObserverCallback).observe( - $('body')[0], - { - subtree: true, - childList: true - } - ); + $(function(){ + new MutationObserver(mutationObserverCallback).observe( + $('body')[0], + { + subtree: true, + childList: true + } + ); + }); // AJAX /////////////////////////////////////////////////////////////////// diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index 2233b4f0cb..8d9afafbf8 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.5.tgz#c146f20226522f0305cc0fa31cfcf9d39be78901" - integrity sha512-ptNhD4xV2wSLW7vQ5KUgaRiH5Ov1OscZW2ZEoivnt3kqgtIC3DGw+SiE9vjFCvyY83fjRkIlW2PIfQxSySbteQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.5" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.5.tgz#5b370902cf229963f9aa10dd64482d57299dde76" - integrity sha512-iobAH39xrCdnqdaABaiYZg4lqNSOwPkMCLnyc+ytxOMbu/YnNKahXPmRhgd8dR/l+iQY1+6T4SWfLdGswi3gAg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.0.5" - "@abp/bootstrap" "~3.0.5" - "@abp/bootstrap-datepicker" "~3.0.5" - "@abp/datatables.net-bs4" "~3.0.5" - "@abp/font-awesome" "~3.0.5" - "@abp/jquery-form" "~3.0.5" - "@abp/jquery-validation-unobtrusive" "~3.0.5" - "@abp/lodash" "~3.0.5" - "@abp/luxon" "~3.0.5" - "@abp/malihu-custom-scrollbar-plugin" "~3.0.5" - "@abp/select2" "~3.0.5" - "@abp/sweetalert" "~3.0.5" - "@abp/timeago" "~3.0.5" - "@abp/toastr" "~3.0.5" - -"@abp/aspnetcore.mvc.ui@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.5.tgz#a050eaee328c56a3730f5abbf25035adf612d6f0" - integrity sha512-/EOgjXTzR+I1OK9KA7L3yzQ2RGSDW97+n3cQrSdLAUF+tnRvMJS0nytDlSJSRK2hb8/clFMaofZHCC81aUkYUg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.5.tgz#3a7fd86dbcadc31c11be5b2b31c8cf8ac3035540" - integrity sha512-vIY1wT4RHoJAPhVK11Q5MS71iZbwsmM/0VTBvvs04mjRSSi6xhdyRYkA+l+P49fnOwhZNaaK19XwQdVVScDuhA== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.5.tgz#91f2c8fe6a57fc5789ae8fe9c206b2c159e55880" - integrity sha512-LdydeJIbw5k1k7FkWaI1lTectZeTXmEIoccJtj9Qx4N9yGt40wGsjz9SOvUdJ0IKAgntIWNQP8ohWiBPgzT7Xg== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.5.tgz#9a7bd990d02edc8128a5be3233b6fbb5669b15b8" - integrity sha512-LdkSkZQfN4hugcGNxBkje0+eQomivwNFbnAkMFQbvCwYLwKB2yvk7GCemEetW1piqvyrUGz4jqhtunjoXps5JA== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.0.5" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.5.tgz#9b79935970d2d4074994240b5deb01dff5987c0a" - integrity sha512-jIWRBEG/NlhaE43i6Xzr18XJ5aTWA+WWslf7WgNOArG5slGBbH4lLLja4HswLP3NGdSmzIyHJR1p9XQ82nBkbQ== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.0.5" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.5.tgz#0a0a39e8fa54522bf8a09ce76ff3927207a79491" - integrity sha512-HClQ2tcZuWBAChf9oOJOtMP1zHv8jqloPEcw3iqbhS/tWZBw5VQ4TO+BVfZsqHDXZNnWSmR6/2xiKsK32nliew== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.5.tgz#62d58c34f0abf268e30bdf788dfbd3f45b19b412" - integrity sha512-/+31Vtw1S9vvuNy/rN/Q6awkgUaYNNYXESgfvqI0pqIkvlPgigvS8E68mHqGzsxyRqdZisI6JGd94AF+vJD7sQ== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.5.tgz#9d2ea9b2509448ee163a163298a7a09480865f78" - integrity sha512-RKgvQciaMml33NvzA28aYyfNI+WQHRfKLFWvOvqc8qO4C3BvyrnwepuzZcnI/9UsELKLSLoFrfk3rJHhxnTJhg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.5.tgz#b8912e1c4cfdd4fdff6ad4aa7ee8693b55a3be1f" - integrity sha512-kPifDA+1ErbeQBwn+BzwtWuTHXzBke/EMCmITuj59plM/60gZ1ZfVm8EzzTmKS7iLaVVeOqTKf0vEQTobNYffw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.0.5" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.5.tgz#55e36b3c832a35447fac69af312dedf1dee22279" - integrity sha512-fdqxc5CJ6TpUAF8+NEsKCmXvvZiOPR5bzczcfvfovxLOjvHvdEO74XPGjsjlBNTdaKMhmNGZRK4JRLUz7fvTng== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.5.tgz#2e43ac19a8df6e1e0220d6d4991d33a93d890754" - integrity sha512-2d2l+smWKAVP4/b6GSO+8rmJ7pFXiUewpBDwkHm5qgkK6n6UGqIcK9lIgiS2YQ6rmL6qdtuNhhqtC9GF2TF2kQ== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.5.tgz#d5d9f14095d76239bc0e6f9804c24d1f92ffcab4" - integrity sha512-+B2vxfPwxoIIb8Ac8eHi6OgAn0qbjmPZuun7/es0/ouYYTbEhvhTAD20X3PGZlHrIYeDyS2ansuXm8gJI+/BzA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.5.tgz#083042c939ea58bf719e35114a6c8efb07b68688" - integrity sha512-0UVHO2CO89t34O35OA3JzWGWLBpg+e1NQXSfVtK90nmg/QmzGkHVM9m7Su0jjLNBt3N5EA5OPOhriot3bCKItw== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.5.tgz#f908289927a63fd76fb8f60b00a37747d9edbe39" - integrity sha512-3GoXA8VtGyZWKiqaPCipPXYLLM7h2Y5Oecq5c5YlMQyW2akv7uHiQQF2GZW/nVsFu3HBbGTOWpKRRmVk3PEO9Q== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.5.tgz#79d7754713c64a6549da520dc6867ef3e3dd0350" - integrity sha512-VbeSHdAdDy8exrjplHMMhLVV4oG7Gq9zBb5M52f0sIkA4DkXFhksXHcHNoOCfhaKAXpenGA03Z9GJewZ3MTpMw== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.5.tgz#e3b92d23cf3633983980b6255bf63c43d422ceab" - integrity sha512-OUt4ANgj14GESfRG7+UqdONS8daOu+8x2OZDWv98hriuX0uCVBjwB2J0jRI/n653C68Mi0yHixGONDv9OLy/lg== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.5.tgz#b191a7c43f3dc77645fe27273f2f6619f7d4eb31" - integrity sha512-QhvAOU4C+Qxh/gFuCSGZtLU4KwVhdv/jtK8ovWyqbGvQMCCIimqa8BFKIz0H5XWIJhHwwWblkpjICWgjWh6uXw== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.5.tgz#fc83b678f5be3a22040d0421ad9db5b2eac9d4fc" - integrity sha512-qgi2DEu6FYpN/DYcOZrmXsAr1HqcIKMhBWeXgjfoYUIl/K5+OuUgbQ69D/jdc0jz8HU9a4Cw7Q8hhe4CkgssEw== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.5.tgz#66b3da953500e73ff1f23d1b41168cde8216ce49" - integrity sha512-X9V1xLIEazItaf93nFSA4p94WT6QK3yA4eIyvU7GyyEkkOQdaakNwPbRwy930sd+I+/oXnIqM1vDsJu9QDhgvg== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index 14efeda0d6..ecc40c2236 100644 --- a/modules/cms-kit/angular/package.json +++ b/modules/cms-kit/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.0.5", - "@abp/ng.identity": "~3.0.5", - "@abp/ng.setting-management": "~3.0.5", - "@abp/ng.tenant-management": "~3.0.5", - "@abp/ng.theme.basic": "~3.0.5", + "@abp/ng.account": "~3.1.0-rc.2", + "@abp/ng.identity": "~3.1.0-rc.2", + "@abp/ng.setting-management": "~3.1.0-rc.2", + "@abp/ng.tenant-management": "~3.1.0-rc.2", + "@abp/ng.theme.basic": "~3.1.0-rc.2", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index e61eba0c89..0f6c8018c3 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=3.0.5", - "@abp/ng.theme.shared": ">=3.0.5" + "@abp/ng.core": ">=3.1.0-rc.2", + "@abp/ng.theme.shared": ">=3.1.0-rc.2" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index 55812dc3ab..2aff27f377 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.5" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/core/abp.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/core/abp.js index 41837d2368..20bd92147a 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/core/abp.js +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/core/abp.js @@ -706,18 +706,18 @@ var abp = abp || {}; var toLocal = function (date) { return new Date( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - date.getUTCHours(), - date.getUTCMinutes(), - date.getUTCSeconds(), - date.getUTCMilliseconds() + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() ); }; var toUtc = function (date) { - Date.UTC( + return Date.UTC( date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js index e6aff047f7..3087635e7d 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js @@ -79,13 +79,15 @@ var abp = abp || {}; } }; - new MutationObserver(mutationObserverCallback).observe( - $('body')[0], - { - subtree: true, - childList: true - } - ); + $(function(){ + new MutationObserver(mutationObserverCallback).observe( + $('body')[0], + { + subtree: true, + childList: true + } + ); + }); // AJAX /////////////////////////////////////////////////////////////////// diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index a583172e87..c836cc49cb 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.5.tgz#c146f20226522f0305cc0fa31cfcf9d39be78901" - integrity sha512-ptNhD4xV2wSLW7vQ5KUgaRiH5Ov1OscZW2ZEoivnt3kqgtIC3DGw+SiE9vjFCvyY83fjRkIlW2PIfQxSySbteQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.5" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.5.tgz#5b370902cf229963f9aa10dd64482d57299dde76" - integrity sha512-iobAH39xrCdnqdaABaiYZg4lqNSOwPkMCLnyc+ytxOMbu/YnNKahXPmRhgd8dR/l+iQY1+6T4SWfLdGswi3gAg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.0.5" - "@abp/bootstrap" "~3.0.5" - "@abp/bootstrap-datepicker" "~3.0.5" - "@abp/datatables.net-bs4" "~3.0.5" - "@abp/font-awesome" "~3.0.5" - "@abp/jquery-form" "~3.0.5" - "@abp/jquery-validation-unobtrusive" "~3.0.5" - "@abp/lodash" "~3.0.5" - "@abp/luxon" "~3.0.5" - "@abp/malihu-custom-scrollbar-plugin" "~3.0.5" - "@abp/select2" "~3.0.5" - "@abp/sweetalert" "~3.0.5" - "@abp/timeago" "~3.0.5" - "@abp/toastr" "~3.0.5" - -"@abp/aspnetcore.mvc.ui@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.5.tgz#a050eaee328c56a3730f5abbf25035adf612d6f0" - integrity sha512-/EOgjXTzR+I1OK9KA7L3yzQ2RGSDW97+n3cQrSdLAUF+tnRvMJS0nytDlSJSRK2hb8/clFMaofZHCC81aUkYUg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.5.tgz#3a7fd86dbcadc31c11be5b2b31c8cf8ac3035540" - integrity sha512-vIY1wT4RHoJAPhVK11Q5MS71iZbwsmM/0VTBvvs04mjRSSi6xhdyRYkA+l+P49fnOwhZNaaK19XwQdVVScDuhA== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.5.tgz#91f2c8fe6a57fc5789ae8fe9c206b2c159e55880" - integrity sha512-LdydeJIbw5k1k7FkWaI1lTectZeTXmEIoccJtj9Qx4N9yGt40wGsjz9SOvUdJ0IKAgntIWNQP8ohWiBPgzT7Xg== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.5.tgz#9a7bd990d02edc8128a5be3233b6fbb5669b15b8" - integrity sha512-LdkSkZQfN4hugcGNxBkje0+eQomivwNFbnAkMFQbvCwYLwKB2yvk7GCemEetW1piqvyrUGz4jqhtunjoXps5JA== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.0.5" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.5.tgz#9b79935970d2d4074994240b5deb01dff5987c0a" - integrity sha512-jIWRBEG/NlhaE43i6Xzr18XJ5aTWA+WWslf7WgNOArG5slGBbH4lLLja4HswLP3NGdSmzIyHJR1p9XQ82nBkbQ== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.0.5" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.5.tgz#0a0a39e8fa54522bf8a09ce76ff3927207a79491" - integrity sha512-HClQ2tcZuWBAChf9oOJOtMP1zHv8jqloPEcw3iqbhS/tWZBw5VQ4TO+BVfZsqHDXZNnWSmR6/2xiKsK32nliew== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.5.tgz#62d58c34f0abf268e30bdf788dfbd3f45b19b412" - integrity sha512-/+31Vtw1S9vvuNy/rN/Q6awkgUaYNNYXESgfvqI0pqIkvlPgigvS8E68mHqGzsxyRqdZisI6JGd94AF+vJD7sQ== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.5.tgz#9d2ea9b2509448ee163a163298a7a09480865f78" - integrity sha512-RKgvQciaMml33NvzA28aYyfNI+WQHRfKLFWvOvqc8qO4C3BvyrnwepuzZcnI/9UsELKLSLoFrfk3rJHhxnTJhg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.5.tgz#b8912e1c4cfdd4fdff6ad4aa7ee8693b55a3be1f" - integrity sha512-kPifDA+1ErbeQBwn+BzwtWuTHXzBke/EMCmITuj59plM/60gZ1ZfVm8EzzTmKS7iLaVVeOqTKf0vEQTobNYffw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.0.5" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.5.tgz#55e36b3c832a35447fac69af312dedf1dee22279" - integrity sha512-fdqxc5CJ6TpUAF8+NEsKCmXvvZiOPR5bzczcfvfovxLOjvHvdEO74XPGjsjlBNTdaKMhmNGZRK4JRLUz7fvTng== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.5.tgz#2e43ac19a8df6e1e0220d6d4991d33a93d890754" - integrity sha512-2d2l+smWKAVP4/b6GSO+8rmJ7pFXiUewpBDwkHm5qgkK6n6UGqIcK9lIgiS2YQ6rmL6qdtuNhhqtC9GF2TF2kQ== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.5.tgz#d5d9f14095d76239bc0e6f9804c24d1f92ffcab4" - integrity sha512-+B2vxfPwxoIIb8Ac8eHi6OgAn0qbjmPZuun7/es0/ouYYTbEhvhTAD20X3PGZlHrIYeDyS2ansuXm8gJI+/BzA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.5.tgz#083042c939ea58bf719e35114a6c8efb07b68688" - integrity sha512-0UVHO2CO89t34O35OA3JzWGWLBpg+e1NQXSfVtK90nmg/QmzGkHVM9m7Su0jjLNBt3N5EA5OPOhriot3bCKItw== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.5.tgz#f908289927a63fd76fb8f60b00a37747d9edbe39" - integrity sha512-3GoXA8VtGyZWKiqaPCipPXYLLM7h2Y5Oecq5c5YlMQyW2akv7uHiQQF2GZW/nVsFu3HBbGTOWpKRRmVk3PEO9Q== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.5.tgz#79d7754713c64a6549da520dc6867ef3e3dd0350" - integrity sha512-VbeSHdAdDy8exrjplHMMhLVV4oG7Gq9zBb5M52f0sIkA4DkXFhksXHcHNoOCfhaKAXpenGA03Z9GJewZ3MTpMw== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.5.tgz#e3b92d23cf3633983980b6255bf63c43d422ceab" - integrity sha512-OUt4ANgj14GESfRG7+UqdONS8daOu+8x2OZDWv98hriuX0uCVBjwB2J0jRI/n653C68Mi0yHixGONDv9OLy/lg== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.5.tgz#b191a7c43f3dc77645fe27273f2f6619f7d4eb31" - integrity sha512-QhvAOU4C+Qxh/gFuCSGZtLU4KwVhdv/jtK8ovWyqbGvQMCCIimqa8BFKIz0H5XWIJhHwwWblkpjICWgjWh6uXw== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.5.tgz#fc83b678f5be3a22040d0421ad9db5b2eac9d4fc" - integrity sha512-qgi2DEu6FYpN/DYcOZrmXsAr1HqcIKMhBWeXgjfoYUIl/K5+OuUgbQ69D/jdc0jz8HU9a4Cw7Q8hhe4CkgssEw== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.5.tgz#66b3da953500e73ff1f23d1b41168cde8216ce49" - integrity sha512-X9V1xLIEazItaf93nFSA4p94WT6QK3yA4eIyvU7GyyEkkOQdaakNwPbRwy930sd+I+/oXnIqM1vDsJu9QDhgvg== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json index 5ffe5c0500..7103162cc8 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.5" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/core/abp.js b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/core/abp.js index 41837d2368..20bd92147a 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/core/abp.js +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/core/abp.js @@ -706,18 +706,18 @@ var abp = abp || {}; var toLocal = function (date) { return new Date( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - date.getUTCHours(), - date.getUTCMinutes(), - date.getUTCSeconds(), - date.getUTCMilliseconds() + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() ); }; var toUtc = function (date) { - Date.UTC( + return Date.UTC( date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/jquery/abp.jquery.js b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/jquery/abp.jquery.js index e6aff047f7..3087635e7d 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/jquery/abp.jquery.js @@ -79,13 +79,15 @@ var abp = abp || {}; } }; - new MutationObserver(mutationObserverCallback).observe( - $('body')[0], - { - subtree: true, - childList: true - } - ); + $(function(){ + new MutationObserver(mutationObserverCallback).observe( + $('body')[0], + { + subtree: true, + childList: true + } + ); + }); // AJAX /////////////////////////////////////////////////////////////////// diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index ade6c69acd..be0f989fd7 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.5.tgz#c146f20226522f0305cc0fa31cfcf9d39be78901" - integrity sha512-ptNhD4xV2wSLW7vQ5KUgaRiH5Ov1OscZW2ZEoivnt3kqgtIC3DGw+SiE9vjFCvyY83fjRkIlW2PIfQxSySbteQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.5" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.5.tgz#5b370902cf229963f9aa10dd64482d57299dde76" - integrity sha512-iobAH39xrCdnqdaABaiYZg4lqNSOwPkMCLnyc+ytxOMbu/YnNKahXPmRhgd8dR/l+iQY1+6T4SWfLdGswi3gAg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.0.5" - "@abp/bootstrap" "~3.0.5" - "@abp/bootstrap-datepicker" "~3.0.5" - "@abp/datatables.net-bs4" "~3.0.5" - "@abp/font-awesome" "~3.0.5" - "@abp/jquery-form" "~3.0.5" - "@abp/jquery-validation-unobtrusive" "~3.0.5" - "@abp/lodash" "~3.0.5" - "@abp/luxon" "~3.0.5" - "@abp/malihu-custom-scrollbar-plugin" "~3.0.5" - "@abp/select2" "~3.0.5" - "@abp/sweetalert" "~3.0.5" - "@abp/timeago" "~3.0.5" - "@abp/toastr" "~3.0.5" - -"@abp/aspnetcore.mvc.ui@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.5.tgz#a050eaee328c56a3730f5abbf25035adf612d6f0" - integrity sha512-/EOgjXTzR+I1OK9KA7L3yzQ2RGSDW97+n3cQrSdLAUF+tnRvMJS0nytDlSJSRK2hb8/clFMaofZHCC81aUkYUg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.5.tgz#3a7fd86dbcadc31c11be5b2b31c8cf8ac3035540" - integrity sha512-vIY1wT4RHoJAPhVK11Q5MS71iZbwsmM/0VTBvvs04mjRSSi6xhdyRYkA+l+P49fnOwhZNaaK19XwQdVVScDuhA== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.5.tgz#91f2c8fe6a57fc5789ae8fe9c206b2c159e55880" - integrity sha512-LdydeJIbw5k1k7FkWaI1lTectZeTXmEIoccJtj9Qx4N9yGt40wGsjz9SOvUdJ0IKAgntIWNQP8ohWiBPgzT7Xg== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.5.tgz#9a7bd990d02edc8128a5be3233b6fbb5669b15b8" - integrity sha512-LdkSkZQfN4hugcGNxBkje0+eQomivwNFbnAkMFQbvCwYLwKB2yvk7GCemEetW1piqvyrUGz4jqhtunjoXps5JA== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.0.5" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.5.tgz#9b79935970d2d4074994240b5deb01dff5987c0a" - integrity sha512-jIWRBEG/NlhaE43i6Xzr18XJ5aTWA+WWslf7WgNOArG5slGBbH4lLLja4HswLP3NGdSmzIyHJR1p9XQ82nBkbQ== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.0.5" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.5.tgz#0a0a39e8fa54522bf8a09ce76ff3927207a79491" - integrity sha512-HClQ2tcZuWBAChf9oOJOtMP1zHv8jqloPEcw3iqbhS/tWZBw5VQ4TO+BVfZsqHDXZNnWSmR6/2xiKsK32nliew== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.5.tgz#62d58c34f0abf268e30bdf788dfbd3f45b19b412" - integrity sha512-/+31Vtw1S9vvuNy/rN/Q6awkgUaYNNYXESgfvqI0pqIkvlPgigvS8E68mHqGzsxyRqdZisI6JGd94AF+vJD7sQ== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.5.tgz#9d2ea9b2509448ee163a163298a7a09480865f78" - integrity sha512-RKgvQciaMml33NvzA28aYyfNI+WQHRfKLFWvOvqc8qO4C3BvyrnwepuzZcnI/9UsELKLSLoFrfk3rJHhxnTJhg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.5.tgz#b8912e1c4cfdd4fdff6ad4aa7ee8693b55a3be1f" - integrity sha512-kPifDA+1ErbeQBwn+BzwtWuTHXzBke/EMCmITuj59plM/60gZ1ZfVm8EzzTmKS7iLaVVeOqTKf0vEQTobNYffw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.0.5" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.5.tgz#55e36b3c832a35447fac69af312dedf1dee22279" - integrity sha512-fdqxc5CJ6TpUAF8+NEsKCmXvvZiOPR5bzczcfvfovxLOjvHvdEO74XPGjsjlBNTdaKMhmNGZRK4JRLUz7fvTng== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.5.tgz#2e43ac19a8df6e1e0220d6d4991d33a93d890754" - integrity sha512-2d2l+smWKAVP4/b6GSO+8rmJ7pFXiUewpBDwkHm5qgkK6n6UGqIcK9lIgiS2YQ6rmL6qdtuNhhqtC9GF2TF2kQ== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.5.tgz#d5d9f14095d76239bc0e6f9804c24d1f92ffcab4" - integrity sha512-+B2vxfPwxoIIb8Ac8eHi6OgAn0qbjmPZuun7/es0/ouYYTbEhvhTAD20X3PGZlHrIYeDyS2ansuXm8gJI+/BzA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.5.tgz#083042c939ea58bf719e35114a6c8efb07b68688" - integrity sha512-0UVHO2CO89t34O35OA3JzWGWLBpg+e1NQXSfVtK90nmg/QmzGkHVM9m7Su0jjLNBt3N5EA5OPOhriot3bCKItw== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.5.tgz#f908289927a63fd76fb8f60b00a37747d9edbe39" - integrity sha512-3GoXA8VtGyZWKiqaPCipPXYLLM7h2Y5Oecq5c5YlMQyW2akv7uHiQQF2GZW/nVsFu3HBbGTOWpKRRmVk3PEO9Q== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.5.tgz#79d7754713c64a6549da520dc6867ef3e3dd0350" - integrity sha512-VbeSHdAdDy8exrjplHMMhLVV4oG7Gq9zBb5M52f0sIkA4DkXFhksXHcHNoOCfhaKAXpenGA03Z9GJewZ3MTpMw== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.5.tgz#e3b92d23cf3633983980b6255bf63c43d422ceab" - integrity sha512-OUt4ANgj14GESfRG7+UqdONS8daOu+8x2OZDWv98hriuX0uCVBjwB2J0jRI/n653C68Mi0yHixGONDv9OLy/lg== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.5.tgz#b191a7c43f3dc77645fe27273f2f6619f7d4eb31" - integrity sha512-QhvAOU4C+Qxh/gFuCSGZtLU4KwVhdv/jtK8ovWyqbGvQMCCIimqa8BFKIz0H5XWIJhHwwWblkpjICWgjWh6uXw== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.5.tgz#fc83b678f5be3a22040d0421ad9db5b2eac9d4fc" - integrity sha512-qgi2DEu6FYpN/DYcOZrmXsAr1HqcIKMhBWeXgjfoYUIl/K5+OuUgbQ69D/jdc0jz8HU9a4Cw7Q8hhe4CkgssEw== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.5.tgz#66b3da953500e73ff1f23d1b41168cde8216ce49" - integrity sha512-X9V1xLIEazItaf93nFSA4p94WT6QK3yA4eIyvU7GyyEkkOQdaakNwPbRwy930sd+I+/oXnIqM1vDsJu9QDhgvg== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index 5ffe5c0500..7103162cc8 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.5" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/core/abp.js b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/core/abp.js index 41837d2368..20bd92147a 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/core/abp.js +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/core/abp.js @@ -706,18 +706,18 @@ var abp = abp || {}; var toLocal = function (date) { return new Date( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - date.getUTCHours(), - date.getUTCMinutes(), - date.getUTCSeconds(), - date.getUTCMilliseconds() + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() ); }; var toUtc = function (date) { - Date.UTC( + return Date.UTC( date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/jquery/abp.jquery.js b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/jquery/abp.jquery.js index e6aff047f7..3087635e7d 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/jquery/abp.jquery.js @@ -79,13 +79,15 @@ var abp = abp || {}; } }; - new MutationObserver(mutationObserverCallback).observe( - $('body')[0], - { - subtree: true, - childList: true - } - ); + $(function(){ + new MutationObserver(mutationObserverCallback).observe( + $('body')[0], + { + subtree: true, + childList: true + } + ); + }); // AJAX /////////////////////////////////////////////////////////////////// diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index 3261b074f0..f1a5b49588 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.5.tgz#c146f20226522f0305cc0fa31cfcf9d39be78901" - integrity sha512-ptNhD4xV2wSLW7vQ5KUgaRiH5Ov1OscZW2ZEoivnt3kqgtIC3DGw+SiE9vjFCvyY83fjRkIlW2PIfQxSySbteQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.5" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.5.tgz#5b370902cf229963f9aa10dd64482d57299dde76" - integrity sha512-iobAH39xrCdnqdaABaiYZg4lqNSOwPkMCLnyc+ytxOMbu/YnNKahXPmRhgd8dR/l+iQY1+6T4SWfLdGswi3gAg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.0.5" - "@abp/bootstrap" "~3.0.5" - "@abp/bootstrap-datepicker" "~3.0.5" - "@abp/datatables.net-bs4" "~3.0.5" - "@abp/font-awesome" "~3.0.5" - "@abp/jquery-form" "~3.0.5" - "@abp/jquery-validation-unobtrusive" "~3.0.5" - "@abp/lodash" "~3.0.5" - "@abp/luxon" "~3.0.5" - "@abp/malihu-custom-scrollbar-plugin" "~3.0.5" - "@abp/select2" "~3.0.5" - "@abp/sweetalert" "~3.0.5" - "@abp/timeago" "~3.0.5" - "@abp/toastr" "~3.0.5" - -"@abp/aspnetcore.mvc.ui@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.5.tgz#a050eaee328c56a3730f5abbf25035adf612d6f0" - integrity sha512-/EOgjXTzR+I1OK9KA7L3yzQ2RGSDW97+n3cQrSdLAUF+tnRvMJS0nytDlSJSRK2hb8/clFMaofZHCC81aUkYUg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.5.tgz#3a7fd86dbcadc31c11be5b2b31c8cf8ac3035540" - integrity sha512-vIY1wT4RHoJAPhVK11Q5MS71iZbwsmM/0VTBvvs04mjRSSi6xhdyRYkA+l+P49fnOwhZNaaK19XwQdVVScDuhA== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.5.tgz#91f2c8fe6a57fc5789ae8fe9c206b2c159e55880" - integrity sha512-LdydeJIbw5k1k7FkWaI1lTectZeTXmEIoccJtj9Qx4N9yGt40wGsjz9SOvUdJ0IKAgntIWNQP8ohWiBPgzT7Xg== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.5.tgz#9a7bd990d02edc8128a5be3233b6fbb5669b15b8" - integrity sha512-LdkSkZQfN4hugcGNxBkje0+eQomivwNFbnAkMFQbvCwYLwKB2yvk7GCemEetW1piqvyrUGz4jqhtunjoXps5JA== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.0.5" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.5.tgz#9b79935970d2d4074994240b5deb01dff5987c0a" - integrity sha512-jIWRBEG/NlhaE43i6Xzr18XJ5aTWA+WWslf7WgNOArG5slGBbH4lLLja4HswLP3NGdSmzIyHJR1p9XQ82nBkbQ== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.0.5" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.5.tgz#0a0a39e8fa54522bf8a09ce76ff3927207a79491" - integrity sha512-HClQ2tcZuWBAChf9oOJOtMP1zHv8jqloPEcw3iqbhS/tWZBw5VQ4TO+BVfZsqHDXZNnWSmR6/2xiKsK32nliew== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.5.tgz#62d58c34f0abf268e30bdf788dfbd3f45b19b412" - integrity sha512-/+31Vtw1S9vvuNy/rN/Q6awkgUaYNNYXESgfvqI0pqIkvlPgigvS8E68mHqGzsxyRqdZisI6JGd94AF+vJD7sQ== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.5.tgz#9d2ea9b2509448ee163a163298a7a09480865f78" - integrity sha512-RKgvQciaMml33NvzA28aYyfNI+WQHRfKLFWvOvqc8qO4C3BvyrnwepuzZcnI/9UsELKLSLoFrfk3rJHhxnTJhg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.5.tgz#b8912e1c4cfdd4fdff6ad4aa7ee8693b55a3be1f" - integrity sha512-kPifDA+1ErbeQBwn+BzwtWuTHXzBke/EMCmITuj59plM/60gZ1ZfVm8EzzTmKS7iLaVVeOqTKf0vEQTobNYffw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.0.5" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.5.tgz#55e36b3c832a35447fac69af312dedf1dee22279" - integrity sha512-fdqxc5CJ6TpUAF8+NEsKCmXvvZiOPR5bzczcfvfovxLOjvHvdEO74XPGjsjlBNTdaKMhmNGZRK4JRLUz7fvTng== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.5.tgz#2e43ac19a8df6e1e0220d6d4991d33a93d890754" - integrity sha512-2d2l+smWKAVP4/b6GSO+8rmJ7pFXiUewpBDwkHm5qgkK6n6UGqIcK9lIgiS2YQ6rmL6qdtuNhhqtC9GF2TF2kQ== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.5.tgz#d5d9f14095d76239bc0e6f9804c24d1f92ffcab4" - integrity sha512-+B2vxfPwxoIIb8Ac8eHi6OgAn0qbjmPZuun7/es0/ouYYTbEhvhTAD20X3PGZlHrIYeDyS2ansuXm8gJI+/BzA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.5.tgz#083042c939ea58bf719e35114a6c8efb07b68688" - integrity sha512-0UVHO2CO89t34O35OA3JzWGWLBpg+e1NQXSfVtK90nmg/QmzGkHVM9m7Su0jjLNBt3N5EA5OPOhriot3bCKItw== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.5.tgz#f908289927a63fd76fb8f60b00a37747d9edbe39" - integrity sha512-3GoXA8VtGyZWKiqaPCipPXYLLM7h2Y5Oecq5c5YlMQyW2akv7uHiQQF2GZW/nVsFu3HBbGTOWpKRRmVk3PEO9Q== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.5.tgz#79d7754713c64a6549da520dc6867ef3e3dd0350" - integrity sha512-VbeSHdAdDy8exrjplHMMhLVV4oG7Gq9zBb5M52f0sIkA4DkXFhksXHcHNoOCfhaKAXpenGA03Z9GJewZ3MTpMw== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.5.tgz#e3b92d23cf3633983980b6255bf63c43d422ceab" - integrity sha512-OUt4ANgj14GESfRG7+UqdONS8daOu+8x2OZDWv98hriuX0uCVBjwB2J0jRI/n653C68Mi0yHixGONDv9OLy/lg== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.5.tgz#b191a7c43f3dc77645fe27273f2f6619f7d4eb31" - integrity sha512-QhvAOU4C+Qxh/gFuCSGZtLU4KwVhdv/jtK8ovWyqbGvQMCCIimqa8BFKIz0H5XWIJhHwwWblkpjICWgjWh6uXw== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.5.tgz#fc83b678f5be3a22040d0421ad9db5b2eac9d4fc" - integrity sha512-qgi2DEu6FYpN/DYcOZrmXsAr1HqcIKMhBWeXgjfoYUIl/K5+OuUgbQ69D/jdc0jz8HU9a4Cw7Q8hhe4CkgssEw== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.5.tgz#66b3da953500e73ff1f23d1b41168cde8216ce49" - integrity sha512-X9V1xLIEazItaf93nFSA4p94WT6QK3yA4eIyvU7GyyEkkOQdaakNwPbRwy930sd+I+/oXnIqM1vDsJu9QDhgvg== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index c6b5ba0dba..0db7e0be4e 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.5", - "@abp/docs": "^3.0.5" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2", + "@abp/docs": "^3.1.0-rc.2" } } diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/core/abp.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/core/abp.js index 41837d2368..20bd92147a 100644 --- a/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/core/abp.js +++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/core/abp.js @@ -706,18 +706,18 @@ var abp = abp || {}; var toLocal = function (date) { return new Date( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - date.getUTCHours(), - date.getUTCMinutes(), - date.getUTCSeconds(), - date.getUTCMilliseconds() + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + date.getMilliseconds() ); }; var toUtc = function (date) { - Date.UTC( + return Date.UTC( date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/jquery/abp.jquery.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/jquery/abp.jquery.js index e6aff047f7..3087635e7d 100644 --- a/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/jquery/abp.jquery.js @@ -79,13 +79,15 @@ var abp = abp || {}; } }; - new MutationObserver(mutationObserverCallback).observe( - $('body')[0], - { - subtree: true, - childList: true - } - ); + $(function(){ + new MutationObserver(mutationObserverCallback).observe( + $('body')[0], + { + subtree: true, + childList: true + } + ); + }); // AJAX /////////////////////////////////////////////////////////////////// diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index 4c93967952..22df5982ca 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,45 +2,45 @@ # yarn lockfile v1 -"@abp/anchor-js@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.0.5.tgz#e1affea2e21370562b244f81ce8911d3d36f8d55" - integrity sha512-068PVUu/Zu1zQNgWsJXhUmSIm/HRA4Mx6VXxlNL+qiCLffg8AzRuj4rZc+UaYJieDmJDJc0dlWgiyUFpuvzZ8A== +"@abp/anchor-js@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.1.0-rc.2.tgz#3f445de4884bbe4a7be2bada7db56a376e9fba5e" + integrity sha512-qBFBy8tcinL7YWFy7iPprXTaFowgc7cvyO8mEKG2HG6/LdObm6KBASgAXGLRv2Jhxbdfyrisbcr+TdM8gzrWog== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" anchor-js "^4.2.2" -"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.5.tgz#c146f20226522f0305cc0fa31cfcf9d39be78901" - integrity sha512-ptNhD4xV2wSLW7vQ5KUgaRiH5Ov1OscZW2ZEoivnt3kqgtIC3DGw+SiE9vjFCvyY83fjRkIlW2PIfQxSySbteQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.5" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.5.tgz#5b370902cf229963f9aa10dd64482d57299dde76" - integrity sha512-iobAH39xrCdnqdaABaiYZg4lqNSOwPkMCLnyc+ytxOMbu/YnNKahXPmRhgd8dR/l+iQY1+6T4SWfLdGswi3gAg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.0.5" - "@abp/bootstrap" "~3.0.5" - "@abp/bootstrap-datepicker" "~3.0.5" - "@abp/datatables.net-bs4" "~3.0.5" - "@abp/font-awesome" "~3.0.5" - "@abp/jquery-form" "~3.0.5" - "@abp/jquery-validation-unobtrusive" "~3.0.5" - "@abp/lodash" "~3.0.5" - "@abp/luxon" "~3.0.5" - "@abp/malihu-custom-scrollbar-plugin" "~3.0.5" - "@abp/select2" "~3.0.5" - "@abp/sweetalert" "~3.0.5" - "@abp/timeago" "~3.0.5" - "@abp/toastr" "~3.0.5" - -"@abp/aspnetcore.mvc.ui@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.5.tgz#a050eaee328c56a3730f5abbf25035adf612d6f0" - integrity sha512-/EOgjXTzR+I1OK9KA7L3yzQ2RGSDW97+n3cQrSdLAUF+tnRvMJS0nytDlSJSRK2hb8/clFMaofZHCC81aUkYUg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -49,180 +49,180 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.5.tgz#3a7fd86dbcadc31c11be5b2b31c8cf8ac3035540" - integrity sha512-vIY1wT4RHoJAPhVK11Q5MS71iZbwsmM/0VTBvvs04mjRSSi6xhdyRYkA+l+P49fnOwhZNaaK19XwQdVVScDuhA== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.5.tgz#91f2c8fe6a57fc5789ae8fe9c206b2c159e55880" - integrity sha512-LdydeJIbw5k1k7FkWaI1lTectZeTXmEIoccJtj9Qx4N9yGt40wGsjz9SOvUdJ0IKAgntIWNQP8ohWiBPgzT7Xg== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/clipboard@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.0.5.tgz#7ceadd21360db11c91582a532029bfe65d10a930" - integrity sha512-iq455C096L5D+b6IrWkMxA9mbpggBNZ1kWfCQ3rhIjo0qbOGrvdGB3uQ+BqRS9Ni9ku7vBb2COldouIC9KOp5A== +"@abp/clipboard@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.2.tgz#73a8dbc1f98cfb64d374b463dcd16b186bb694bb" + integrity sha512-Q1Z9pcs3gpptjE8Cjm/38bPKwKncjoVYSO0TknyEZLM3QG+PtZwa9UCkaK+Truz/U3QoZqbPuNbPKr5cz7o+lw== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" clipboard "^2.0.6" -"@abp/core@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.5.tgz#9a7bd990d02edc8128a5be3233b6fbb5669b15b8" - integrity sha512-LdkSkZQfN4hugcGNxBkje0+eQomivwNFbnAkMFQbvCwYLwKB2yvk7GCemEetW1piqvyrUGz4jqhtunjoXps5JA== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.0.5" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.5.tgz#9b79935970d2d4074994240b5deb01dff5987c0a" - integrity sha512-jIWRBEG/NlhaE43i6Xzr18XJ5aTWA+WWslf7WgNOArG5slGBbH4lLLja4HswLP3NGdSmzIyHJR1p9XQ82nBkbQ== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.0.5" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.5.tgz#0a0a39e8fa54522bf8a09ce76ff3927207a79491" - integrity sha512-HClQ2tcZuWBAChf9oOJOtMP1zHv8jqloPEcw3iqbhS/tWZBw5VQ4TO+BVfZsqHDXZNnWSmR6/2xiKsK32nliew== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/docs@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.0.5.tgz#733211ea72f3064ea5c23ed36a16c7f8b0ef5d8b" - integrity sha512-LQDHz6mE3ptP1AmpK+IEoY6edQB/t7Hu5ueLdtNHqTJWkwW7ngXOaECbkC2KVPywLqbXw0vzHBw2OnCVSKxtyw== +"@abp/docs@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.1.0-rc.2.tgz#d46ec3c7b71fb7ad35e076ea6fd0b0bb9e09d27f" + integrity sha512-jGqxJTOQQb+xxNhasvy4S5qHGOesZwL4BruVdUXVbhUqc1M2lof6iJF4GxYaTndPigg4rOUpc+4WcSD8LUqWQw== dependencies: - "@abp/anchor-js" "~3.0.5" - "@abp/clipboard" "~3.0.5" - "@abp/malihu-custom-scrollbar-plugin" "~3.0.5" - "@abp/popper.js" "~3.0.5" - "@abp/prismjs" "~3.0.5" + "@abp/anchor-js" "~3.1.0-rc.2" + "@abp/clipboard" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/popper.js" "~3.1.0-rc.2" + "@abp/prismjs" "~3.1.0-rc.2" -"@abp/font-awesome@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.5.tgz#62d58c34f0abf268e30bdf788dfbd3f45b19b412" - integrity sha512-/+31Vtw1S9vvuNy/rN/Q6awkgUaYNNYXESgfvqI0pqIkvlPgigvS8E68mHqGzsxyRqdZisI6JGd94AF+vJD7sQ== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.5.tgz#9d2ea9b2509448ee163a163298a7a09480865f78" - integrity sha512-RKgvQciaMml33NvzA28aYyfNI+WQHRfKLFWvOvqc8qO4C3BvyrnwepuzZcnI/9UsELKLSLoFrfk3rJHhxnTJhg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.5.tgz#b8912e1c4cfdd4fdff6ad4aa7ee8693b55a3be1f" - integrity sha512-kPifDA+1ErbeQBwn+BzwtWuTHXzBke/EMCmITuj59plM/60gZ1ZfVm8EzzTmKS7iLaVVeOqTKf0vEQTobNYffw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.0.5" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.5.tgz#55e36b3c832a35447fac69af312dedf1dee22279" - integrity sha512-fdqxc5CJ6TpUAF8+NEsKCmXvvZiOPR5bzczcfvfovxLOjvHvdEO74XPGjsjlBNTdaKMhmNGZRK4JRLUz7fvTng== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.5.tgz#2e43ac19a8df6e1e0220d6d4991d33a93d890754" - integrity sha512-2d2l+smWKAVP4/b6GSO+8rmJ7pFXiUewpBDwkHm5qgkK6n6UGqIcK9lIgiS2YQ6rmL6qdtuNhhqtC9GF2TF2kQ== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.5.tgz#d5d9f14095d76239bc0e6f9804c24d1f92ffcab4" - integrity sha512-+B2vxfPwxoIIb8Ac8eHi6OgAn0qbjmPZuun7/es0/ouYYTbEhvhTAD20X3PGZlHrIYeDyS2ansuXm8gJI+/BzA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.5.tgz#083042c939ea58bf719e35114a6c8efb07b68688" - integrity sha512-0UVHO2CO89t34O35OA3JzWGWLBpg+e1NQXSfVtK90nmg/QmzGkHVM9m7Su0jjLNBt3N5EA5OPOhriot3bCKItw== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.5.tgz#f908289927a63fd76fb8f60b00a37747d9edbe39" - integrity sha512-3GoXA8VtGyZWKiqaPCipPXYLLM7h2Y5Oecq5c5YlMQyW2akv7uHiQQF2GZW/nVsFu3HBbGTOWpKRRmVk3PEO9Q== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/popper.js@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.0.5.tgz#ef46770e3a63cf10c91d4bda983198cd84b8e063" - integrity sha512-5MzLBMRWh2hHLVJJIrvJa6c4fwEdUk9HmnqpaqXnSX52B4uy9jcBexMdi/H7+cmao9NHm+Ld9n9G0YA8vMNeKA== +"@abp/popper.js@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.1.0-rc.2.tgz#26bd792c33b9a8cf347d14be4e08a4d42eb189c8" + integrity sha512-xWsOIzndRkvwdD5LOan8zf4vtceW0RIjCWSWdRtso4+V/fTLzWw9ofG3utvMaeJvu1Rfdr2mb2tLzYDNezNDAg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" popper.js "^1.16.0" -"@abp/prismjs@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.0.5.tgz#81a6ef656f3d7a76f365eb0bcbf2d0d3013d6e72" - integrity sha512-vdSSa1+tXS5+HWIgQyjDy4yQG7Q1YyuHQnFU6zlDJCQlE+20PL6lYgPnqR7DQ+Cd4lhRb3oxvloImYjwiwSQvA== +"@abp/prismjs@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.2.tgz#767d58c07e94c6e5056fd187d4e398efa108f67e" + integrity sha512-HCX/nw6noslnlw7xh94IaybI7xNYrjVOIld1C+J7p9AHizLhxh4kRbwVTpLhFzUWsSrTe8+VssgryimLQvTmjg== dependencies: - "@abp/clipboard" "~3.0.5" - "@abp/core" "~3.0.5" + "@abp/clipboard" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.2" prismjs "^1.20.0" -"@abp/select2@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.5.tgz#79d7754713c64a6549da520dc6867ef3e3dd0350" - integrity sha512-VbeSHdAdDy8exrjplHMMhLVV4oG7Gq9zBb5M52f0sIkA4DkXFhksXHcHNoOCfhaKAXpenGA03Z9GJewZ3MTpMw== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.5.tgz#e3b92d23cf3633983980b6255bf63c43d422ceab" - integrity sha512-OUt4ANgj14GESfRG7+UqdONS8daOu+8x2OZDWv98hriuX0uCVBjwB2J0jRI/n653C68Mi0yHixGONDv9OLy/lg== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.0.5" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.5.tgz#b191a7c43f3dc77645fe27273f2f6619f7d4eb31" - integrity sha512-QhvAOU4C+Qxh/gFuCSGZtLU4KwVhdv/jtK8ovWyqbGvQMCCIimqa8BFKIz0H5XWIJhHwwWblkpjICWgjWh6uXw== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.5.tgz#fc83b678f5be3a22040d0421ad9db5b2eac9d4fc" - integrity sha512-qgi2DEu6FYpN/DYcOZrmXsAr1HqcIKMhBWeXgjfoYUIl/K5+OuUgbQ69D/jdc0jz8HU9a4Cw7Q8hhe4CkgssEw== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.0.5" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.5.tgz#66b3da953500e73ff1f23d1b41168cde8216ce49" - integrity sha512-X9V1xLIEazItaf93nFSA4p94WT6QK3yA4eIyvU7GyyEkkOQdaakNwPbRwy930sd+I+/oXnIqM1vDsJu9QDhgvg== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/npm/lerna.json b/npm/lerna.json index b5f8b39800..fd6fc21eb1 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "packages": [ "packs/*" ], diff --git a/npm/ng-packs/lerna.version.json b/npm/ng-packs/lerna.version.json index 28c088df6e..83d38bb0df 100644 --- a/npm/ng-packs/lerna.version.json +++ b/npm/ng-packs/lerna.version.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "packages": [ "packages/*" ], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 552af1182a..843beb71bb 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -25,16 +25,16 @@ "postinstall": "npm run compile:ivy" }, "devDependencies": { - "@abp/ng.account": "~3.0.5", - "@abp/ng.core": "~3.0.5", - "@abp/ng.feature-management": "~3.0.5", - "@abp/ng.identity": "~3.0.5", - "@abp/ng.permission-management": "~3.0.5", - "@abp/ng.setting-management": "~3.0.5", - "@abp/ng.tenant-management": "~3.0.5", - "@abp/ng.theme.basic": "~3.0.5", - "@abp/ng.theme.shared": "~3.0.5", - "@abp/utils": "^3.0.5", + "@abp/ng.account": "~3.1.0-rc.2", + "@abp/ng.core": "~3.1.0-rc.2", + "@abp/ng.feature-management": "~3.1.0-rc.2", + "@abp/ng.identity": "~3.1.0-rc.2", + "@abp/ng.permission-management": "~3.1.0-rc.2", + "@abp/ng.setting-management": "~3.1.0-rc.2", + "@abp/ng.tenant-management": "~3.1.0-rc.2", + "@abp/ng.theme.basic": "~3.1.0-rc.2", + "@abp/ng.theme.shared": "~3.1.0-rc.2", + "@abp/utils": "^3.1.0-rc.2", "@angular-builders/jest": "^10.0.0", "@angular-devkit/build-angular": "~0.1000.6", "@angular-devkit/build-ng-packagr": "~0.1000.6", diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json index 7caa4680c4..1f3b34dcab 100644 --- a/npm/ng-packs/packages/account/package.json +++ b/npm/ng-packs/packages/account/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.account", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.1", + "@abp/ng.theme.shared": "~3.1.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json index d96da776f1..f3bb738a91 100644 --- a/npm/ng-packs/packages/components/package.json +++ b/npm/ng-packs/packages/components/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.components", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": ">=3.0.5", + "@abp/ng.core": ">=3.1.0-rc.2", "@ng-bootstrap/ng-bootstrap": ">=6.0.0" }, "dependencies": { diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index 11433378e1..3f5bd24e97 100644 --- a/npm/ng-packs/packages/core/package.json +++ b/npm/ng-packs/packages/core/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.core", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/utils": "^3.0.5", + "@abp/utils": "^3.1.0-rc.2", "@angular/localize": "~10.0.10", "@ngxs/router-plugin": "^3.6.2", "@ngxs/storage-plugin": "^3.6.2", diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index c35412775f..8b304d13c7 100644 --- a/npm/ng-packs/packages/feature-management/package.json +++ b/npm/ng-packs/packages/feature-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.feature-management", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.1", + "@abp/ng.theme.shared": "~3.1.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index a25c076057..e259cdea9f 100644 --- a/npm/ng-packs/packages/identity/package.json +++ b/npm/ng-packs/packages/identity/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.identity", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.permission-management": "~3.1.0-rc.1", - "@abp/ng.theme.shared": "~3.1.0-rc.1", + "@abp/ng.permission-management": "~3.1.0-rc.2", + "@abp/ng.theme.shared": "~3.1.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index c2485538be..5d258540ea 100644 --- a/npm/ng-packs/packages/permission-management/package.json +++ b/npm/ng-packs/packages/permission-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.permission-management", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.1", + "@abp/ng.theme.shared": "~3.1.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index 8f258c2fc9..9c7df23b83 100644 --- a/npm/ng-packs/packages/schematics/package.json +++ b/npm/ng-packs/packages/schematics/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.schematics", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "description": "Schematics that works with ABP Backend", "keywords": [ "schematics" diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index b6309084b7..97b644d782 100644 --- a/npm/ng-packs/packages/setting-management/package.json +++ b/npm/ng-packs/packages/setting-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.setting-management", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.1", + "@abp/ng.theme.shared": "~3.1.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index 3513a620ba..735d905a5d 100644 --- a/npm/ng-packs/packages/tenant-management/package.json +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.tenant-management", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.feature-management": "~3.1.0-rc.1", - "@abp/ng.theme.shared": "~3.1.0-rc.1", + "@abp/ng.feature-management": "~3.1.0-rc.2", + "@abp/ng.theme.shared": "~3.1.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json index 056e0d74e6..666cd7fd5c 100644 --- a/npm/ng-packs/packages/theme-basic/package.json +++ b/npm/ng-packs/packages/theme-basic/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.basic", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.1", + "@abp/ng.theme.shared": "~3.1.0-rc.2", "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 b30e808c98..91a875c0dd 100644 --- a/npm/ng-packs/packages/theme-shared/package.json +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.shared", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~3.1.0-rc.1", + "@abp/ng.core": "~3.1.0-rc.2", "@fortawesome/fontawesome-free": "^5.14.0", "@ng-bootstrap/ng-bootstrap": "^7.0.0", "@ngx-validate/core": "^0.0.11", diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index e544ff1c2c..0d38ce5e2d 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "anchor-js": "^4.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index 9e6402e1b0..06274bbeed 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index e06f2b3e91..bb1a173dcc 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json @@ -1,24 +1,24 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "~3.1.0-rc.1", - "@abp/bootstrap": "~3.1.0-rc.1", - "@abp/bootstrap-datepicker": "~3.1.0-rc.1", - "@abp/datatables.net-bs4": "~3.1.0-rc.1", - "@abp/font-awesome": "~3.1.0-rc.1", - "@abp/jquery-form": "~3.1.0-rc.1", - "@abp/jquery-validation-unobtrusive": "~3.1.0-rc.1", - "@abp/lodash": "~3.1.0-rc.1", - "@abp/luxon": "~3.1.0-rc.1", - "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.1", - "@abp/select2": "~3.1.0-rc.1", - "@abp/sweetalert": "~3.1.0-rc.1", - "@abp/timeago": "~3.1.0-rc.1", - "@abp/toastr": "~3.1.0-rc.1" + "@abp/aspnetcore.mvc.ui": "~3.1.0-rc.2", + "@abp/bootstrap": "~3.1.0-rc.2", + "@abp/bootstrap-datepicker": "~3.1.0-rc.2", + "@abp/datatables.net-bs4": "~3.1.0-rc.2", + "@abp/font-awesome": "~3.1.0-rc.2", + "@abp/jquery-form": "~3.1.0-rc.2", + "@abp/jquery-validation-unobtrusive": "~3.1.0-rc.2", + "@abp/lodash": "~3.1.0-rc.2", + "@abp/luxon": "~3.1.0-rc.2", + "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.2", + "@abp/select2": "~3.1.0-rc.2", + "@abp/sweetalert": "~3.1.0-rc.2", + "@abp/timeago": "~3.1.0-rc.2", + "@abp/toastr": "~3.1.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index 48e1f22468..ba1ea2b672 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/aspnetcore.mvc.ui", "publishConfig": { "access": "public" diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index 239e957ebc..03f11931ee 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,14 +1,14 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.1", - "@abp/owl.carousel": "~3.1.0-rc.1", - "@abp/prismjs": "~3.1.0-rc.1", - "@abp/tui-editor": "~3.1.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.2", + "@abp/owl.carousel": "~3.1.0-rc.2", + "@abp/prismjs": "~3.1.0-rc.2", + "@abp/tui-editor": "~3.1.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index 197a9e6739..8e8fe67d5a 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/bootstrap-datepicker", "publishConfig": { "access": "public" diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index 6c4af44e63..ce970434c3 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/bootstrap", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "bootstrap": "^4.5.0", "bootstrap-v4-rtl": "4.4.1-2" }, diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index 7857983493..b483d36ac9 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/chart.js", "publishConfig": { "access": "public" diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index 3ae7a15786..62df2bf8db 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "clipboard": "^2.0.6" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index d4c5ee3e52..03afdc0370 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "codemirror": "^5.54.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index cc320760db..de6ed27ccd 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/core", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/utils": "^3.1.0-rc.1" + "@abp/utils": "^3.1.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index 6170f63583..ff1d91a8ef 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/datatables.net-bs4", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "~3.1.0-rc.1", + "@abp/datatables.net": "~3.1.0-rc.2", "datatables.net-bs4": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index d5fd2d10f1..836ed61126 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/datatables.net", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.1", + "@abp/jquery": "~3.1.0-rc.2", "datatables.net": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index 379c9596e7..3be2ff3c24 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "~3.1.0-rc.1", - "@abp/clipboard": "~3.1.0-rc.1", - "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.1", - "@abp/popper.js": "~3.1.0-rc.1", - "@abp/prismjs": "~3.1.0-rc.1" + "@abp/anchor-js": "~3.1.0-rc.2", + "@abp/clipboard": "~3.1.0-rc.2", + "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.2", + "@abp/popper.js": "~3.1.0-rc.2", + "@abp/prismjs": "~3.1.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index 99aa4f9dc9..bc07d361ed 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index 285f6ee151..0635634a31 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/font-awesome", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "@fortawesome/fontawesome-free": "^5.13.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index f1d398e30f..d07ba815a2 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1" + "@abp/core": "~3.1.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index 5f0d1b01d6..0b285ba858 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/jquery-form", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.1", + "@abp/jquery": "~3.1.0-rc.2", "jquery-form": "^4.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index 08810c9087..3d398b767f 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/jquery-validation-unobtrusive", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery-validation": "~3.1.0-rc.1", + "@abp/jquery-validation": "~3.1.0-rc.2", "jquery-validation-unobtrusive": "^3.2.11" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index 9a700fed97..22bf237ec6 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/jquery-validation", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.1", + "@abp/jquery": "~3.1.0-rc.2", "jquery-validation": "^1.19.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index b7f850d90a..76337adfa3 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/jquery", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "jquery": "~3.5.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json index 9e78404419..246209ed16 100644 --- a/npm/packs/jstree/package.json +++ b/npm/packs/jstree/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/jstree", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.1", + "@abp/jquery": "~3.1.0-rc.2", "jstree": "^3.3.9" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index 2cf2be258b..18c555a3f2 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/lodash", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "lodash": "^4.17.15" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index 5040112ee9..39ef414fff 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/luxon", "publishConfig": { "access": "public" diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index 96dccbc66e..1dd9459497 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/malihu-custom-scrollbar-plugin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "malihu-custom-scrollbar-plugin": "^3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index 3b0cc08d89..306a58f6b8 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "markdown-it": "^11.0.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index f2e287bd88..e1f3151561 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "owl.carousel": "^2.3.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index a5f9f45c23..43f07f85eb 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "popper.js": "^1.16.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 96b78ce0fb..459d0d75a5 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~3.1.0-rc.1", - "@abp/core": "~3.1.0-rc.1", + "@abp/clipboard": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.2", "prismjs": "^1.20.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index 2a070ee367..85ac78874b 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/select2", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "select2": "^4.0.13" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json index 887ea68121..d240950fa2 100644 --- a/npm/packs/signalr/package.json +++ b/npm/packs/signalr/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/signalr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "@microsoft/signalr": "~3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/sweetalert/package.json b/npm/packs/sweetalert/package.json index 0c3d13ca86..e4e8f96e63 100644 --- a/npm/packs/sweetalert/package.json +++ b/npm/packs/sweetalert/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/sweetalert", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "sweetalert": "^2.1.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index bc8f98ae73..20a773e5c6 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/timeago", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.1", + "@abp/jquery": "~3.1.0-rc.2", "timeago": "^1.6.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index 37a2592a39..ae79e0eaaf 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/toastr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.1", + "@abp/jquery": "~3.1.0-rc.2", "toastr": "^2.1.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index 813e6a2b53..f727468814 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,14 +1,14 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/codemirror": "~3.1.0-rc.1", - "@abp/highlight.js": "~3.1.0-rc.1", - "@abp/jquery": "~3.1.0-rc.1", - "@abp/markdown-it": "~3.1.0-rc.1", + "@abp/codemirror": "~3.1.0-rc.2", + "@abp/highlight.js": "~3.1.0-rc.2", + "@abp/jquery": "~3.1.0-rc.2", + "@abp/markdown-it": "~3.1.0-rc.2", "tui-editor": "^1.4.10" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json index 36bd77ca99..cbb79c574c 100644 --- a/npm/packs/uppy/package.json +++ b/npm/packs/uppy/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/uppy", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.1", + "@abp/core": "~3.1.0-rc.2", "uppy": "^1.16.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json index 6b7594825e..981b8a1680 100644 --- a/npm/packs/utils/package.json +++ b/npm/packs/utils/package.json @@ -1,6 +1,6 @@ { "name": "@abp/utils", - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "scripts": { "prepublish": "yarn install --ignore-scripts && node prepublish.js", "ng": "ng", diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json index 5c75512406..96a3d5d12e 100644 --- a/npm/packs/virtual-file-explorer/package.json +++ b/npm/packs/virtual-file-explorer/package.json @@ -1,12 +1,12 @@ { - "version": "3.1.0-rc.1", + "version": "3.1.0-rc.2", "name": "@abp/virtual-file-explorer", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~3.1.0-rc.1", - "@abp/prismjs": "~3.1.0-rc.1" + "@abp/clipboard": "~3.1.0-rc.2", + "@abp/prismjs": "~3.1.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json index 0faf2470d2..960aea4afb 100644 --- a/templates/app/angular/package.json +++ b/templates/app/angular/package.json @@ -12,11 +12,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.0.5", - "@abp/ng.identity": "~3.0.5", - "@abp/ng.setting-management": "~3.0.5", - "@abp/ng.tenant-management": "~3.0.5", - "@abp/ng.theme.basic": "~3.0.5", + "@abp/ng.account": "~3.1.0-rc.2", + "@abp/ng.identity": "~3.1.0-rc.2", + "@abp/ng.setting-management": "~3.1.0-rc.2", + "@abp/ng.tenant-management": "~3.1.0-rc.2", + "@abp/ng.theme.basic": "~3.1.0-rc.2", "@angular/animations": "~10.0.10", "@angular/common": "~10.0.10", "@angular/compiler": "~10.0.10", @@ -30,7 +30,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~3.1.0-beta.2", + "@abp/ng.schematics": "~3.1.0-rc.2", "@angular-devkit/build-angular": "~0.1000.6", "@angular-devkit/build-ng-packagr": "~0.1000.6", "@angular/cli": "~10.0.6", diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json index e0fde322e1..7103162cc8 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock index a0fc6e0f98..57c957a100 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.1.tgz#fd545133049b015e02820d5500bf92a09fa5dcb6" - integrity sha512-Xtohi+W2OUJcWf5GykCsrXJo7VV+bPNw5r3rMTO+nFioOs9nOunYBA+8usEa4AfU/WL6oRG7S4P3Tw8h8m4ULw== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.1.tgz#0c4bb2653e8c93043f68ced23a8ef3f3c34ebb23" - integrity sha512-eCrpjEigpmFIjXnv9/6pz6cdoTBTZZw+aChSOIi8RdsDCbjUZrgfuarUoLjGFHUvyXd7DWXvc2PzjcGE7szBaw== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.1" - "@abp/bootstrap" "~3.1.0-rc.1" - "@abp/bootstrap-datepicker" "~3.1.0-rc.1" - "@abp/datatables.net-bs4" "~3.1.0-rc.1" - "@abp/font-awesome" "~3.1.0-rc.1" - "@abp/jquery-form" "~3.1.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.1" - "@abp/lodash" "~3.1.0-rc.1" - "@abp/luxon" "~3.1.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.1" - "@abp/select2" "~3.1.0-rc.1" - "@abp/sweetalert" "~3.1.0-rc.1" - "@abp/timeago" "~3.1.0-rc.1" - "@abp/toastr" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.1.tgz#e4300c82fedd2d45147e98e81fc3e72ffe21a616" - integrity sha512-xsJGb8HCP5ovUy9+2gHtFOFxO6mWQah/jjN1RsBnJTt5EnwKEiqOXrO+18PaRlczj7fLXOw1V0bNtHeeoy8bCg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.1.tgz#12bab980bb5d0c882f823a392d765286d6d74c9e" - integrity sha512-ZN2xv0wTzB18jAM/cKQNuq3VdYjrqtPqnoreLAebUcy1R/sAUxHZ06xIpGaSkSTwB+0GHGWjR3/SlUnnn/HFcw== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.1.tgz#ae71f1af5cbde21af08a5ca891fa7e118bde7f1e" - integrity sha512-2LnJOqxHjTwC/Z9cnSrChaJCL1k++QQDA90Nv9a3VVwbJ5pgwXtdWUZrLdK9lOEkZ17CE8WaD0tkSvSNt3FUNw== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.1.tgz#9192061da6b4cd6d5d80998366d0c31b1ee400d6" - integrity sha512-BJhVruTQBPeJRqFig2ZiJJrWOlX3dKYno4MxAMeIJGpLBRM79Bl3v5/081WRnwltfU7s0DvhLhqYGBQfKAst6w== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.1.0-rc.1" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.1.tgz#af3b3cfa4396d2877ad8c8a71cb92b2e166eb4a0" - integrity sha512-vFWQr0J5BUFnUO0eL/hfyzO0N6hXKI5IP8G3iaeFMgIvIRiwyWw34mwOYaP1vJN22tliOr14uyrX9Hex2oR2Ug== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.1.0-rc.1" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.1.tgz#60e391a39fad262a58497bd03087c7734dcee5d1" - integrity sha512-oKxHaVApFPm0Y5VMLXfQQsqaaxpXF/tCAz8dKOkBYDHhaGK0BNd/fi7hAu/uJBuQC/09ggGwqgdm96c9jfGBiw== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.1.tgz#0376d3db580155c02fe3152c80bb23edd35c7020" - integrity sha512-VCh3cvkGis1efno15iqY6fNB54LBGXZFC/m1eMGYm95Vni8S9ke0svzqAoQl8qFuI5XHNFNMur1XkAXXI+YPUA== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.1.tgz#eef048968b74803e870749e2c051f9910df54b87" - integrity sha512-+ePC75rVivoVyfaf68IZrZ+FEcHm/5m/YFUlhuD8pi6rFTW/YHkUVYlVBS3m+whXOcV4pJlAGNXcAKKmAEJGpg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.1.tgz#2b8cf680fde18b8ef33daa7b07e5c2d22c49f0f1" - integrity sha512-9EWGCJjFG/Hi/a+LMhif7u+jZ1P0an1PveRV/bOT+4l7+3+GkFaQiwv6WQkgCH7Xu3/YFn/ijOd5WWzlieekFg== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.1" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.1.tgz#968055ed850e1a30c7f7dede135fadf5cb9d2ba5" - integrity sha512-jiwHj4NeVEa2Fscw0h7Y1kiqL3/Xg54PJV/jl8BGXjGvV++3Q8KjZNeW+dNTPU2jAJpDy3VQ2InoMTT3zrGw8g== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.1.tgz#b08c608eb1157fe35e9c9c8b888c3606b3f61ef4" - integrity sha512-L7pRgW9OveYgMqHSKIFXUJaz4+nfCHWlwBtdFB/BQf9bKcv3gw/UEYGFOzTfZqPTxWyyFfSpB1DU+8QpDtOj6w== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.1.tgz#001247b438fbce87b87fc1189b0e95647087508a" - integrity sha512-2MvMowujQ3VfcjjJ164IKyJnbWjSnWSeHFaGbsUi6duZrCr9z94VKv+gQ64aUcPR2U70PoZLvggWF6lH+JMxtA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.1.tgz#2c58b1c41a206a8963b0bd0936819ab6701f63fe" - integrity sha512-0hCVvUJRtCh01qpZkGciE1+Sl393oI3I472C1pSwxo0EQxxWFd57SzsozBSnBmOp/f+LhlbKEUNQqvv/Wb1TUQ== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.1.tgz#c8a78a3f099c10251d8b58864536e8a0d6008cab" - integrity sha512-XQiQ9sLN/QJDOBFCQOK3uMn2FWWJyCGMoWEagPFCfbxkp6zfgOF4YbLfL0esL7AchlJlkW3cGBMFY/fH2TMQ5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.1.tgz#5f396b8dbbc5d0b2f144cc249f73038d7804a518" - integrity sha512-Vk0uqMhJcmUaehUt+0uZQaZBP+ppcVI5UYEUD3Hna0AZIgjwUVioQEhVAokelSkSAJXWn5J2tPEhk8mzZQXv3Q== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.1.tgz#cef625218795f1cb18d0ff09d1085d0e11d2bb19" - integrity sha512-kk0K33dPft3jP6PwEcoi6GP4xFxqxeFP7G29TKVg0JZ4b/a0rB4+nm14McG5bqWk1YjYNGKMx5hMlDLWxs0BIA== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.1.tgz#033e459d152535f235a311f066d8f6de1660786b" - integrity sha512-jYfmMgEm7sox+UKplALHzdawjZeNiCtvSHdDkvntUQkHzUvyAPqT9IpOZNxv5QqQqSlarqIcLqVIRKms46sJeg== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.1.tgz#07cf64c4fe5c4cc6e8f273c502ca403da82bef51" - integrity sha512-29T8dj+pWxZOZ42zmvm/Kgcxmd0g9/L2bjNqNQVhJEFDF5c+CrKYcqEfVKePf1mc80fWXe209I45VOzHCzzTnQ== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.1.tgz#15cffd28c9f5209bf3cdc805d55b54e4a749f4d1" - integrity sha512-FnbJprUHl3y0ShVqJJdKmZDuDrNEY70vuzhSt6DTHfRbtHo+i4+B9Tpt9vynGJkkug5sZEdjlRZSazoZfWlZ7A== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json index 6b42637f58..2aff27f377 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index b714e08268..c836cc49cb 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.1.tgz#fd545133049b015e02820d5500bf92a09fa5dcb6" - integrity sha512-Xtohi+W2OUJcWf5GykCsrXJo7VV+bPNw5r3rMTO+nFioOs9nOunYBA+8usEa4AfU/WL6oRG7S4P3Tw8h8m4ULw== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.1.tgz#0c4bb2653e8c93043f68ced23a8ef3f3c34ebb23" - integrity sha512-eCrpjEigpmFIjXnv9/6pz6cdoTBTZZw+aChSOIi8RdsDCbjUZrgfuarUoLjGFHUvyXd7DWXvc2PzjcGE7szBaw== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.1" - "@abp/bootstrap" "~3.1.0-rc.1" - "@abp/bootstrap-datepicker" "~3.1.0-rc.1" - "@abp/datatables.net-bs4" "~3.1.0-rc.1" - "@abp/font-awesome" "~3.1.0-rc.1" - "@abp/jquery-form" "~3.1.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.1" - "@abp/lodash" "~3.1.0-rc.1" - "@abp/luxon" "~3.1.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.1" - "@abp/select2" "~3.1.0-rc.1" - "@abp/sweetalert" "~3.1.0-rc.1" - "@abp/timeago" "~3.1.0-rc.1" - "@abp/toastr" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.1.tgz#e4300c82fedd2d45147e98e81fc3e72ffe21a616" - integrity sha512-xsJGb8HCP5ovUy9+2gHtFOFxO6mWQah/jjN1RsBnJTt5EnwKEiqOXrO+18PaRlczj7fLXOw1V0bNtHeeoy8bCg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.1.tgz#12bab980bb5d0c882f823a392d765286d6d74c9e" - integrity sha512-ZN2xv0wTzB18jAM/cKQNuq3VdYjrqtPqnoreLAebUcy1R/sAUxHZ06xIpGaSkSTwB+0GHGWjR3/SlUnnn/HFcw== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.1.tgz#ae71f1af5cbde21af08a5ca891fa7e118bde7f1e" - integrity sha512-2LnJOqxHjTwC/Z9cnSrChaJCL1k++QQDA90Nv9a3VVwbJ5pgwXtdWUZrLdK9lOEkZ17CE8WaD0tkSvSNt3FUNw== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.1.tgz#9192061da6b4cd6d5d80998366d0c31b1ee400d6" - integrity sha512-BJhVruTQBPeJRqFig2ZiJJrWOlX3dKYno4MxAMeIJGpLBRM79Bl3v5/081WRnwltfU7s0DvhLhqYGBQfKAst6w== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.1.0-rc.1" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.1.tgz#af3b3cfa4396d2877ad8c8a71cb92b2e166eb4a0" - integrity sha512-vFWQr0J5BUFnUO0eL/hfyzO0N6hXKI5IP8G3iaeFMgIvIRiwyWw34mwOYaP1vJN22tliOr14uyrX9Hex2oR2Ug== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.1.0-rc.1" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.1.tgz#60e391a39fad262a58497bd03087c7734dcee5d1" - integrity sha512-oKxHaVApFPm0Y5VMLXfQQsqaaxpXF/tCAz8dKOkBYDHhaGK0BNd/fi7hAu/uJBuQC/09ggGwqgdm96c9jfGBiw== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.1.tgz#0376d3db580155c02fe3152c80bb23edd35c7020" - integrity sha512-VCh3cvkGis1efno15iqY6fNB54LBGXZFC/m1eMGYm95Vni8S9ke0svzqAoQl8qFuI5XHNFNMur1XkAXXI+YPUA== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.1.tgz#eef048968b74803e870749e2c051f9910df54b87" - integrity sha512-+ePC75rVivoVyfaf68IZrZ+FEcHm/5m/YFUlhuD8pi6rFTW/YHkUVYlVBS3m+whXOcV4pJlAGNXcAKKmAEJGpg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.1.tgz#2b8cf680fde18b8ef33daa7b07e5c2d22c49f0f1" - integrity sha512-9EWGCJjFG/Hi/a+LMhif7u+jZ1P0an1PveRV/bOT+4l7+3+GkFaQiwv6WQkgCH7Xu3/YFn/ijOd5WWzlieekFg== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.1" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.1.tgz#968055ed850e1a30c7f7dede135fadf5cb9d2ba5" - integrity sha512-jiwHj4NeVEa2Fscw0h7Y1kiqL3/Xg54PJV/jl8BGXjGvV++3Q8KjZNeW+dNTPU2jAJpDy3VQ2InoMTT3zrGw8g== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.1.tgz#b08c608eb1157fe35e9c9c8b888c3606b3f61ef4" - integrity sha512-L7pRgW9OveYgMqHSKIFXUJaz4+nfCHWlwBtdFB/BQf9bKcv3gw/UEYGFOzTfZqPTxWyyFfSpB1DU+8QpDtOj6w== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.1.tgz#001247b438fbce87b87fc1189b0e95647087508a" - integrity sha512-2MvMowujQ3VfcjjJ164IKyJnbWjSnWSeHFaGbsUi6duZrCr9z94VKv+gQ64aUcPR2U70PoZLvggWF6lH+JMxtA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.1.tgz#2c58b1c41a206a8963b0bd0936819ab6701f63fe" - integrity sha512-0hCVvUJRtCh01qpZkGciE1+Sl393oI3I472C1pSwxo0EQxxWFd57SzsozBSnBmOp/f+LhlbKEUNQqvv/Wb1TUQ== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.1.tgz#c8a78a3f099c10251d8b58864536e8a0d6008cab" - integrity sha512-XQiQ9sLN/QJDOBFCQOK3uMn2FWWJyCGMoWEagPFCfbxkp6zfgOF4YbLfL0esL7AchlJlkW3cGBMFY/fH2TMQ5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.1.tgz#5f396b8dbbc5d0b2f144cc249f73038d7804a518" - integrity sha512-Vk0uqMhJcmUaehUt+0uZQaZBP+ppcVI5UYEUD3Hna0AZIgjwUVioQEhVAokelSkSAJXWn5J2tPEhk8mzZQXv3Q== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.1.tgz#cef625218795f1cb18d0ff09d1085d0e11d2bb19" - integrity sha512-kk0K33dPft3jP6PwEcoi6GP4xFxqxeFP7G29TKVg0JZ4b/a0rB4+nm14McG5bqWk1YjYNGKMx5hMlDLWxs0BIA== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.1.tgz#033e459d152535f235a311f066d8f6de1660786b" - integrity sha512-jYfmMgEm7sox+UKplALHzdawjZeNiCtvSHdDkvntUQkHzUvyAPqT9IpOZNxv5QqQqSlarqIcLqVIRKms46sJeg== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.1.tgz#07cf64c4fe5c4cc6e8f273c502ca403da82bef51" - integrity sha512-29T8dj+pWxZOZ42zmvm/Kgcxmd0g9/L2bjNqNQVhJEFDF5c+CrKYcqEfVKePf1mc80fWXe209I45VOzHCzzTnQ== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.1.tgz#15cffd28c9f5209bf3cdc805d55b54e4a749f4d1" - integrity sha512-FnbJprUHl3y0ShVqJJdKmZDuDrNEY70vuzhSt6DTHfRbtHo+i4+B9Tpt9vynGJkkug5sZEdjlRZSazoZfWlZ7A== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json index e0fde322e1..7103162cc8 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock index b714e08268..c836cc49cb 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.1.tgz#fd545133049b015e02820d5500bf92a09fa5dcb6" - integrity sha512-Xtohi+W2OUJcWf5GykCsrXJo7VV+bPNw5r3rMTO+nFioOs9nOunYBA+8usEa4AfU/WL6oRG7S4P3Tw8h8m4ULw== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.1.tgz#0c4bb2653e8c93043f68ced23a8ef3f3c34ebb23" - integrity sha512-eCrpjEigpmFIjXnv9/6pz6cdoTBTZZw+aChSOIi8RdsDCbjUZrgfuarUoLjGFHUvyXd7DWXvc2PzjcGE7szBaw== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.1" - "@abp/bootstrap" "~3.1.0-rc.1" - "@abp/bootstrap-datepicker" "~3.1.0-rc.1" - "@abp/datatables.net-bs4" "~3.1.0-rc.1" - "@abp/font-awesome" "~3.1.0-rc.1" - "@abp/jquery-form" "~3.1.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.1" - "@abp/lodash" "~3.1.0-rc.1" - "@abp/luxon" "~3.1.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.1" - "@abp/select2" "~3.1.0-rc.1" - "@abp/sweetalert" "~3.1.0-rc.1" - "@abp/timeago" "~3.1.0-rc.1" - "@abp/toastr" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.1.tgz#e4300c82fedd2d45147e98e81fc3e72ffe21a616" - integrity sha512-xsJGb8HCP5ovUy9+2gHtFOFxO6mWQah/jjN1RsBnJTt5EnwKEiqOXrO+18PaRlczj7fLXOw1V0bNtHeeoy8bCg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.1.tgz#12bab980bb5d0c882f823a392d765286d6d74c9e" - integrity sha512-ZN2xv0wTzB18jAM/cKQNuq3VdYjrqtPqnoreLAebUcy1R/sAUxHZ06xIpGaSkSTwB+0GHGWjR3/SlUnnn/HFcw== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.1.tgz#ae71f1af5cbde21af08a5ca891fa7e118bde7f1e" - integrity sha512-2LnJOqxHjTwC/Z9cnSrChaJCL1k++QQDA90Nv9a3VVwbJ5pgwXtdWUZrLdK9lOEkZ17CE8WaD0tkSvSNt3FUNw== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.1.tgz#9192061da6b4cd6d5d80998366d0c31b1ee400d6" - integrity sha512-BJhVruTQBPeJRqFig2ZiJJrWOlX3dKYno4MxAMeIJGpLBRM79Bl3v5/081WRnwltfU7s0DvhLhqYGBQfKAst6w== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.1.0-rc.1" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.1.tgz#af3b3cfa4396d2877ad8c8a71cb92b2e166eb4a0" - integrity sha512-vFWQr0J5BUFnUO0eL/hfyzO0N6hXKI5IP8G3iaeFMgIvIRiwyWw34mwOYaP1vJN22tliOr14uyrX9Hex2oR2Ug== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.1.0-rc.1" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.1.tgz#60e391a39fad262a58497bd03087c7734dcee5d1" - integrity sha512-oKxHaVApFPm0Y5VMLXfQQsqaaxpXF/tCAz8dKOkBYDHhaGK0BNd/fi7hAu/uJBuQC/09ggGwqgdm96c9jfGBiw== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.1.tgz#0376d3db580155c02fe3152c80bb23edd35c7020" - integrity sha512-VCh3cvkGis1efno15iqY6fNB54LBGXZFC/m1eMGYm95Vni8S9ke0svzqAoQl8qFuI5XHNFNMur1XkAXXI+YPUA== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.1.tgz#eef048968b74803e870749e2c051f9910df54b87" - integrity sha512-+ePC75rVivoVyfaf68IZrZ+FEcHm/5m/YFUlhuD8pi6rFTW/YHkUVYlVBS3m+whXOcV4pJlAGNXcAKKmAEJGpg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.1.tgz#2b8cf680fde18b8ef33daa7b07e5c2d22c49f0f1" - integrity sha512-9EWGCJjFG/Hi/a+LMhif7u+jZ1P0an1PveRV/bOT+4l7+3+GkFaQiwv6WQkgCH7Xu3/YFn/ijOd5WWzlieekFg== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.1" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.1.tgz#968055ed850e1a30c7f7dede135fadf5cb9d2ba5" - integrity sha512-jiwHj4NeVEa2Fscw0h7Y1kiqL3/Xg54PJV/jl8BGXjGvV++3Q8KjZNeW+dNTPU2jAJpDy3VQ2InoMTT3zrGw8g== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.1.tgz#b08c608eb1157fe35e9c9c8b888c3606b3f61ef4" - integrity sha512-L7pRgW9OveYgMqHSKIFXUJaz4+nfCHWlwBtdFB/BQf9bKcv3gw/UEYGFOzTfZqPTxWyyFfSpB1DU+8QpDtOj6w== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.1.tgz#001247b438fbce87b87fc1189b0e95647087508a" - integrity sha512-2MvMowujQ3VfcjjJ164IKyJnbWjSnWSeHFaGbsUi6duZrCr9z94VKv+gQ64aUcPR2U70PoZLvggWF6lH+JMxtA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.1.tgz#2c58b1c41a206a8963b0bd0936819ab6701f63fe" - integrity sha512-0hCVvUJRtCh01qpZkGciE1+Sl393oI3I472C1pSwxo0EQxxWFd57SzsozBSnBmOp/f+LhlbKEUNQqvv/Wb1TUQ== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.1.tgz#c8a78a3f099c10251d8b58864536e8a0d6008cab" - integrity sha512-XQiQ9sLN/QJDOBFCQOK3uMn2FWWJyCGMoWEagPFCfbxkp6zfgOF4YbLfL0esL7AchlJlkW3cGBMFY/fH2TMQ5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.1.tgz#5f396b8dbbc5d0b2f144cc249f73038d7804a518" - integrity sha512-Vk0uqMhJcmUaehUt+0uZQaZBP+ppcVI5UYEUD3Hna0AZIgjwUVioQEhVAokelSkSAJXWn5J2tPEhk8mzZQXv3Q== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.1.tgz#cef625218795f1cb18d0ff09d1085d0e11d2bb19" - integrity sha512-kk0K33dPft3jP6PwEcoi6GP4xFxqxeFP7G29TKVg0JZ4b/a0rB4+nm14McG5bqWk1YjYNGKMx5hMlDLWxs0BIA== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.1.tgz#033e459d152535f235a311f066d8f6de1660786b" - integrity sha512-jYfmMgEm7sox+UKplALHzdawjZeNiCtvSHdDkvntUQkHzUvyAPqT9IpOZNxv5QqQqSlarqIcLqVIRKms46sJeg== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.1.tgz#07cf64c4fe5c4cc6e8f273c502ca403da82bef51" - integrity sha512-29T8dj+pWxZOZ42zmvm/Kgcxmd0g9/L2bjNqNQVhJEFDF5c+CrKYcqEfVKePf1mc80fWXe209I45VOzHCzzTnQ== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.1.tgz#15cffd28c9f5209bf3cdc805d55b54e4a749f4d1" - integrity sha512-FnbJprUHl3y0ShVqJJdKmZDuDrNEY70vuzhSt6DTHfRbtHo+i4+B9Tpt9vynGJkkug5sZEdjlRZSazoZfWlZ7A== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json index e0fde322e1..7103162cc8 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock index a0fc6e0f98..57c957a100 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.1.tgz#fd545133049b015e02820d5500bf92a09fa5dcb6" - integrity sha512-Xtohi+W2OUJcWf5GykCsrXJo7VV+bPNw5r3rMTO+nFioOs9nOunYBA+8usEa4AfU/WL6oRG7S4P3Tw8h8m4ULw== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.1.tgz#0c4bb2653e8c93043f68ced23a8ef3f3c34ebb23" - integrity sha512-eCrpjEigpmFIjXnv9/6pz6cdoTBTZZw+aChSOIi8RdsDCbjUZrgfuarUoLjGFHUvyXd7DWXvc2PzjcGE7szBaw== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.1" - "@abp/bootstrap" "~3.1.0-rc.1" - "@abp/bootstrap-datepicker" "~3.1.0-rc.1" - "@abp/datatables.net-bs4" "~3.1.0-rc.1" - "@abp/font-awesome" "~3.1.0-rc.1" - "@abp/jquery-form" "~3.1.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.1" - "@abp/lodash" "~3.1.0-rc.1" - "@abp/luxon" "~3.1.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.1" - "@abp/select2" "~3.1.0-rc.1" - "@abp/sweetalert" "~3.1.0-rc.1" - "@abp/timeago" "~3.1.0-rc.1" - "@abp/toastr" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.1.tgz#e4300c82fedd2d45147e98e81fc3e72ffe21a616" - integrity sha512-xsJGb8HCP5ovUy9+2gHtFOFxO6mWQah/jjN1RsBnJTt5EnwKEiqOXrO+18PaRlczj7fLXOw1V0bNtHeeoy8bCg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.1.tgz#12bab980bb5d0c882f823a392d765286d6d74c9e" - integrity sha512-ZN2xv0wTzB18jAM/cKQNuq3VdYjrqtPqnoreLAebUcy1R/sAUxHZ06xIpGaSkSTwB+0GHGWjR3/SlUnnn/HFcw== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.1.tgz#ae71f1af5cbde21af08a5ca891fa7e118bde7f1e" - integrity sha512-2LnJOqxHjTwC/Z9cnSrChaJCL1k++QQDA90Nv9a3VVwbJ5pgwXtdWUZrLdK9lOEkZ17CE8WaD0tkSvSNt3FUNw== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.1.tgz#9192061da6b4cd6d5d80998366d0c31b1ee400d6" - integrity sha512-BJhVruTQBPeJRqFig2ZiJJrWOlX3dKYno4MxAMeIJGpLBRM79Bl3v5/081WRnwltfU7s0DvhLhqYGBQfKAst6w== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.1.0-rc.1" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.1.tgz#af3b3cfa4396d2877ad8c8a71cb92b2e166eb4a0" - integrity sha512-vFWQr0J5BUFnUO0eL/hfyzO0N6hXKI5IP8G3iaeFMgIvIRiwyWw34mwOYaP1vJN22tliOr14uyrX9Hex2oR2Ug== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.1.0-rc.1" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.1.tgz#60e391a39fad262a58497bd03087c7734dcee5d1" - integrity sha512-oKxHaVApFPm0Y5VMLXfQQsqaaxpXF/tCAz8dKOkBYDHhaGK0BNd/fi7hAu/uJBuQC/09ggGwqgdm96c9jfGBiw== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.1.tgz#0376d3db580155c02fe3152c80bb23edd35c7020" - integrity sha512-VCh3cvkGis1efno15iqY6fNB54LBGXZFC/m1eMGYm95Vni8S9ke0svzqAoQl8qFuI5XHNFNMur1XkAXXI+YPUA== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.1.tgz#eef048968b74803e870749e2c051f9910df54b87" - integrity sha512-+ePC75rVivoVyfaf68IZrZ+FEcHm/5m/YFUlhuD8pi6rFTW/YHkUVYlVBS3m+whXOcV4pJlAGNXcAKKmAEJGpg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.1.tgz#2b8cf680fde18b8ef33daa7b07e5c2d22c49f0f1" - integrity sha512-9EWGCJjFG/Hi/a+LMhif7u+jZ1P0an1PveRV/bOT+4l7+3+GkFaQiwv6WQkgCH7Xu3/YFn/ijOd5WWzlieekFg== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.1" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.1.tgz#968055ed850e1a30c7f7dede135fadf5cb9d2ba5" - integrity sha512-jiwHj4NeVEa2Fscw0h7Y1kiqL3/Xg54PJV/jl8BGXjGvV++3Q8KjZNeW+dNTPU2jAJpDy3VQ2InoMTT3zrGw8g== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.1.tgz#b08c608eb1157fe35e9c9c8b888c3606b3f61ef4" - integrity sha512-L7pRgW9OveYgMqHSKIFXUJaz4+nfCHWlwBtdFB/BQf9bKcv3gw/UEYGFOzTfZqPTxWyyFfSpB1DU+8QpDtOj6w== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.1.tgz#001247b438fbce87b87fc1189b0e95647087508a" - integrity sha512-2MvMowujQ3VfcjjJ164IKyJnbWjSnWSeHFaGbsUi6duZrCr9z94VKv+gQ64aUcPR2U70PoZLvggWF6lH+JMxtA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.1.tgz#2c58b1c41a206a8963b0bd0936819ab6701f63fe" - integrity sha512-0hCVvUJRtCh01qpZkGciE1+Sl393oI3I472C1pSwxo0EQxxWFd57SzsozBSnBmOp/f+LhlbKEUNQqvv/Wb1TUQ== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.1.tgz#c8a78a3f099c10251d8b58864536e8a0d6008cab" - integrity sha512-XQiQ9sLN/QJDOBFCQOK3uMn2FWWJyCGMoWEagPFCfbxkp6zfgOF4YbLfL0esL7AchlJlkW3cGBMFY/fH2TMQ5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.1.tgz#5f396b8dbbc5d0b2f144cc249f73038d7804a518" - integrity sha512-Vk0uqMhJcmUaehUt+0uZQaZBP+ppcVI5UYEUD3Hna0AZIgjwUVioQEhVAokelSkSAJXWn5J2tPEhk8mzZQXv3Q== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.1.tgz#cef625218795f1cb18d0ff09d1085d0e11d2bb19" - integrity sha512-kk0K33dPft3jP6PwEcoi6GP4xFxqxeFP7G29TKVg0JZ4b/a0rB4+nm14McG5bqWk1YjYNGKMx5hMlDLWxs0BIA== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.1.tgz#033e459d152535f235a311f066d8f6de1660786b" - integrity sha512-jYfmMgEm7sox+UKplALHzdawjZeNiCtvSHdDkvntUQkHzUvyAPqT9IpOZNxv5QqQqSlarqIcLqVIRKms46sJeg== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.1.tgz#07cf64c4fe5c4cc6e8f273c502ca403da82bef51" - integrity sha512-29T8dj+pWxZOZ42zmvm/Kgcxmd0g9/L2bjNqNQVhJEFDF5c+CrKYcqEfVKePf1mc80fWXe209I45VOzHCzzTnQ== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.1.tgz#15cffd28c9f5209bf3cdc805d55b54e4a749f4d1" - integrity sha512-FnbJprUHl3y0ShVqJJdKmZDuDrNEY70vuzhSt6DTHfRbtHo+i4+B9Tpt9vynGJkkug5sZEdjlRZSazoZfWlZ7A== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json index c206ba8c69..fd316e5807 100644 --- a/templates/module/angular/package.json +++ b/templates/module/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.0.5", - "@abp/ng.identity": "~3.0.5", - "@abp/ng.setting-management": "~3.0.5", - "@abp/ng.tenant-management": "~3.0.5", - "@abp/ng.theme.basic": "~3.0.5", + "@abp/ng.account": "~3.1.0-rc.2", + "@abp/ng.identity": "~3.1.0-rc.2", + "@abp/ng.setting-management": "~3.1.0-rc.2", + "@abp/ng.tenant-management": "~3.1.0-rc.2", + "@abp/ng.theme.basic": "~3.1.0-rc.2", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", @@ -33,7 +33,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~3.1.0-beta.2", + "@abp/ng.schematics": "~3.1.0-rc.2", "@angular-devkit/build-angular": "~0.1000.0", "@angular-devkit/build-ng-packagr": "~0.1000.0", "@angular/cli": "~10.0.0", diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json index b2b574a659..3de5eb4cbd 100644 --- a/templates/module/angular/projects/my-project-name/package.json +++ b/templates/module/angular/projects/my-project-name/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=3.0.5", - "@abp/ng.theme.shared": ">=3.0.5" + "@abp/ng.core": ">=3.1.0-rc.2", + "@abp/ng.theme.shared": ">=3.1.0-rc.2" }, "dependencies": { "tslib": "^2.0.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json index 6b42637f58..2aff27f377 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index b714e08268..c836cc49cb 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.1.tgz#fd545133049b015e02820d5500bf92a09fa5dcb6" - integrity sha512-Xtohi+W2OUJcWf5GykCsrXJo7VV+bPNw5r3rMTO+nFioOs9nOunYBA+8usEa4AfU/WL6oRG7S4P3Tw8h8m4ULw== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.1.tgz#0c4bb2653e8c93043f68ced23a8ef3f3c34ebb23" - integrity sha512-eCrpjEigpmFIjXnv9/6pz6cdoTBTZZw+aChSOIi8RdsDCbjUZrgfuarUoLjGFHUvyXd7DWXvc2PzjcGE7szBaw== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.1" - "@abp/bootstrap" "~3.1.0-rc.1" - "@abp/bootstrap-datepicker" "~3.1.0-rc.1" - "@abp/datatables.net-bs4" "~3.1.0-rc.1" - "@abp/font-awesome" "~3.1.0-rc.1" - "@abp/jquery-form" "~3.1.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.1" - "@abp/lodash" "~3.1.0-rc.1" - "@abp/luxon" "~3.1.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.1" - "@abp/select2" "~3.1.0-rc.1" - "@abp/sweetalert" "~3.1.0-rc.1" - "@abp/timeago" "~3.1.0-rc.1" - "@abp/toastr" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.1.tgz#e4300c82fedd2d45147e98e81fc3e72ffe21a616" - integrity sha512-xsJGb8HCP5ovUy9+2gHtFOFxO6mWQah/jjN1RsBnJTt5EnwKEiqOXrO+18PaRlczj7fLXOw1V0bNtHeeoy8bCg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.1.tgz#12bab980bb5d0c882f823a392d765286d6d74c9e" - integrity sha512-ZN2xv0wTzB18jAM/cKQNuq3VdYjrqtPqnoreLAebUcy1R/sAUxHZ06xIpGaSkSTwB+0GHGWjR3/SlUnnn/HFcw== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.1.tgz#ae71f1af5cbde21af08a5ca891fa7e118bde7f1e" - integrity sha512-2LnJOqxHjTwC/Z9cnSrChaJCL1k++QQDA90Nv9a3VVwbJ5pgwXtdWUZrLdK9lOEkZ17CE8WaD0tkSvSNt3FUNw== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.1.tgz#9192061da6b4cd6d5d80998366d0c31b1ee400d6" - integrity sha512-BJhVruTQBPeJRqFig2ZiJJrWOlX3dKYno4MxAMeIJGpLBRM79Bl3v5/081WRnwltfU7s0DvhLhqYGBQfKAst6w== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.1.0-rc.1" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.1.tgz#af3b3cfa4396d2877ad8c8a71cb92b2e166eb4a0" - integrity sha512-vFWQr0J5BUFnUO0eL/hfyzO0N6hXKI5IP8G3iaeFMgIvIRiwyWw34mwOYaP1vJN22tliOr14uyrX9Hex2oR2Ug== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.1.0-rc.1" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.1.tgz#60e391a39fad262a58497bd03087c7734dcee5d1" - integrity sha512-oKxHaVApFPm0Y5VMLXfQQsqaaxpXF/tCAz8dKOkBYDHhaGK0BNd/fi7hAu/uJBuQC/09ggGwqgdm96c9jfGBiw== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.1.tgz#0376d3db580155c02fe3152c80bb23edd35c7020" - integrity sha512-VCh3cvkGis1efno15iqY6fNB54LBGXZFC/m1eMGYm95Vni8S9ke0svzqAoQl8qFuI5XHNFNMur1XkAXXI+YPUA== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.1.tgz#eef048968b74803e870749e2c051f9910df54b87" - integrity sha512-+ePC75rVivoVyfaf68IZrZ+FEcHm/5m/YFUlhuD8pi6rFTW/YHkUVYlVBS3m+whXOcV4pJlAGNXcAKKmAEJGpg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.1.tgz#2b8cf680fde18b8ef33daa7b07e5c2d22c49f0f1" - integrity sha512-9EWGCJjFG/Hi/a+LMhif7u+jZ1P0an1PveRV/bOT+4l7+3+GkFaQiwv6WQkgCH7Xu3/YFn/ijOd5WWzlieekFg== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.1" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.1.tgz#968055ed850e1a30c7f7dede135fadf5cb9d2ba5" - integrity sha512-jiwHj4NeVEa2Fscw0h7Y1kiqL3/Xg54PJV/jl8BGXjGvV++3Q8KjZNeW+dNTPU2jAJpDy3VQ2InoMTT3zrGw8g== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.1.tgz#b08c608eb1157fe35e9c9c8b888c3606b3f61ef4" - integrity sha512-L7pRgW9OveYgMqHSKIFXUJaz4+nfCHWlwBtdFB/BQf9bKcv3gw/UEYGFOzTfZqPTxWyyFfSpB1DU+8QpDtOj6w== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.1.tgz#001247b438fbce87b87fc1189b0e95647087508a" - integrity sha512-2MvMowujQ3VfcjjJ164IKyJnbWjSnWSeHFaGbsUi6duZrCr9z94VKv+gQ64aUcPR2U70PoZLvggWF6lH+JMxtA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.1.tgz#2c58b1c41a206a8963b0bd0936819ab6701f63fe" - integrity sha512-0hCVvUJRtCh01qpZkGciE1+Sl393oI3I472C1pSwxo0EQxxWFd57SzsozBSnBmOp/f+LhlbKEUNQqvv/Wb1TUQ== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.1.tgz#c8a78a3f099c10251d8b58864536e8a0d6008cab" - integrity sha512-XQiQ9sLN/QJDOBFCQOK3uMn2FWWJyCGMoWEagPFCfbxkp6zfgOF4YbLfL0esL7AchlJlkW3cGBMFY/fH2TMQ5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.1.tgz#5f396b8dbbc5d0b2f144cc249f73038d7804a518" - integrity sha512-Vk0uqMhJcmUaehUt+0uZQaZBP+ppcVI5UYEUD3Hna0AZIgjwUVioQEhVAokelSkSAJXWn5J2tPEhk8mzZQXv3Q== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.1.tgz#cef625218795f1cb18d0ff09d1085d0e11d2bb19" - integrity sha512-kk0K33dPft3jP6PwEcoi6GP4xFxqxeFP7G29TKVg0JZ4b/a0rB4+nm14McG5bqWk1YjYNGKMx5hMlDLWxs0BIA== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.1.tgz#033e459d152535f235a311f066d8f6de1660786b" - integrity sha512-jYfmMgEm7sox+UKplALHzdawjZeNiCtvSHdDkvntUQkHzUvyAPqT9IpOZNxv5QqQqSlarqIcLqVIRKms46sJeg== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.1.tgz#07cf64c4fe5c4cc6e8f273c502ca403da82bef51" - integrity sha512-29T8dj+pWxZOZ42zmvm/Kgcxmd0g9/L2bjNqNQVhJEFDF5c+CrKYcqEfVKePf1mc80fWXe209I45VOzHCzzTnQ== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.1.tgz#15cffd28c9f5209bf3cdc805d55b54e4a749f4d1" - integrity sha512-FnbJprUHl3y0ShVqJJdKmZDuDrNEY70vuzhSt6DTHfRbtHo+i4+B9Tpt9vynGJkkug5sZEdjlRZSazoZfWlZ7A== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json index e0fde322e1..7103162cc8 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock index b714e08268..c836cc49cb 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.1.tgz#fd545133049b015e02820d5500bf92a09fa5dcb6" - integrity sha512-Xtohi+W2OUJcWf5GykCsrXJo7VV+bPNw5r3rMTO+nFioOs9nOunYBA+8usEa4AfU/WL6oRG7S4P3Tw8h8m4ULw== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.1.tgz#0c4bb2653e8c93043f68ced23a8ef3f3c34ebb23" - integrity sha512-eCrpjEigpmFIjXnv9/6pz6cdoTBTZZw+aChSOIi8RdsDCbjUZrgfuarUoLjGFHUvyXd7DWXvc2PzjcGE7szBaw== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.1" - "@abp/bootstrap" "~3.1.0-rc.1" - "@abp/bootstrap-datepicker" "~3.1.0-rc.1" - "@abp/datatables.net-bs4" "~3.1.0-rc.1" - "@abp/font-awesome" "~3.1.0-rc.1" - "@abp/jquery-form" "~3.1.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.1" - "@abp/lodash" "~3.1.0-rc.1" - "@abp/luxon" "~3.1.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.1" - "@abp/select2" "~3.1.0-rc.1" - "@abp/sweetalert" "~3.1.0-rc.1" - "@abp/timeago" "~3.1.0-rc.1" - "@abp/toastr" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.1.tgz#e4300c82fedd2d45147e98e81fc3e72ffe21a616" - integrity sha512-xsJGb8HCP5ovUy9+2gHtFOFxO6mWQah/jjN1RsBnJTt5EnwKEiqOXrO+18PaRlczj7fLXOw1V0bNtHeeoy8bCg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.1.tgz#12bab980bb5d0c882f823a392d765286d6d74c9e" - integrity sha512-ZN2xv0wTzB18jAM/cKQNuq3VdYjrqtPqnoreLAebUcy1R/sAUxHZ06xIpGaSkSTwB+0GHGWjR3/SlUnnn/HFcw== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.1.tgz#ae71f1af5cbde21af08a5ca891fa7e118bde7f1e" - integrity sha512-2LnJOqxHjTwC/Z9cnSrChaJCL1k++QQDA90Nv9a3VVwbJ5pgwXtdWUZrLdK9lOEkZ17CE8WaD0tkSvSNt3FUNw== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.1.tgz#9192061da6b4cd6d5d80998366d0c31b1ee400d6" - integrity sha512-BJhVruTQBPeJRqFig2ZiJJrWOlX3dKYno4MxAMeIJGpLBRM79Bl3v5/081WRnwltfU7s0DvhLhqYGBQfKAst6w== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.1.0-rc.1" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.1.tgz#af3b3cfa4396d2877ad8c8a71cb92b2e166eb4a0" - integrity sha512-vFWQr0J5BUFnUO0eL/hfyzO0N6hXKI5IP8G3iaeFMgIvIRiwyWw34mwOYaP1vJN22tliOr14uyrX9Hex2oR2Ug== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.1.0-rc.1" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.1.tgz#60e391a39fad262a58497bd03087c7734dcee5d1" - integrity sha512-oKxHaVApFPm0Y5VMLXfQQsqaaxpXF/tCAz8dKOkBYDHhaGK0BNd/fi7hAu/uJBuQC/09ggGwqgdm96c9jfGBiw== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.1.tgz#0376d3db580155c02fe3152c80bb23edd35c7020" - integrity sha512-VCh3cvkGis1efno15iqY6fNB54LBGXZFC/m1eMGYm95Vni8S9ke0svzqAoQl8qFuI5XHNFNMur1XkAXXI+YPUA== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.1.tgz#eef048968b74803e870749e2c051f9910df54b87" - integrity sha512-+ePC75rVivoVyfaf68IZrZ+FEcHm/5m/YFUlhuD8pi6rFTW/YHkUVYlVBS3m+whXOcV4pJlAGNXcAKKmAEJGpg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.1.tgz#2b8cf680fde18b8ef33daa7b07e5c2d22c49f0f1" - integrity sha512-9EWGCJjFG/Hi/a+LMhif7u+jZ1P0an1PveRV/bOT+4l7+3+GkFaQiwv6WQkgCH7Xu3/YFn/ijOd5WWzlieekFg== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.1" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.1.tgz#968055ed850e1a30c7f7dede135fadf5cb9d2ba5" - integrity sha512-jiwHj4NeVEa2Fscw0h7Y1kiqL3/Xg54PJV/jl8BGXjGvV++3Q8KjZNeW+dNTPU2jAJpDy3VQ2InoMTT3zrGw8g== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.1.tgz#b08c608eb1157fe35e9c9c8b888c3606b3f61ef4" - integrity sha512-L7pRgW9OveYgMqHSKIFXUJaz4+nfCHWlwBtdFB/BQf9bKcv3gw/UEYGFOzTfZqPTxWyyFfSpB1DU+8QpDtOj6w== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.1.tgz#001247b438fbce87b87fc1189b0e95647087508a" - integrity sha512-2MvMowujQ3VfcjjJ164IKyJnbWjSnWSeHFaGbsUi6duZrCr9z94VKv+gQ64aUcPR2U70PoZLvggWF6lH+JMxtA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.1.tgz#2c58b1c41a206a8963b0bd0936819ab6701f63fe" - integrity sha512-0hCVvUJRtCh01qpZkGciE1+Sl393oI3I472C1pSwxo0EQxxWFd57SzsozBSnBmOp/f+LhlbKEUNQqvv/Wb1TUQ== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.1.tgz#c8a78a3f099c10251d8b58864536e8a0d6008cab" - integrity sha512-XQiQ9sLN/QJDOBFCQOK3uMn2FWWJyCGMoWEagPFCfbxkp6zfgOF4YbLfL0esL7AchlJlkW3cGBMFY/fH2TMQ5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.1.tgz#5f396b8dbbc5d0b2f144cc249f73038d7804a518" - integrity sha512-Vk0uqMhJcmUaehUt+0uZQaZBP+ppcVI5UYEUD3Hna0AZIgjwUVioQEhVAokelSkSAJXWn5J2tPEhk8mzZQXv3Q== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.1.tgz#cef625218795f1cb18d0ff09d1085d0e11d2bb19" - integrity sha512-kk0K33dPft3jP6PwEcoi6GP4xFxqxeFP7G29TKVg0JZ4b/a0rB4+nm14McG5bqWk1YjYNGKMx5hMlDLWxs0BIA== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.1.tgz#033e459d152535f235a311f066d8f6de1660786b" - integrity sha512-jYfmMgEm7sox+UKplALHzdawjZeNiCtvSHdDkvntUQkHzUvyAPqT9IpOZNxv5QqQqSlarqIcLqVIRKms46sJeg== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.1.tgz#07cf64c4fe5c4cc6e8f273c502ca403da82bef51" - integrity sha512-29T8dj+pWxZOZ42zmvm/Kgcxmd0g9/L2bjNqNQVhJEFDF5c+CrKYcqEfVKePf1mc80fWXe209I45VOzHCzzTnQ== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.1.tgz#15cffd28c9f5209bf3cdc805d55b54e4a749f4d1" - integrity sha512-FnbJprUHl3y0ShVqJJdKmZDuDrNEY70vuzhSt6DTHfRbtHo+i4+B9Tpt9vynGJkkug5sZEdjlRZSazoZfWlZ7A== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json index e0fde322e1..7103162cc8 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock index 183cefac3e..f1a5b49588 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.1.tgz#fd545133049b015e02820d5500bf92a09fa5dcb6" - integrity sha512-Xtohi+W2OUJcWf5GykCsrXJo7VV+bPNw5r3rMTO+nFioOs9nOunYBA+8usEa4AfU/WL6oRG7S4P3Tw8h8m4ULw== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.1.tgz#0c4bb2653e8c93043f68ced23a8ef3f3c34ebb23" - integrity sha512-eCrpjEigpmFIjXnv9/6pz6cdoTBTZZw+aChSOIi8RdsDCbjUZrgfuarUoLjGFHUvyXd7DWXvc2PzjcGE7szBaw== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.1" - "@abp/bootstrap" "~3.1.0-rc.1" - "@abp/bootstrap-datepicker" "~3.1.0-rc.1" - "@abp/datatables.net-bs4" "~3.1.0-rc.1" - "@abp/font-awesome" "~3.1.0-rc.1" - "@abp/jquery-form" "~3.1.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.1" - "@abp/lodash" "~3.1.0-rc.1" - "@abp/luxon" "~3.1.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.1" - "@abp/select2" "~3.1.0-rc.1" - "@abp/sweetalert" "~3.1.0-rc.1" - "@abp/timeago" "~3.1.0-rc.1" - "@abp/toastr" "~3.1.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.1.tgz#e4300c82fedd2d45147e98e81fc3e72ffe21a616" - integrity sha512-xsJGb8HCP5ovUy9+2gHtFOFxO6mWQah/jjN1RsBnJTt5EnwKEiqOXrO+18PaRlczj7fLXOw1V0bNtHeeoy8bCg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" + integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" + integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" + "@abp/bootstrap" "~3.1.0-rc.2" + "@abp/bootstrap-datepicker" "~3.1.0-rc.2" + "@abp/datatables.net-bs4" "~3.1.0-rc.2" + "@abp/font-awesome" "~3.1.0-rc.2" + "@abp/jquery-form" "~3.1.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" + "@abp/lodash" "~3.1.0-rc.2" + "@abp/luxon" "~3.1.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" + "@abp/select2" "~3.1.0-rc.2" + "@abp/sweetalert" "~3.1.0-rc.2" + "@abp/timeago" "~3.1.0-rc.2" + "@abp/toastr" "~3.1.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" + integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.1.tgz#12bab980bb5d0c882f823a392d765286d6d74c9e" - integrity sha512-ZN2xv0wTzB18jAM/cKQNuq3VdYjrqtPqnoreLAebUcy1R/sAUxHZ06xIpGaSkSTwB+0GHGWjR3/SlUnnn/HFcw== +"@abp/bootstrap-datepicker@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" + integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.1.tgz#ae71f1af5cbde21af08a5ca891fa7e118bde7f1e" - integrity sha512-2LnJOqxHjTwC/Z9cnSrChaJCL1k++QQDA90Nv9a3VVwbJ5pgwXtdWUZrLdK9lOEkZ17CE8WaD0tkSvSNt3FUNw== +"@abp/bootstrap@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" + integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.1.tgz#9192061da6b4cd6d5d80998366d0c31b1ee400d6" - integrity sha512-BJhVruTQBPeJRqFig2ZiJJrWOlX3dKYno4MxAMeIJGpLBRM79Bl3v5/081WRnwltfU7s0DvhLhqYGBQfKAst6w== +"@abp/core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" + integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== dependencies: - "@abp/utils" "^3.1.0-rc.1" + "@abp/utils" "^3.1.0-rc.2" -"@abp/datatables.net-bs4@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.1.tgz#af3b3cfa4396d2877ad8c8a71cb92b2e166eb4a0" - integrity sha512-vFWQr0J5BUFnUO0eL/hfyzO0N6hXKI5IP8G3iaeFMgIvIRiwyWw34mwOYaP1vJN22tliOr14uyrX9Hex2oR2Ug== +"@abp/datatables.net-bs4@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" + integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== dependencies: - "@abp/datatables.net" "~3.1.0-rc.1" + "@abp/datatables.net" "~3.1.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.1.tgz#60e391a39fad262a58497bd03087c7734dcee5d1" - integrity sha512-oKxHaVApFPm0Y5VMLXfQQsqaaxpXF/tCAz8dKOkBYDHhaGK0BNd/fi7hAu/uJBuQC/09ggGwqgdm96c9jfGBiw== +"@abp/datatables.net@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" + integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.1.tgz#0376d3db580155c02fe3152c80bb23edd35c7020" - integrity sha512-VCh3cvkGis1efno15iqY6fNB54LBGXZFC/m1eMGYm95Vni8S9ke0svzqAoQl8qFuI5XHNFNMur1XkAXXI+YPUA== +"@abp/font-awesome@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" + integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.1.tgz#eef048968b74803e870749e2c051f9910df54b87" - integrity sha512-+ePC75rVivoVyfaf68IZrZ+FEcHm/5m/YFUlhuD8pi6rFTW/YHkUVYlVBS3m+whXOcV4pJlAGNXcAKKmAEJGpg== +"@abp/jquery-form@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" + integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.1.tgz#2b8cf680fde18b8ef33daa7b07e5c2d22c49f0f1" - integrity sha512-9EWGCJjFG/Hi/a+LMhif7u+jZ1P0an1PveRV/bOT+4l7+3+GkFaQiwv6WQkgCH7Xu3/YFn/ijOd5WWzlieekFg== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" + integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.1" + "@abp/jquery-validation" "~3.1.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.1.tgz#968055ed850e1a30c7f7dede135fadf5cb9d2ba5" - integrity sha512-jiwHj4NeVEa2Fscw0h7Y1kiqL3/Xg54PJV/jl8BGXjGvV++3Q8KjZNeW+dNTPU2jAJpDy3VQ2InoMTT3zrGw8g== +"@abp/jquery-validation@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" + integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.1.tgz#b08c608eb1157fe35e9c9c8b888c3606b3f61ef4" - integrity sha512-L7pRgW9OveYgMqHSKIFXUJaz4+nfCHWlwBtdFB/BQf9bKcv3gw/UEYGFOzTfZqPTxWyyFfSpB1DU+8QpDtOj6w== +"@abp/jquery@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" + integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.1.tgz#001247b438fbce87b87fc1189b0e95647087508a" - integrity sha512-2MvMowujQ3VfcjjJ164IKyJnbWjSnWSeHFaGbsUi6duZrCr9z94VKv+gQ64aUcPR2U70PoZLvggWF6lH+JMxtA== +"@abp/lodash@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" + integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.1.tgz#2c58b1c41a206a8963b0bd0936819ab6701f63fe" - integrity sha512-0hCVvUJRtCh01qpZkGciE1+Sl393oI3I472C1pSwxo0EQxxWFd57SzsozBSnBmOp/f+LhlbKEUNQqvv/Wb1TUQ== +"@abp/luxon@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" + integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.1.tgz#c8a78a3f099c10251d8b58864536e8a0d6008cab" - integrity sha512-XQiQ9sLN/QJDOBFCQOK3uMn2FWWJyCGMoWEagPFCfbxkp6zfgOF4YbLfL0esL7AchlJlkW3cGBMFY/fH2TMQ5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" + integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.1.tgz#5f396b8dbbc5d0b2f144cc249f73038d7804a518" - integrity sha512-Vk0uqMhJcmUaehUt+0uZQaZBP+ppcVI5UYEUD3Hna0AZIgjwUVioQEhVAokelSkSAJXWn5J2tPEhk8mzZQXv3Q== +"@abp/select2@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" + integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.1.tgz#cef625218795f1cb18d0ff09d1085d0e11d2bb19" - integrity sha512-kk0K33dPft3jP6PwEcoi6GP4xFxqxeFP7G29TKVg0JZ4b/a0rB4+nm14McG5bqWk1YjYNGKMx5hMlDLWxs0BIA== +"@abp/sweetalert@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" + integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== dependencies: - "@abp/core" "~3.1.0-rc.1" + "@abp/core" "~3.1.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.1.tgz#033e459d152535f235a311f066d8f6de1660786b" - integrity sha512-jYfmMgEm7sox+UKplALHzdawjZeNiCtvSHdDkvntUQkHzUvyAPqT9IpOZNxv5QqQqSlarqIcLqVIRKms46sJeg== +"@abp/timeago@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" + integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.1.tgz#07cf64c4fe5c4cc6e8f273c502ca403da82bef51" - integrity sha512-29T8dj+pWxZOZ42zmvm/Kgcxmd0g9/L2bjNqNQVhJEFDF5c+CrKYcqEfVKePf1mc80fWXe209I45VOzHCzzTnQ== +"@abp/toastr@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" + integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== dependencies: - "@abp/jquery" "~3.1.0-rc.1" + "@abp/jquery" "~3.1.0-rc.2" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.1": - version "3.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.1.tgz#15cffd28c9f5209bf3cdc805d55b54e4a749f4d1" - integrity sha512-FnbJprUHl3y0ShVqJJdKmZDuDrNEY70vuzhSt6DTHfRbtHo+i4+B9Tpt9vynGJkkug5sZEdjlRZSazoZfWlZ7A== +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== dependencies: just-compare "^1.3.0" From 6b4bcb005487f512ffa9f5e54f3610aceafb295f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 26 Aug 2020 13:49:30 +0300 Subject: [PATCH 062/474] Implement WebAssemblyCurrentPrincipalAccessor (temporary solution) --- ...blyCachedApplicationConfigurationClient.cs | 35 ++++++++++++----- .../WebAssembly/WebAssemblyCurrentUser.cs | 39 +++++++++++++++++++ .../ICachedApplicationConfigurationClient.cs | 6 ++- .../Client/RemoteLocalizationContributor.cs | 4 +- ...MvcCachedApplicationConfigurationClient.cs | 19 +++++++++ .../Claims/CurrentPrincipalAccessorBase.cs | 30 ++++++++++++++ .../Claims/ThreadCurrentPrincipalAccessor.cs | 26 ++----------- .../App.razor | 9 +++++ .../Pages/RoleManagement.razor | 5 ++- 9 files changed, 137 insertions(+), 36 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentUser.cs create mode 100644 framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/CurrentPrincipalAccessorBase.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs index 1cf46caa7d..ab9b18f812 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs @@ -1,36 +1,53 @@ -using System.Globalization; -using System.Threading.Tasks; +using System.Threading.Tasks; +using Microsoft.Extensions.Caching.Memory; using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; using Volo.Abp.AspNetCore.Mvc.Client; using Volo.Abp.DependencyInjection; using Volo.Abp.Http.Client.DynamicProxying; -using Volo.Abp.Users; namespace Volo.Abp.AspNetCore.Components.WebAssembly { public class WebAssemblyCachedApplicationConfigurationClient : ICachedApplicationConfigurationClient, ITransientDependency { protected IHttpClientProxy Proxy { get; } - protected ICurrentUser CurrentUser { get; } + + protected IMemoryCache Cache { get; } public WebAssemblyCachedApplicationConfigurationClient( IHttpClientProxy proxy, - ICurrentUser currentUser) + IMemoryCache cache) { Proxy = proxy; - CurrentUser = currentUser; + Cache = cache; + } + + public async Task InitializeAsync() + { + await GetAsync(); } public async Task GetAsync() { - //TODO: Cache + return await Cache.GetOrCreateAsync( + CreateCacheKey(), + e => Proxy.Service.GetAsync() + ); + } + + public ApplicationConfigurationDto Get() + { + var cacheKey = CreateCacheKey(); + if(Cache.TryGetValue(cacheKey, out ApplicationConfigurationDto value)) + { + return value; + } - return await Proxy.Service.GetAsync(); + throw new AbpException($"Should initialize the {nameof(ICachedApplicationConfigurationClient)} before getting the value!"); } protected virtual string CreateCacheKey() { - return $"ApplicationConfiguration_{CurrentUser.Id?.ToString("N") ?? "Anonymous"}_{CultureInfo.CurrentUICulture.Name}"; + return $"ApplicationConfiguration"; } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentUser.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentUser.cs new file mode 100644 index 0000000000..675f01196d --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentUser.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using System.Security.Claims; +using Volo.Abp.AspNetCore.Mvc.Client; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Security.Claims; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly +{ + public class WebAssemblyCurrentPrincipalAccessor : CurrentPrincipalAccessorBase, ITransientDependency + { + protected ICachedApplicationConfigurationClient ConfigurationClient { get; } + + public WebAssemblyCurrentPrincipalAccessor(ICachedApplicationConfigurationClient configurationClient) + { + ConfigurationClient = configurationClient; + } + + protected override ClaimsPrincipal GetClaimsPrincipal() + { + //TODO: Should be optimized! Or should be replaced? + + var configuration = ConfigurationClient.Get(); + + var claims = new List(); + + claims.Add(new Claim(AbpClaimTypes.UserName,configuration.CurrentUser.UserName)); + claims.Add(new Claim(AbpClaimTypes.Email,configuration.CurrentUser.Email)); + claims.Add(new Claim(AbpClaimTypes.UserId,configuration.CurrentUser.Id.ToString())); + claims.Add(new Claim(AbpClaimTypes.TenantId,configuration.CurrentUser.TenantId.ToString())); + + foreach (var role in configuration.CurrentUser.Roles) + { + claims.Add(new Claim(AbpClaimTypes.Role, role)); + } + + return new ClaimsPrincipal(new ClaimsIdentity(claims)); + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/ICachedApplicationConfigurationClient.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/ICachedApplicationConfigurationClient.cs index 71d9d8cddf..d08ca7013e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/ICachedApplicationConfigurationClient.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/ICachedApplicationConfigurationClient.cs @@ -5,6 +5,10 @@ namespace Volo.Abp.AspNetCore.Mvc.Client { public interface ICachedApplicationConfigurationClient { + Task InitializeAsync(); + Task GetAsync(); + + ApplicationConfigurationDto Get(); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs index d60256a501..b179856842 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs @@ -55,7 +55,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Client private Dictionary GetResourceOrNull() { - var applicationConfigurationDto = AsyncHelper.RunSync(() => _applicationConfigurationClient.GetAsync()); + var applicationConfigurationDto = _applicationConfigurationClient.Get(); var resource = applicationConfigurationDto .Localization.Values @@ -69,4 +69,4 @@ namespace Volo.Abp.AspNetCore.Mvc.Client return resource; } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs index 0c173b5ecf..a357d959b2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs @@ -7,6 +7,7 @@ using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; using Volo.Abp.Caching; using Volo.Abp.DependencyInjection; using Volo.Abp.Http.Client.DynamicProxying; +using Volo.Abp.Threading; using Volo.Abp.Users; namespace Volo.Abp.AspNetCore.Mvc.Client @@ -30,6 +31,11 @@ namespace Volo.Abp.AspNetCore.Mvc.Client Cache = cache; } + public async Task InitializeAsync() + { + await GetAsync(); + } + public async Task GetAsync() { var cacheKey = CreateCacheKey(); @@ -57,6 +63,19 @@ namespace Volo.Abp.AspNetCore.Mvc.Client return configuration; } + public ApplicationConfigurationDto Get() + { + var cacheKey = CreateCacheKey(); + var httpContext = HttpContextAccessor?.HttpContext; + + if (httpContext != null && httpContext.Items[cacheKey] is ApplicationConfigurationDto configuration) + { + return configuration; + } + + return AsyncHelper.RunSync(GetAsync); + } + protected virtual string CreateCacheKey() { return $"ApplicationConfiguration_{CurrentUser.Id?.ToString("N") ?? "Anonymous"}_{CultureInfo.CurrentUICulture.Name}"; diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/CurrentPrincipalAccessorBase.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/CurrentPrincipalAccessorBase.cs new file mode 100644 index 0000000000..0ebedc8d44 --- /dev/null +++ b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/CurrentPrincipalAccessorBase.cs @@ -0,0 +1,30 @@ +using System; +using System.Security.Claims; +using System.Threading; + +namespace Volo.Abp.Security.Claims +{ + public abstract class CurrentPrincipalAccessorBase : ICurrentPrincipalAccessor + { + public ClaimsPrincipal Principal => _currentPrincipal.Value ?? GetClaimsPrincipal(); + + private readonly AsyncLocal _currentPrincipal = new AsyncLocal(); + + protected abstract ClaimsPrincipal GetClaimsPrincipal(); + + public virtual IDisposable Change(ClaimsPrincipal principal) + { + return SetCurrent(principal); + } + + private IDisposable SetCurrent(ClaimsPrincipal principal) + { + var parent = Principal; + _currentPrincipal.Value = principal; + return new DisposeAction(() => + { + _currentPrincipal.Value = parent; + }); + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/ThreadCurrentPrincipalAccessor.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/ThreadCurrentPrincipalAccessor.cs index ad496ba916..ea7ed7106f 100644 --- a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/ThreadCurrentPrincipalAccessor.cs +++ b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/ThreadCurrentPrincipalAccessor.cs @@ -1,34 +1,14 @@ -using System; -using System.Security.Claims; +using System.Security.Claims; using System.Threading; using Volo.Abp.DependencyInjection; namespace Volo.Abp.Security.Claims { - public class ThreadCurrentPrincipalAccessor : ICurrentPrincipalAccessor, ISingletonDependency + public class ThreadCurrentPrincipalAccessor : CurrentPrincipalAccessorBase, ISingletonDependency { - public ClaimsPrincipal Principal => _currentPrincipal.Value ?? GetClaimsPrincipal(); - - private readonly AsyncLocal _currentPrincipal = new AsyncLocal(); - - protected virtual ClaimsPrincipal GetClaimsPrincipal() + protected override ClaimsPrincipal GetClaimsPrincipal() { return Thread.CurrentPrincipal as ClaimsPrincipal; } - - public virtual IDisposable Change(ClaimsPrincipal principal) - { - return SetCurrent(principal); - } - - private IDisposable SetCurrent(ClaimsPrincipal principal) - { - var parent = Principal; - _currentPrincipal.Value = principal; - return new DisposeAction(() => - { - _currentPrincipal.Value = parent; - }); - } } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor index f5abd22444..f96456573f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor @@ -1,3 +1,5 @@ +@using Volo.Abp.AspNetCore.Mvc.Client +@inject ICachedApplicationConfigurationClient ConfigurationClient @@ -21,3 +23,10 @@ +@code +{ + protected override async Task OnInitializedAsync() + { + await ConfigurationClient.InitializeAsync(); + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index f72590add0..efb95d799c 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -2,10 +2,13 @@ @attribute [Authorize] @using Volo.Abp.Identity @using Microsoft.AspNetCore.Authorization +@using Microsoft.Extensions.Localization @using Volo.Abp.Application.Dtos +@using Volo.Abp.Identity.Localization @inject IIdentityRoleAppService RoleAppService +@inject IStringLocalizer L -

    Roles

    +

    @L["Roles"]

    @if (_roles != null) { From 2a784d2de0e5d1f798a06e458c5bfaf67c7b56b0 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 26 Aug 2020 13:51:25 +0300 Subject: [PATCH 063/474] Cli: fix UpdateChannel.Prerelease update info --- framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs index ef6eb79042..3918a18657 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs @@ -190,8 +190,7 @@ namespace Volo.Abp.Cli break; case UpdateChannel.Prerelease: - Logger.LogWarning($"dotnet tool uninstall {toolPathArg} Volo.Abp.Cli"); - Logger.LogWarning($"dotnet tool install {toolPathArg} Volo.Abp.Cli --version {latestVersion}"); + Logger.LogWarning($"dotnet tool update {toolPathArg} Volo.Abp.Cli --version {latestVersion}"); break; case UpdateChannel.Nightly: From dd13fc2b17624194186fd3c970c4e905e5c4bf1a Mon Sep 17 00:00:00 2001 From: EngincanV Date: Wed, 26 Aug 2020 16:22:33 +0300 Subject: [PATCH 064/474] CmsKit: GetCurrentUserRatingAsync added --- .../Volo/CmsKit/Ratings/IRatingRepository.cs | 7 +++ .../CmsKit/Ratings/EfCoreRatingRepository.cs | 10 ++++ .../MongoDB/Ratings/MongoRatingRepository.cs | 13 ++++ .../Public/Ratings/IRatingPublicAppService.cs | 4 +- .../PublicApplicationAutoMapperProfile.cs | 4 ++ .../Public/Ratings/RatingPublicAppService.cs | 10 ++++ .../Volo.CmsKit.Public.HttpApi.csproj | 32 +++++----- .../Public/Ratings/RatingPublicController.cs | 59 +++++++++++++++++++ .../CmsKitPublicWidgetsController.cs | 4 +- .../Components/Rating/RatingViewComponent.cs | 56 +++++++++++++++++- 10 files changed, 177 insertions(+), 22 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs index e7a25b1709..d889c4b678 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs @@ -14,5 +14,12 @@ namespace Volo.CmsKit.Ratings [NotNull] string entityId, CancellationToken cancellationToken = default ); + + Task GetCurrentUserRatingAsync( + [NotNull] string entityType, + [NotNull] string entityId, + Guid userId, + CancellationToken cancellationToken = default + ); } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs index 36ed50ad35..b7e53e9b59 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs @@ -28,5 +28,15 @@ namespace Volo.CmsKit.Ratings return ratings; } + + public async Task GetCurrentUserRatingAsync(string entityType, string entityId, Guid userId, CancellationToken cancellationToken = default) + { + Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); + Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); + + var rating = await DbSet.FirstOrDefaultAsync(r => r.EntityType == entityType && r.EntityId == entityId && r.CreatorId == userId, GetCancellationToken(cancellationToken)); + + return rating; + } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs index a7b5fa33b2..93509233f0 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs @@ -27,5 +27,18 @@ namespace Volo.CmsKit.MongoDB.Ratings return ratings; } + + public async Task GetCurrentUserRatingAsync(string entityType, string entityId, Guid userId, + CancellationToken cancellationToken = default) + { + Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); + Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); + + var rating = await GetMongoQueryable() + .FirstOrDefaultAsync(r => r.EntityType == entityType && r.EntityId == entityId && r.CreatorId == userId, + GetCancellationToken(cancellationToken)); + + return rating; + } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs index d72d9dd365..79785913bb 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs @@ -8,11 +8,13 @@ namespace Volo.CmsKit.Public.Ratings public interface IRatingPublicAppService : IApplicationService { Task> GetListAsync(string entityType, string entityId); - + Task CreateAsync(string entityType, string entityId, CreateRatingInput input); Task UpdateAsync(Guid id, UpdateRatingInput input); Task DeleteAsync(Guid id); + + Task GetCurrentUserRatingAsync(string entityType, string entityId); } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs index e0b64bb0e8..3ac2d1949b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs @@ -2,6 +2,8 @@ using Volo.Abp.AutoMapper; using Volo.CmsKit.Comments; using Volo.CmsKit.Public.Comments; +using Volo.CmsKit.Public.Ratings; +using Volo.CmsKit.Ratings; using Volo.CmsKit.Users; namespace Volo.CmsKit.Public @@ -18,6 +20,8 @@ namespace Volo.CmsKit.Public CreateMap() .Ignore(x=> x.Replies) .Ignore(x=> x.Author); + + CreateMap(); } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs index 4eb5e8e9ed..43bc6546aa 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs @@ -78,5 +78,15 @@ namespace Volo.CmsKit.Public.Ratings await RatingRepository.DeleteAsync(id); } + + [Authorize] + public virtual async Task GetCurrentUserRatingAsync(string entityType, string entityId) + { + var currentUserId = CurrentUser.GetId(); + + var rating = await RatingRepository.GetCurrentUserRatingAsync(entityType, entityId, currentUserId); + + return ObjectMapper.Map(rating); + } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.csproj b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.csproj index da54b3d2bf..ec87dac00f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.csproj @@ -1,16 +1,16 @@ - - - - - - - netcoreapp3.1 - - - - - - - - - + + + + + + + netcoreapp3.1 + + + + + + + + + diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs new file mode 100644 index 0000000000..c6f6355e75 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs @@ -0,0 +1,59 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.GlobalFeatures; +using Volo.CmsKit.GlobalFeatures; + +namespace Volo.CmsKit.Public.Ratings +{ + [RequiresGlobalFeature(typeof(RatingsFeature))] + [RemoteService(Name = CmsKitPublicRemoteServiceConsts.RemoteServiceName)] + [Area("cms-kit")] + [Route("api/cms-kit-public/ratings")] + public class RatingPublicController : CmsKitPublicControllerBase, IRatingPublicAppService + { + protected IRatingPublicAppService RatingPublicAppService { get; } + + public RatingPublicController(IRatingPublicAppService ratingPublicAppService) + { + RatingPublicAppService = ratingPublicAppService; + } + + [HttpGet] + [Route("{entityType}/{entityId}")] + public virtual Task> GetListAsync(string entityType, string entityId) + { + return RatingPublicAppService.GetListAsync(entityType, entityId); + } + + [HttpPut] + [Route("{entityType}/{entityId}")] + public virtual Task CreateAsync(string entityType, string entityId, CreateRatingInput input) + { + return RatingPublicAppService.CreateAsync(entityType, entityId, input); + } + + [HttpPut] + [Route("{id}")] + public virtual Task UpdateAsync(Guid id, UpdateRatingInput input) + { + return RatingPublicAppService.UpdateAsync(id, input); + } + + [HttpDelete] + [Route("{id}")] + public Task DeleteAsync(Guid id) + { + return RatingPublicAppService.DeleteAsync(id); + } + + [HttpGet] + [Route("{entityType}/{entityId}")] + public Task GetCurrentUserRatingAsync(string entityType, string entityId) + { + return RatingPublicAppService.GetCurrentUserRatingAsync(entityType, entityId); + } + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Controllers/CmsKitPublicWidgetsController.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Controllers/CmsKitPublicWidgetsController.cs index 7cc9c410c4..e0b1f9d6f3 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Controllers/CmsKitPublicWidgetsController.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Controllers/CmsKitPublicWidgetsController.cs @@ -18,9 +18,9 @@ namespace Volo.CmsKit.Public.Web.Controllers return Task.FromResult((IActionResult)ViewComponent(typeof(CommentingViewComponent), new {entityType, entityId})); } - public Task Rating() + public Task Rating(string entityType, string entityId) { - return Task.FromResult((IActionResult) ViewComponent(typeof(RatingViewComponent))); + return Task.FromResult((IActionResult) ViewComponent(typeof(RatingViewComponent), new {entityType, entityId})); } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs index f77759ac20..cabae790c0 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs @@ -1,6 +1,12 @@ -using Microsoft.AspNetCore.Mvc; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI; using Volo.Abp.AspNetCore.Mvc.UI.Widgets; +using Volo.Abp.Users; +using Volo.CmsKit.Public.Ratings; namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating { @@ -12,9 +18,53 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating )] public class RatingViewComponent : AbpViewComponent { - public IViewComponentResult Invoke() + public IRatingPublicAppService RatingPublicAppService { get; } + public AbpMvcUiOptions AbpMvcUiOptions { get; } + public ICurrentUser CurrentUser { get; } + + public RatingViewComponent(IRatingPublicAppService ratingPublicAppService, IOptions options, ICurrentUser currentUser) + { + RatingPublicAppService = ratingPublicAppService; + AbpMvcUiOptions = options.Value; + CurrentUser = currentUser; + } + + public virtual async Task InvokeAsync(string entityType, string entityId) { - return View("~/Pages/CmsKit/Shared/Components/Rating/Default.cshtml"); + var ratings = await RatingPublicAppService.GetListAsync(entityType, entityId); + + RatingDto currentUserRating = null; + if (CurrentUser.IsAuthenticated) + { + currentUserRating = await RatingPublicAppService.GetCurrentUserRatingAsync(entityType, entityId); + } + + var loginUrl = + $"{AbpMvcUiOptions.LoginUrl}?returnUrl={HttpContext.Request.Path.ToString()}&returnUrlHash=#cms-comment_{entityType}_{entityId}"; + + var viewModel = new RatingViewModel + { + EntityId = entityId, + EntityType = entityType, + LoginUrl = loginUrl, + Ratings = ratings.Items, + CurrentRating = currentUserRating + }; + + return View("~/Pages/CmsKit/Shared/Components/Rating/Default.cshtml", viewModel); } } + + public class RatingViewModel + { + public string EntityType { get; set; } + + public string EntityId { get; set; } + + public string LoginUrl { get; set; } + + public IReadOnlyList Ratings { get; set; } + + public RatingDto CurrentRating { get; set; } + } } \ No newline at end of file From c043450d1da779e6665b167099a8efcf8b2d8789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Wed, 26 Aug 2020 21:00:14 +0300 Subject: [PATCH 065/474] Update abp.resourcemapping.js --- npm/packs/cropperjs/abp.resourcemapping.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/npm/packs/cropperjs/abp.resourcemapping.js b/npm/packs/cropperjs/abp.resourcemapping.js index 68cc55b64e..0a2f369710 100644 --- a/npm/packs/cropperjs/abp.resourcemapping.js +++ b/npm/packs/cropperjs/abp.resourcemapping.js @@ -1,6 +1,6 @@ module.exports = { - mappings: { - "@node_modules/cropperjs/dist/cropper.min.js": "@libs/cropperjs/js/", - "@node_modules/cropperjs/dist/cropper.min.css": "@libs/cropperjs/css/" - } -} \ No newline at end of file + mappings: { + "@node_modules/cropperjs/dist/cropper.min.js": "@libs/cropperjs/js/", + "@node_modules/cropperjs/dist/cropper.min.css": "@libs/cropperjs/css/", + }, +}; From d3da53a81111307fb23f660e068aa1ff93e780ac Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 27 Aug 2020 10:54:32 +0300 Subject: [PATCH 066/474] Create abp.luxon.js --- .../wwwroot/libs/abp/luxon/abp.luxon.js | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/luxon/abp.luxon.js diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/luxon/abp.luxon.js b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/luxon/abp.luxon.js new file mode 100644 index 0000000000..b04de7cadf --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/luxon/abp.luxon.js @@ -0,0 +1,46 @@ +var abp = abp || {}; +(function () { + + if (!luxon) { + throw "abp/luxon library requires the luxon library included to the page!"; + } + + /* TIMING *************************************************/ + + abp.timing = abp.timing || {}; + + var setObjectValue = function (obj, property, value) { + if (typeof property === "string") { + property = property.split('.'); + } + + if (property.length > 1) { + var p = property.shift(); + setObjectValue(obj[p], property, value); + } else { + obj[property[0]] = value; + } + } + + var getObjectValue = function (obj, property) { + return property.split('.').reduce((a, v) => a[v], obj) + } + + abp.timing.convertFieldsToIsoDate = function (form, fields) { + for (var field of fields) { + var dateTime = luxon.DateTime + .fromFormat( + getObjectValue(form, field), + abp.localization.currentCulture.dateTimeFormat.shortDatePattern, + {locale: abp.localization.currentCulture.cultureName} + ); + + if (!dateTime.invalid) { + setObjectValue(form, field, dateTime.toFormat("yyyy-MM-dd HH:mm:ss")) + } + } + + return form; + } + +})(jQuery); From ed0cecb15f4a0566840b30ac3aad6beb22aeb0f5 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 27 Aug 2020 11:02:28 +0300 Subject: [PATCH 067/474] Cli: Running switch commands in aspnet-core folder should switch angular project as well if it exist resolves https://github.com/abpframework/abp/issues/5191 --- .../ProjectModification/NpmPackagesUpdater.cs | 8 ++- .../PackagePreviewSwitcher.cs | 68 ++++++++++++++++--- 2 files changed, 66 insertions(+), 10 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs index 2db480506b..c71e9591c0 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs @@ -236,7 +236,7 @@ namespace Volo.Abp.Cli.ProjectModification } } - if (version == currentVersion) + if (string.IsNullOrEmpty(version) || version == currentVersion) { return false; } @@ -275,6 +275,12 @@ namespace Volo.Abp.Cli.ProjectModification ? versionList.First() : versionList.FirstOrDefault(v => !SemanticVersion.Parse(v).IsPrerelease); + if (string.IsNullOrEmpty(newVersion)) + { + _fileVersionStorage[package.Name] = newVersion; + return newVersion; + } + var newVersionWithPrefix = $"~{newVersion}"; _fileVersionStorage[package.Name] = newVersionWithPrefix; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs index 60c7fd21b9..66f39fa12f 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs @@ -31,6 +31,7 @@ namespace Volo.Abp.Cli.ProjectModification { var solutionPath = GetSolutionPath(commandLineArgs); var solutionFolder = GetSolutionFolder(commandLineArgs); + var solutionAngularFolder = GetSolutionAngularFolder(solutionFolder); await _nugetPackagesVersionUpdater.UpdateSolutionAsync( solutionPath, @@ -40,42 +41,74 @@ namespace Volo.Abp.Cli.ProjectModification solutionFolder, false, true); + + if (solutionAngularFolder != null) + { + await _npmPackagesUpdater.Update( + solutionAngularFolder, + false, + true); + } } public async Task SwitchToNightlyPreview(CommandLineArgs commandLineArgs) { var solutionPath = GetSolutionPath(commandLineArgs); var solutionFolder = GetSolutionFolder(commandLineArgs); + var solutionAngularFolder = GetSolutionAngularFolder(solutionFolder); _packageSourceManager.Add(solutionFolder, "ABP Nightly", "https://www.myget.org/F/abp-nightly/api/v3/index.json"); - await _nugetPackagesVersionUpdater.UpdateSolutionAsync( - solutionPath, - true); + if (solutionPath != null) + { + await _nugetPackagesVersionUpdater.UpdateSolutionAsync( + solutionPath, + true); + } await _npmPackagesUpdater.Update( solutionFolder, true); + + if (solutionAngularFolder != null) + { + await _npmPackagesUpdater.Update( + solutionAngularFolder, + true); + } } public async Task SwitchToStable(CommandLineArgs commandLineArgs) { var solutionPath = GetSolutionPath(commandLineArgs); var solutionFolder = GetSolutionFolder(commandLineArgs); + var solutionAngularFolder = GetSolutionAngularFolder(solutionFolder); _packageSourceManager.Remove(solutionFolder, "ABP Nightly"); - await _nugetPackagesVersionUpdater.UpdateSolutionAsync( - solutionPath, - false, - false, - true); + if (solutionPath != null) + { + await _nugetPackagesVersionUpdater.UpdateSolutionAsync( + solutionPath, + false, + false, + true); + } await _npmPackagesUpdater.Update( solutionFolder, false, false, true); + + if (solutionAngularFolder != null) + { + await _npmPackagesUpdater.Update( + solutionAngularFolder, + false, + false, + true); + } } private string GetSolutionPath(CommandLineArgs commandLineArgs) @@ -99,7 +132,7 @@ namespace Volo.Abp.Cli.ProjectModification } } - Logger.LogError("There is no solution or more that one solution in current directory."); + Logger.LogWarning("There is no solution or more that one solution in current directory."); return null; } @@ -112,6 +145,23 @@ namespace Volo.Abp.Cli.ProjectModification ?? Directory.GetCurrentDirectory(); } + private string GetSolutionAngularFolder(string solutionFolder) + { + var upperAngularPath = Path.Combine(Directory.GetParent(solutionFolder)?.FullName ?? "", "angular"); + if (Directory.Exists(upperAngularPath)) + { + return upperAngularPath; + } + + var innerAngularPath = Path.Combine(solutionFolder, "angular"); + if (Directory.Exists(innerAngularPath)) + { + return innerAngularPath; + } + + return null; + } + public static class Options { public static class SolutionDirectory From 5ffcad5ef920731f78873ee9968ebd3e63387dd9 Mon Sep 17 00:00:00 2001 From: Erol Arkat Date: Thu, 27 Aug 2020 11:31:58 +0300 Subject: [PATCH 068/474] deprecated licenceUrl fix for nuget --- LICENSE => LICENSE.md | 0 common.props | 7 ++++--- nupkg/pack.ps1 | 5 ++++- 3 files changed, 8 insertions(+), 4 deletions(-) rename LICENSE => LICENSE.md (100%) diff --git a/LICENSE b/LICENSE.md similarity index 100% rename from LICENSE rename to LICENSE.md diff --git a/common.props b/common.props index 185ff859c9..4855f1cd9c 100644 --- a/common.props +++ b/common.props @@ -1,15 +1,16 @@ latest - 3.1.0-rc.2 + 3.1.0 $(NoWarn);CS1591 https://abp.io/assets/abp_nupkg.png - https://abp.io - https://github.com/abpframework/abp/blob/master/LICENSE + https://abp.io/ + LICENSE.md git https://github.com/abpframework/abp/ + \ No newline at end of file diff --git a/nupkg/pack.ps1 b/nupkg/pack.ps1 index 925e697300..8b593dd2a2 100644 --- a/nupkg/pack.ps1 +++ b/nupkg/pack.ps1 @@ -11,6 +11,8 @@ foreach($solution in $solutions) { foreach($project in $projects) { $projectFolder = Join-Path $rootFolder $project + + Copy-Item (Join-Path $rootFolder "LICENSE.md") -Destination $projectFolder # Create nuget pack Set-Location $projectFolder @@ -26,7 +28,8 @@ foreach($project in $projects) { $projectName = $project.Substring($project.LastIndexOf("/") + 1) $projectPackPath = Join-Path $projectFolder ("/bin/Release/" + $projectName + ".*.nupkg") Move-Item $projectPackPath $packFolder - + + Remove-Item (Join-Path $projectFolder "LICENSE.md") } # Go back to the pack folder From 51934a994925f69bb1c2e313eb396dcb52bac44a Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 27 Aug 2020 11:52:10 +0300 Subject: [PATCH 069/474] feat: add "Clear" to AbpUi localization resource --- framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json | 1 + framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json | 1 + 2 files changed, 2 insertions(+) diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json index a4fdf7afbd..d6f24833a9 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json @@ -17,6 +17,7 @@ "Error": "Error", "AreYouSure": "Are you sure?", "Cancel": "Cancel", + "Clear": "Clear", "Yes": "Yes", "No": "No", "Ok": "Ok", diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json index bf558bb763..f4fffd3f7f 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json @@ -17,6 +17,7 @@ "Error": "Hata", "AreYouSure": "Emin misiniz?", "Cancel": "Vazgeç", + "Clear": "Temizle", "Yes": "Evet", "No": "Hayır", "Ok": "Tamam", From 404fe5e8a014a0aae005171305ab31db7cf57b59 Mon Sep 17 00:00:00 2001 From: EngincanV Date: Thu, 27 Aug 2020 11:52:34 +0300 Subject: [PATCH 070/474] CmsKit: ratings group by star count --- .../Pages/Index.cshtml | 5 ++++ .../Volo/CmsKit/Ratings/IRatingRepository.cs | 6 +++++ .../RatingWithStarCountQueryResultItem.cs | 9 ++++++++ .../CmsKit/Ratings/EfCoreRatingRepository.cs | 21 +++++++++++++++++ .../MongoDB/Ratings/MongoRatingRepository.cs | 23 +++++++++++++++++++ .../Public/Ratings/IRatingPublicAppService.cs | 3 +++ .../Public/Ratings/RatingWithStarCountDto.cs | 9 ++++++++ .../PublicApplicationAutoMapperProfile.cs | 2 ++ .../Public/Ratings/RatingPublicAppService.cs | 7 ++++++ .../Public/Ratings/RatingPublicController.cs | 12 ++++++++-- .../Components/Rating/RatingViewComponent.cs | 6 ++--- 11 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/RatingWithStarCountQueryResultItem.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingWithStarCountDto.cs diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml index 253016f03b..ab628d4412 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml @@ -5,6 +5,7 @@ @using Volo.CmsKit.GlobalFeatures @using Volo.CmsKit.Pages @using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Commenting +@using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating @using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.ReactionSelection @model IndexModel @inject IStringLocalizer Localizer @@ -57,3 +58,7 @@ } + +
    +@await Component.InvokeAsync(typeof(RatingViewComponent), new { entityType = "quote", entityId = "2" }) +
    diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs index d889c4b678..29ce07df63 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs @@ -21,5 +21,11 @@ namespace Volo.CmsKit.Ratings Guid userId, CancellationToken cancellationToken = default ); + + Task> GetGroupedStarCountsAsync( + [NotNull] string entityType, + [NotNull] string entityId, + CancellationToken cancellationToken = default + ); } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/RatingWithStarCountQueryResultItem.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/RatingWithStarCountQueryResultItem.cs new file mode 100644 index 0000000000..5f53074b97 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/RatingWithStarCountQueryResultItem.cs @@ -0,0 +1,9 @@ +namespace Volo.CmsKit.Ratings +{ + public class RatingWithStarCountQueryResultItem + { + public short StarCount { get; set; } + + public int Count { get; set; } + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs index b7e53e9b59..b9f210cdcf 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs @@ -38,5 +38,26 @@ namespace Volo.CmsKit.Ratings return rating; } + + public async Task> GetGroupedStarCountsAsync(string entityType, string entityId, CancellationToken cancellationToken = default) + { + Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); + Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); + + var query = from rating in DbSet + where rating.EntityType == entityType && rating.EntityId == entityId + orderby rating.StarCount descending + group rating by rating.StarCount + into g + select new RatingWithStarCountQueryResultItem + { + StarCount = g.Key, + Count = g.Count() + }; + + var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken)); + + return ratings; + } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs index 93509233f0..a58b0517f4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading; using System.Threading.Tasks; using MongoDB.Driver; @@ -40,5 +41,27 @@ namespace Volo.CmsKit.MongoDB.Ratings return rating; } + + public async Task> GetGroupedStarCountsAsync(string entityType, + string entityId, CancellationToken cancellationToken = default) + { + Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); + Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); + + var query = from rating in GetMongoQueryable() + where rating.EntityType == entityType && rating.EntityId == entityId + orderby rating.StarCount descending + group rating by rating.StarCount + into g + select new RatingWithStarCountQueryResultItem + { + StarCount = g.Key, + Count = g.Count() + }; + + var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken)); + + return ratings; + } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs index 79785913bb..9e4c8c1f11 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; @@ -16,5 +17,7 @@ namespace Volo.CmsKit.Public.Ratings Task DeleteAsync(Guid id); Task GetCurrentUserRatingAsync(string entityType, string entityId); + + Task> GetGroupedStarCountsAsync(string entityType, string entityId); } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingWithStarCountDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingWithStarCountDto.cs new file mode 100644 index 0000000000..e8f60ea49b --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingWithStarCountDto.cs @@ -0,0 +1,9 @@ +namespace Volo.CmsKit.Public.Ratings +{ + public class RatingWithStarCountDto + { + public short StarCount { get; set; } + + public int Count { get; set; } + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs index 3ac2d1949b..0a0a5403b1 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs @@ -22,6 +22,8 @@ namespace Volo.CmsKit.Public .Ignore(x=> x.Author); CreateMap(); + + CreateMap(); } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs index 43bc6546aa..7621924727 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs @@ -88,5 +88,12 @@ namespace Volo.CmsKit.Public.Ratings return ObjectMapper.Map(rating); } + + public virtual async Task> GetGroupedStarCountsAsync(string entityType, string entityId) + { + var ratings = await RatingRepository.GetGroupedStarCountsAsync(entityType, entityId); + + return ObjectMapper.Map, List>(ratings); + } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs index c6f6355e75..25cc40ea5a 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp; @@ -44,16 +45,23 @@ namespace Volo.CmsKit.Public.Ratings [HttpDelete] [Route("{id}")] - public Task DeleteAsync(Guid id) + public virtual Task DeleteAsync(Guid id) { return RatingPublicAppService.DeleteAsync(id); } [HttpGet] [Route("{entityType}/{entityId}")] - public Task GetCurrentUserRatingAsync(string entityType, string entityId) + public virtual Task GetCurrentUserRatingAsync(string entityType, string entityId) { return RatingPublicAppService.GetCurrentUserRatingAsync(entityType, entityId); } + + [HttpGet] + [Route("{entityType}/{entityId}")] + public virtual Task> GetGroupedStarCountsAsync(string entityType, string entityId) + { + return RatingPublicAppService.GetGroupedStarCountsAsync(entityType, entityId); + } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs index cabae790c0..31dedbc532 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs @@ -31,7 +31,7 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating public virtual async Task InvokeAsync(string entityType, string entityId) { - var ratings = await RatingPublicAppService.GetListAsync(entityType, entityId); + var ratings = await RatingPublicAppService.GetGroupedStarCountsAsync(entityType, entityId); RatingDto currentUserRating = null; if (CurrentUser.IsAuthenticated) @@ -47,7 +47,7 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating EntityId = entityId, EntityType = entityType, LoginUrl = loginUrl, - Ratings = ratings.Items, + Ratings = ratings, CurrentRating = currentUserRating }; @@ -63,7 +63,7 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating public string LoginUrl { get; set; } - public IReadOnlyList Ratings { get; set; } + public List Ratings { get; set; } public RatingDto CurrentRating { get; set; } } From fc9912e0e61d31c1980d9907a0ca41ca92d4e609 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Thu, 27 Aug 2020 12:17:25 +0300 Subject: [PATCH 071/474] fix: #5162 --- .../MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml index 0b33f99e2a..65417cf55e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Pages/Index.cshtml @@ -21,9 +21,7 @@

    @L["LongWelcomeMessage"]

    @if (!CurrentUser.IsAuthenticated) { - - - +
    @L["Login"] }

    abp.io

    From 3cc99ecd30058d9928a1c498eba5193daee6eed5 Mon Sep 17 00:00:00 2001 From: EngincanV Date: Thu, 27 Aug 2020 12:31:07 +0300 Subject: [PATCH 072/474] CmsKit: order by desc bugfix --- .../CmsKit/Ratings/EfCoreRatingRepository.cs | 20 ++++++++++++------- .../MongoDB/Ratings/MongoRatingRepository.cs | 15 ++++++++------ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs index b9f210cdcf..577f2e3a7d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs @@ -18,7 +18,8 @@ namespace Volo.CmsKit.Ratings { } - public async Task> GetListAsync(string entityType, string entityId, CancellationToken cancellationToken = default) + public async Task> GetListAsync(string entityType, string entityId, + CancellationToken cancellationToken = default) { Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); @@ -29,31 +30,36 @@ namespace Volo.CmsKit.Ratings return ratings; } - public async Task GetCurrentUserRatingAsync(string entityType, string entityId, Guid userId, CancellationToken cancellationToken = default) + public async Task GetCurrentUserRatingAsync(string entityType, string entityId, Guid userId, + CancellationToken cancellationToken = default) { Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); - var rating = await DbSet.FirstOrDefaultAsync(r => r.EntityType == entityType && r.EntityId == entityId && r.CreatorId == userId, GetCancellationToken(cancellationToken)); + var rating = await DbSet.FirstOrDefaultAsync( + r => r.EntityType == entityType && r.EntityId == entityId && r.CreatorId == userId, + GetCancellationToken(cancellationToken)); return rating; } - public async Task> GetGroupedStarCountsAsync(string entityType, string entityId, CancellationToken cancellationToken = default) + public async Task> GetGroupedStarCountsAsync(string entityType, + string entityId, CancellationToken cancellationToken = default) { Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); - var query = from rating in DbSet + var query = ( + from rating in DbSet where rating.EntityType == entityType && rating.EntityId == entityId - orderby rating.StarCount descending group rating by rating.StarCount into g select new RatingWithStarCountQueryResultItem { StarCount = g.Key, Count = g.Count() - }; + } + ).OrderByDescending(r => r.StarCount); var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken)); diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs index a58b0517f4..ecf389cde7 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs @@ -14,11 +14,13 @@ namespace Volo.CmsKit.MongoDB.Ratings { public class MongoRatingRepository : MongoDbRepository, IRatingRepository { - public MongoRatingRepository(IMongoDbContextProvider dbContextProvider) : base(dbContextProvider) + public MongoRatingRepository(IMongoDbContextProvider dbContextProvider) : base( + dbContextProvider) { } - public async Task> GetListAsync(string entityType, string entityId, CancellationToken cancellationToken = default) + public async Task> GetListAsync(string entityType, string entityId, + CancellationToken cancellationToken = default) { Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); @@ -38,7 +40,7 @@ namespace Volo.CmsKit.MongoDB.Ratings var rating = await GetMongoQueryable() .FirstOrDefaultAsync(r => r.EntityType == entityType && r.EntityId == entityId && r.CreatorId == userId, GetCancellationToken(cancellationToken)); - + return rating; } @@ -48,16 +50,17 @@ namespace Volo.CmsKit.MongoDB.Ratings Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); - var query = from rating in GetMongoQueryable() + var query = ( + from rating in GetMongoQueryable() where rating.EntityType == entityType && rating.EntityId == entityId - orderby rating.StarCount descending group rating by rating.StarCount into g select new RatingWithStarCountQueryResultItem { StarCount = g.Key, Count = g.Count() - }; + } + ).OrderByDescending(r => r.StarCount); var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken)); From b7ae3d99f566781b978849d00c55233c5fb93550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 12:43:00 +0300 Subject: [PATCH 073/474] New blog post: Angular-Service-Proxies --- .../POST.md | 308 ++++++++++++++++++ .../abp-generate-proxy-output.png | Bin 0 -> 42515 bytes .../swagger-book-list.png | Bin 0 -> 9573 bytes 3 files changed, 308 insertions(+) create mode 100644 docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md create mode 100644 docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/abp-generate-proxy-output.png create mode 100644 docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/swagger-book-list.png diff --git a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md new file mode 100644 index 0000000000..61ca43b250 --- /dev/null +++ b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md @@ -0,0 +1,308 @@ +# Introducing the Angular Service Proxy Generation + +Angular Service Proxy System **generates TypeScript services and models** to consume your backend HTTP APIs developed using the ABP Framework. So, you **don't manually create** models for your server side DTOs and perform raw HTTP calls to the server. + +ABP Framework has introduced the **new** Angular Service Proxy Generation system with the version 3.1. While this feature was available since the [v2.3](https://blog.abp.io/abp/ABP-Framework-v2_3_0-Has-Been-Released), it was not well covering some scenarios, like inheritance and generic types and had some known problems. **With the v3.1, we've re-written** it using the [Angular Schematics](https://angular.io/guide/schematics) system. Now, it is much more stable and feature rich. + +This post introduces the service proxy generation system and highlights some important features. + +## Installation + +### ABP CLI + +You need to have the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) to use the system. So, install it if you haven't installed before: + +````bash +dotnet tool install -g Volo.Abp.Cli +```` + +If you already have installed it before, you can update to the latest version: + +````shell +dotnet tool update -g Volo.Abp.Cli +```` + +### Project Configuration + +> If you've created your project with version 3.1 or later, you can skip this part since it will be already installed in your solution. + +For the solution was created before v3.1, follow the steps below to configure your angular project: + +* Add `@abp/ng.schematics` package to the `devDependencies` of the Angular project (run the following command in the root folder of the angular application): + +````bash +npm install @abp/ng.schematics --save-dev +```` + +- Add `rootNamespace` entry into the `/apis/default/` section in the `/src/environments/environment.ts`, as shown below: + +```json +apis: { + default: { + ... + rootNamespace: 'Acme.BookStore' //<-- ADD THIS + }, +} +``` + +`Acme.BookStore` should be replaced by the root namespace of your .NET project. This ensures to not create unnecessary nested folders while creating the service proxy code. + +## Basic Usage + +### Project Creation + +Assuming you've created your project with the Angular UI. + +Example (using the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI)): + +````bash +abp new AngularProxyDemo -u angular +```` + +#### Run the Application + +The backend application must be up and running to be able to use the service proxy code generation system. + +> See the [getting started](https://docs.abp.io/en/abp/latest/Getting-Started?UI=NG&DB=EF&Tiered=No) guide if you don't know how create and to run the project. + +### Backend + +Assume that we have an `IBookAppService` interface: + +````csharp +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace AngularProxyDemo.Books +{ + public interface IBookAppService : IApplicationService + { + public Task> GetListAsync(); + } +} +```` + +That uses a `BookDto` defined as shown: + +```csharp +using System; +using Volo.Abp.Application.Dtos; + +namespace AngularProxyDemo.Books +{ + public class BookDto : EntityDto + { + public string Name { get; set; } + + public DateTime PublishDate { get; set; } + } +} +``` + +And implemented as the following: + +```csharp +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace AngularProxyDemo.Books +{ + public class BookAppService : ApplicationService, IBookAppService + { + public async Task> GetListAsync() + { + //TODO: get books from a database... + } + } +} +``` + +It simply returns a list of books. You probably want to get the books from a database, but it doesn't matter for this article. + +### HTTP API + +Thanks to the conventional API controllers system of the ABP Framework, we don't have too develop API controllers manually. Just **run the backend (*HttpApi.Host*) application** that shows the [Swagger UI](https://swagger.io/tools/swagger-ui/) by default. You will see the GET API for the books: + +![swagger-book-list](swagger-book-list.png) + +### Service Proxy Generation + +Open a command line in the root folder of the Angular application and execute the following command: + +````bash +abp generate-proxy +```` + +It should produce an output like the following: + +````bash +CREATE src/app/shared/models/books/index.ts (142 bytes) +CREATE src/app/shared/services/books/book.service.ts (437 bytes) +... +```` + +> `generate-proxy` command can take some some optional parameters for advanced scenarios (like [modular development](https://docs.abp.io/en/abp/latest/Module-Development-Basics)). You can take a look at the [documentation](https://docs.abp.io/en/abp/latest/UI/Angular/Service-Proxies). + +It basically creates two files; + +src/app/shared/services/books/**book.service.ts**: This is the service that can be injected and used to get the list of books; + +````typescript +import { RestService } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; +import type { BookDto } from '../../models/book'; + +@Injectable({ + providedIn: 'root', +}) +export class BookService { + apiName = 'Default'; + + getList = () => + this.restService.request({ + method: 'GET', + url: `/api/app/book`, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} + +```` + +src/app/shared/models/books/**index.ts**: This file contains the modal classes corresponding to the DTOs defined in the server side; + +````typescript +import type { EntityDto } from '@abp/ng.core'; + +export interface BookDto extends EntityDto { + name: string; + publishDate: string; +} +```` + +You can now inject the `BookService` into any Angular component and use the `getList()` method to get the list of books. + +### About the Generated Code + +The generated code is; + +* **Simple**: It is almost identical to the code if you've written it yourself. +* **Splitted**: Instead of a single, large file; + * It creates a separate `.ts` file for every backend **service**. **Model** (DTO) classes are also grouped per service. + * It understands the [modularity](https://docs.abp.io/en/abp/latest/Module-Development-Basics), so creates the services for your own **module** (or the module you've specified). +* **Object oriented**; + * Supports **inheritance** of server side DTOs and generates the code respecting to the inheritance structure. + * Supports **generic types**. + * Supports **re-using type definitions** across services and doesn't generate the same DTO multiple times. +* **Well-aligned to the backend**; + * Service **method signatures** match exactly with the services on the backend services. This is achieved by a special endpoint exposed by the ABP Framework that well defines the backend contracts. + * **Namespaces** are exactly matches to the backend services and DTOs. +* **Well-aligned with the ABP Framework**; + * Recognizes the **standard ABP Framework DTO types** (like `EntityDto`, `ListResultDto`... etc) and doesn't repeat these classes in the application code, but uses from the `@abp/ng.core` package. + * Uses the `RestService` defined by the `@abp/ng.core` package which simplifies the generated code, keeps it short and re-uses all the logics implemented by the `RestService` (including error handling, authorization token injection, using multiple server endpoints... etc). + +These are the main motivations behind the decision of creating a service proxy generation system, instead of using a pre-built tool like [NSWAG](https://github.com/RicoSuter/NSwag). + +## Other Examples + +Let me show you a few more examples. + +### Updating an Entity + +Assume that you added a new method to the server side application service, to update a book: + +```csharp +public Task UpdateAsync(Guid id, BookUpdateDto input); +``` + +`BookUpdateDto` is a simple class defined shown below: + +```csharp +using System; + +namespace AngularProxyDemo.Books +{ + public class BookUpdateDto + { + public string Name { get; set; } + + public DateTime PublishDate { get; set; } + } +} +``` + +Let's re-run the `generate-proxy` command to see the result: + +```` +abp generate-proxy +```` + +The output of this command will be like the following: + +````bash +UPDATE src/app/shared/services/books/book.service.ts (660 bytes) +UPDATE src/app/shared/models/books/index.ts (217 bytes) +```` + +It tells us two files have been updated. Let's see the changes; + +**book.service.ts** + +````typescript +import { RestService } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; +import type { BookDto, BookUpdateDto } from '../../models/books'; + +@Injectable({ + providedIn: 'root', +}) +export class BookService { + apiName = 'Default'; + + getList = () => + this.restService.request({ + method: 'GET', + url: `/api/app/book`, + }, + { apiName: this.apiName }); + + update = (id: string, input: BookUpdateDto) => + this.restService.request({ + method: 'PUT', + url: `/api/app/book/${id}`, + body: input, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} +```` + +`update` function has been added to the `BookService` that gets an `id` and a `BookUpdateDto` as the parameters. + +**index.ts** + +````typescript +import type { EntityDto } from '@abp/ng.core'; + +export interface BookDto extends EntityDto { + name: string; + publishDate: string; +} + +export interface BookUpdateDto { + name: string; + publishDate: string; +} +```` + +Added a new DTO class: `BookUpdateDto`. + +### Advanced Example + +In this example, I want to show a DTO structure using inheritance, generics, arrays and dictionaries. + diff --git a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/abp-generate-proxy-output.png b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/abp-generate-proxy-output.png new file mode 100644 index 0000000000000000000000000000000000000000..0a77d8e40fe256f7443fe81b4552d310414f31f5 GIT binary patch literal 42515 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 literal 0 HcmV?d00001 From 9feacbf241b451c32b9a6aacea4b0f7be20dcec5 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 27 Aug 2020 12:58:43 +0300 Subject: [PATCH 074/474] Update NuGetService.cs --- .../src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs index c962ceaf92..79f54eb8e2 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs @@ -86,8 +86,7 @@ namespace Volo.Abp.Cli.NuGet versions = versions.Where(x => !x.IsPrerelease).ToList(); } - var semanticVersions = versions.ToList(); - return semanticVersions.Any() ? semanticVersions.Max() : null; + return versions.Any() ? versions.Max() : null; } } From 8fc60f9905b68e60115f96924d25d7a8f273d6be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 13:06:26 +0300 Subject: [PATCH 075/474] Update POST.md --- .../POST.md | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md index 61ca43b250..9c7281ede4 100644 --- a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md +++ b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md @@ -306,3 +306,101 @@ Added a new DTO class: `BookUpdateDto`. In this example, I want to show a DTO structure using inheritance, generics, arrays and dictionaries. +I've created an `IOrderAppService` as shown below: + +````csharp +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace AngularProxyDemo.Orders +{ + public interface IOrderAppService : IApplicationService + { + public Task CreateAsync(OrderCreateDto input); + } +} +```` + +`OrderCreateDto` and the related DTOs are as the followings; + +````csharp +using System; +using System.Collections.Generic; +using Volo.Abp.Data; + +namespace AngularProxyDemo.Orders +{ + public class OrderCreateDto : IHasExtraProperties + { + public Guid CustomerId { get; set; } + + public DateTime CreationTime { get; set; } + + //ARRAY of DTOs + public OrderDetailDto[] Details { get; set; } + + //DICTIONARY + public Dictionary ExtraProperties { get; set; } + } + + public class OrderDetailDto : GenericDetailDto //INHERIT from GENERIC + { + public string Note { get; set; } + } + + //GENERIC class + public abstract class GenericDetailDto + { + public Guid ProductId { get; set; } + + public TCount Count { get; set; } + } +} +```` + +When I run the `abp generate-proxy` command again, I see two new files have been created. + +src/app/shared/services/orders/**order.service.ts** + +````typescript +import { RestService } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; +import type { OrderCreateDto } from '../../models/orders'; + +@Injectable({ + providedIn: 'root', +}) +export class OrderService { + apiName = 'Default'; + + create = (input: OrderCreateDto) => + this.restService.request({ + method: 'POST', + url: `/api/app/order`, + body: input, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} +```` + +src/app/shared/models/orders/**index.ts** + +**TODO: FIX the ERROR** + +````typescript +import type { GenericDetailDto } from '../../models/orders'; + +export interface OrderCreateDto { + customerId: string; + creationTime: string; + details: OrderDetailDto[]; + extraProperties: string | object; +} + +export interface OrderDetailDto extends GenericDetailDto { + note: string; +} +```` + From 7b891c44b2005207af8218589a26483256ea8951 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 27 Aug 2020 14:24:10 +0300 Subject: [PATCH 076/474] Cli: Suite install & update improvements resolves https://github.com/volosoft/volo/issues/3140 --- .../Volo/Abp/Cli/Commands/SuiteCommand.cs | 97 +++++++++++++++++-- 1 file changed, 88 insertions(+), 9 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs index fbe7fa675f..a0ae74cf9c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs @@ -1,10 +1,13 @@ using System; +using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; +using NuGet.Versioning; using Volo.Abp.Cli.Args; using Volo.Abp.Cli.Commands.Services; +using Volo.Abp.Cli.NuGet; using Volo.Abp.Cli.Utils; using Volo.Abp.DependencyInjection; @@ -13,12 +16,14 @@ namespace Volo.Abp.Cli.Commands public class SuiteCommand : IConsoleCommand, ITransientDependency { private readonly AbpNuGetIndexUrlService _nuGetIndexUrlService; + private readonly NuGetService _nuGetService; private const string SuitePackageName = "Volo.Abp.Suite"; public ILogger Logger { get; set; } - public SuiteCommand(AbpNuGetIndexUrlService nuGetIndexUrlService) + public SuiteCommand(AbpNuGetIndexUrlService nuGetIndexUrlService, NuGetService nuGetService) { _nuGetIndexUrlService = nuGetIndexUrlService; + _nuGetService = nuGetService; Logger = NullLogger.Instance; } @@ -26,21 +31,22 @@ namespace Volo.Abp.Cli.Commands { var operationType = NamespaceHelper.NormalizeNamespace(commandLineArgs.Target); + var preview = commandLineArgs.Options.ContainsKey(Options.Preview.Long); + switch (operationType) { case "": case null: + await CheckVersion(); RunSuite(); break; case "install": - Logger.LogInformation("Installing ABP Suite..."); - await InstallSuiteAsync(); + await InstallSuiteAsync(preview); break; case "update": - Logger.LogInformation("Updating ABP Suite..."); - await UpdateSuiteAsync(); + await UpdateSuiteAsync(preview); break; case "remove": @@ -50,8 +56,46 @@ namespace Volo.Abp.Cli.Commands } } - private async Task InstallSuiteAsync() + private async Task CheckVersion() + { + var currentSuiteVersionAsString = GetCurrentSuiteVersion(); + + if (string.IsNullOrEmpty(currentSuiteVersionAsString)) + { + await InstallSuiteAsync(); + return; + } + + var currentVersion = SemanticVersion.Parse(currentSuiteVersionAsString); + + var preview = currentVersion.IsPrerelease; + + var latestVersion = await GetLatestSuiteVersioAsync(preview); + + if (latestVersion > currentVersion) + { + await UpdateSuiteAsync(preview); + } + } + + private string GetCurrentSuiteVersion() + { + var dotnetToolList = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g"); + + var suiteLine = dotnetToolList.Split(Environment.NewLine).FirstOrDefault(l => l.ToLower().StartsWith("volo.abp.suite ")); + + if (string.IsNullOrEmpty(suiteLine)) + { + return null; + } + + return suiteLine.Split(" ", StringSplitOptions.RemoveEmptyEntries)[1]; + } + + private async Task InstallSuiteAsync(bool preview = false) { + Logger.LogInformation("Installing ABP Suite..."); + var nugetIndexUrl = await _nuGetIndexUrlService.GetAsync(); if (nugetIndexUrl == null) @@ -61,7 +105,9 @@ namespace Volo.Abp.Cli.Commands try { - var result = CmdHelper.RunCmd("dotnet tool install " + SuitePackageName + " --add-source " + nugetIndexUrl + " -g"); + var versionOption = await GetVersionOption(preview); + + var result = CmdHelper.RunCmd($"dotnet tool install {SuitePackageName} {versionOption} --add-source {nugetIndexUrl} -g"); if (result == 0) { @@ -86,8 +132,10 @@ namespace Volo.Abp.Cli.Commands Logger.LogInformation("dotnet tool install -g Volo.Abp.Suite"); } - private async Task UpdateSuiteAsync() + private async Task UpdateSuiteAsync(bool preview = false) { + Logger.LogInformation("Updating ABP Suite..."); + var nugetIndexUrl = await _nuGetIndexUrlService.GetAsync(); if (nugetIndexUrl == null) @@ -97,7 +145,9 @@ namespace Volo.Abp.Cli.Commands try { - var result = CmdHelper.RunCmd("dotnet tool update " + SuitePackageName + " --add-source " + nugetIndexUrl + " -g"); + var versionOption = await GetVersionOption(preview); + + var result = CmdHelper.RunCmd($"dotnet tool update {SuitePackageName} {versionOption} --add-source {nugetIndexUrl} -g"); if (result != 0) { @@ -111,6 +161,25 @@ namespace Volo.Abp.Cli.Commands } } + private async Task GetVersionOption(bool preview) + { + if (preview) + { + var latestVersion = await GetLatestSuiteVersioAsync(true); + if (latestVersion.IsPrerelease) + { + return $"--version {latestVersion.ToString()}"; + } + } + + return ""; + } + + private async Task GetLatestSuiteVersioAsync(bool preview) + { + return await _nuGetService.GetLatestVersionOrNullAsync(SuitePackageName, includeReleaseCandidates: preview); + } + private void ShowSuiteManualUpdateCommand() { Logger.LogError("You can also run the following command to update ABP Suite."); @@ -160,7 +229,9 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine(""); sb.AppendLine(" abp suite"); sb.AppendLine(" abp suite install"); + sb.AppendLine(" abp suite install --preview"); sb.AppendLine(" abp suite update"); + sb.AppendLine(" abp suite update --preview"); sb.AppendLine(" abp suite remove"); sb.AppendLine(""); @@ -171,5 +242,13 @@ namespace Volo.Abp.Cli.Commands { return "Install, update, remove or start ABP Suite. See https://commercial.abp.io/tools/suite."; } + + public static class Options + { + public static class Preview + { + public const string Long = "preview"; + } + } } } \ No newline at end of file From a57c1b975f36b84e63df1616a47f3a6dbe962580 Mon Sep 17 00:00:00 2001 From: EngincanV Date: Thu, 27 Aug 2020 14:48:55 +0300 Subject: [PATCH 077/474] CmsKit: Rating missing tests --- .../Ratings/RatingPublicAppService_Tests.cs | 103 ++++++++++++++++++ .../Ratings/RatingRepository_Tests.cs | 9 ++ .../MongoDB/Ratings/RatingRepository_Tests.cs | 11 ++ .../CmsKitDataSeedContributor.cs | 47 +++++++- .../Ratings/RatingRepository_Tests.cs | 49 +++++++++ 5 files changed, 215 insertions(+), 4 deletions(-) create mode 100644 modules/cms-kit/test/Volo.CmsKit.Application.Tests/Ratings/RatingPublicAppService_Tests.cs create mode 100644 modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/EntityFrameworkCore/Ratings/RatingRepository_Tests.cs create mode 100644 modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/Ratings/RatingRepository_Tests.cs create mode 100644 modules/cms-kit/test/Volo.CmsKit.TestBase/Ratings/RatingRepository_Tests.cs diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Ratings/RatingPublicAppService_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Ratings/RatingPublicAppService_Tests.cs new file mode 100644 index 0000000000..1a21da8425 --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Ratings/RatingPublicAppService_Tests.cs @@ -0,0 +1,103 @@ +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using NSubstitute; +using Shouldly; +using Volo.Abp.Users; +using Volo.CmsKit.Public.Ratings; +using Xunit; + +namespace Volo.CmsKit.Ratings +{ + public class RatingPublicAppService_Tests : CmsKitApplicationTestBase + { + private readonly IRatingPublicAppService _ratingAppService; + private ICurrentUser _currentUser; + private readonly CmsKitTestData _cmsKitTestData; + + public RatingPublicAppService_Tests() + { + _ratingAppService = GetRequiredService(); + _cmsKitTestData = GetRequiredService(); + } + + protected override void AfterAddApplication(IServiceCollection services) + { + _currentUser = Substitute.For(); + services.AddSingleton(_currentUser); + } + + [Fact] + public async Task CreateAsync() + { + _currentUser.Id.Returns(_cmsKitTestData.User1Id); + + var newRating = await _ratingAppService.CreateAsync( + _cmsKitTestData.EntityType1, + _cmsKitTestData.EntityId1, + new CreateRatingInput + { + StarCount = 4 + }); + + UsingDbContext(context => + { + var ratings = context.Set().Where(x => + x.EntityId == _cmsKitTestData.EntityId1 && x.EntityType == _cmsKitTestData.EntityType1).ToList(); + + ratings + .Any(c => c.Id == newRating.Id && c.CreatorId == newRating.CreatorId && c.StarCount == newRating.StarCount) + .ShouldBeTrue(); + }); + } + + [Fact] + public async Task UpdateAsync() + { + _currentUser.Id.Returns(_cmsKitTestData.User1Id); + + var rating = await _ratingAppService.CreateAsync( + _cmsKitTestData.EntityType1, + _cmsKitTestData.EntityId1, + new CreateRatingInput + { + StarCount = 4 + }); + + await _ratingAppService.UpdateAsync(rating.Id, new UpdateRatingInput + { + StarCount = 5 + }); + + UsingDbContext(context => + { + var updatedRating = context.Set().Single(x => x.Id == rating.Id); + + updatedRating.StarCount.ShouldBe((short)5); + }); + } + + [Fact] + public async Task DeleteAsync() + { + _currentUser.Id.Returns(_cmsKitTestData.User1Id); + + var rating = await _ratingAppService.CreateAsync( + _cmsKitTestData.EntityType1, + _cmsKitTestData.EntityId1, + new CreateRatingInput + { + StarCount = 4 + }); + + await _ratingAppService.DeleteAsync(rating.Id); + + UsingDbContext(context => + { + var deletedComment = context.Set().FirstOrDefault(x => x.Id == rating.Id); + + deletedComment.ShouldBeNull(); + }); + } + } +} \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/EntityFrameworkCore/Ratings/RatingRepository_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/EntityFrameworkCore/Ratings/RatingRepository_Tests.cs new file mode 100644 index 0000000000..390ddd1cb3 --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/EntityFrameworkCore/Ratings/RatingRepository_Tests.cs @@ -0,0 +1,9 @@ +using Volo.CmsKit.Ratings; + +namespace Volo.CmsKit.EntityFrameworkCore.Ratings +{ + public class RatingRepository_Tests : RatingRepository_Tests + { + + } +} \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/Ratings/RatingRepository_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/Ratings/RatingRepository_Tests.cs new file mode 100644 index 0000000000..c0814253e6 --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/MongoDB/Ratings/RatingRepository_Tests.cs @@ -0,0 +1,11 @@ +using Volo.CmsKit.Ratings; +using Xunit; + +namespace Volo.CmsKit.MongoDB.Ratings +{ + [Collection(MongoTestCollection.Name)] + public class RatingRepository_Tests : RatingRepository_Tests + { + + } +} \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs index 12c6255623..f91e79fb84 100644 --- a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs +++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs @@ -4,6 +4,7 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.Guids; using Volo.Abp.Users; using Volo.CmsKit.Comments; +using Volo.CmsKit.Ratings; using Volo.CmsKit.Reactions; using Volo.CmsKit.Users; @@ -16,19 +17,22 @@ namespace Volo.CmsKit private readonly CmsKitTestData _cmsKitTestData; private readonly ICommentRepository _commentRepository; private readonly ReactionManager _reactionManager; + private readonly IRatingRepository _ratingRepository; public CmsKitDataSeedContributor( IGuidGenerator guidGenerator, ICmsUserRepository cmsUserRepository, CmsKitTestData cmsKitTestData, ICommentRepository commentRepository, - ReactionManager reactionManager) + ReactionManager reactionManager, + IRatingRepository ratingRepository) { _guidGenerator = guidGenerator; _cmsUserRepository = cmsUserRepository; _cmsKitTestData = cmsKitTestData; _commentRepository = commentRepository; _reactionManager = reactionManager; + _ratingRepository = ratingRepository; } public async Task SeedAsync(DataSeedContext context) @@ -38,13 +42,17 @@ namespace Volo.CmsKit await SeedCommentsAsync(); await SeedReactionsAsync(); + + await SeedRatingsAsync(); } private async Task SeedUsersAsync() { - await _cmsUserRepository.InsertAsync(new CmsUser(new UserData(_cmsKitTestData.User1Id, "user1", "user1@volo.com", + await _cmsUserRepository.InsertAsync(new CmsUser(new UserData(_cmsKitTestData.User1Id, "user1", + "user1@volo.com", "user", "1"))); - await _cmsUserRepository.InsertAsync(new CmsUser(new UserData(_cmsKitTestData.User2Id, "user2", "user2@volo.com", + await _cmsUserRepository.InsertAsync(new CmsUser(new UserData(_cmsKitTestData.User2Id, "user2", + "user2@volo.com", "user", "2"))); } @@ -131,5 +139,36 @@ namespace Volo.CmsKit _cmsKitTestData.EntityId1, StandardReactions.ThumbsUp); } + + private async Task SeedRatingsAsync() + { + await _ratingRepository.InsertAsync(new Rating(_guidGenerator.Create(), + _cmsKitTestData.EntityType1, + _cmsKitTestData.EntityId1, + 4, + _cmsKitTestData.User1Id + )); + + await _ratingRepository.InsertAsync(new Rating(_guidGenerator.Create(), + _cmsKitTestData.EntityType1, + _cmsKitTestData.EntityId1, + 5, + _cmsKitTestData.User1Id + )); + + await _ratingRepository.InsertAsync(new Rating(_guidGenerator.Create(), + _cmsKitTestData.EntityType2, + _cmsKitTestData.EntityId2, + 5, + _cmsKitTestData.User2Id + )); + + await _ratingRepository.InsertAsync(new Rating(_guidGenerator.Create(), + _cmsKitTestData.EntityType2, + _cmsKitTestData.EntityId2, + 1, + _cmsKitTestData.User2Id + )); + } } -} +} \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/Ratings/RatingRepository_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.TestBase/Ratings/RatingRepository_Tests.cs new file mode 100644 index 0000000000..b09b380f8e --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/Ratings/RatingRepository_Tests.cs @@ -0,0 +1,49 @@ +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Modularity; +using Xunit; + +namespace Volo.CmsKit.Ratings +{ + public abstract class RatingRepository_Tests : CmsKitTestBase + where TStartupModule : IAbpModule + { + private readonly CmsKitTestData _cmsKitTestData; + private readonly IRatingRepository _ratingRepository; + + public RatingRepository_Tests() + { + _cmsKitTestData = GetRequiredService(); + _ratingRepository = GetRequiredService(); + } + + [Fact] + public async Task GetListAsync() + { + var list = await _ratingRepository.GetListAsync(_cmsKitTestData.EntityType1, _cmsKitTestData.EntityId1); + + list.Count.ShouldBeGreaterThan(0); + } + + [Fact] + public async Task GetCurrentUserRatingAsync() + { + var userRating = await _ratingRepository.GetCurrentUserRatingAsync(_cmsKitTestData.EntityType1, + _cmsKitTestData.EntityId1, _cmsKitTestData.User1Id); + + userRating.ShouldNotBeNull(); + userRating.EntityId.ShouldBe(_cmsKitTestData.EntityId1); + userRating.EntityType.ShouldBe(_cmsKitTestData.EntityType1); + userRating.CreatorId.ShouldBe(_cmsKitTestData.User1Id); + } + + [Fact] + public async Task GetGroupedStarCountsAsync() + { + var list = await _ratingRepository.GetGroupedStarCountsAsync(_cmsKitTestData.EntityType1, + _cmsKitTestData.EntityId1); + + list.ShouldNotBeNull(); + } + } +} \ No newline at end of file From f115d70b1affa0fa2ddca2440b1181be8ca7048c Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 27 Aug 2020 14:58:18 +0300 Subject: [PATCH 078/474] Update SuiteCommand.cs --- .../Volo/Abp/Cli/Commands/SuiteCommand.cs | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs index a0ae74cf9c..25a3d8ea5c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs @@ -63,18 +63,6 @@ namespace Volo.Abp.Cli.Commands if (string.IsNullOrEmpty(currentSuiteVersionAsString)) { await InstallSuiteAsync(); - return; - } - - var currentVersion = SemanticVersion.Parse(currentSuiteVersionAsString); - - var preview = currentVersion.IsPrerelease; - - var latestVersion = await GetLatestSuiteVersioAsync(preview); - - if (latestVersion > currentVersion) - { - await UpdateSuiteAsync(preview); } } From 23ac23eb6b7afdc2530c0277b8857a7bae7cf8c0 Mon Sep 17 00:00:00 2001 From: EngincanV Date: Thu, 27 Aug 2020 15:21:18 +0300 Subject: [PATCH 079/474] CmsKit: Rating widget --- .../Shared/Components/Rating/Default.cshtml | 86 ++++++++++++++----- .../Shared/Components/Rating/default.css | 36 +------- .../Shared/Components/Rating/default.js | 82 +++++++++++++++++- 3 files changed, 145 insertions(+), 59 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml index f9cd651ff1..7c02d769a5 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml @@ -1,27 +1,67 @@ -@using Volo.Abp.Users +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.Users +@using Volo.CmsKit.Localization @inject ICurrentUser CurrentUser +@model Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating.RatingViewModel +@inject IHtmlLocalizer L -@if (CurrentUser.IsAuthenticated) -{ -
    -

    My Simple Widget

    -

    This is a simple widget!

    -
    -} + -
    - - +
    + @if (CurrentUser.IsAuthenticated) + { +
    + + @(Model.CurrentRating != null ? Model.CurrentRating.StarCount : 0) + if (Model.CurrentRating != null) + { + + @L["Undo"] + + } +
    +
    +

    All Stars

    + @if (Model.Ratings != null) + { +
      + @foreach (var rating in Model.Ratings) + { +
    • + @rating.StarCount @L["Stars"] + @rating.Count +
    • + } +
    + } +
    + } + else + { + + } +
    - - - - - - - - - - - -
    \ No newline at end of file + + + \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.css b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.css index 0dc4780ee9..5f282702bb 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.css +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.css @@ -1,35 +1 @@ -.rate { - float: left; - height: 46px; - padding: 0 10px; -} -.rate:not(:checked) > input { - position:absolute; - top:-9999px; -} -.rate:not(:checked) > label { - float:right; - width:1em; - overflow:hidden; - white-space:nowrap; - cursor:pointer; - font-size:30px; - color:#ccc; -} -.rate:not(:checked) > label:before { - content: '★ '; -} -.rate > input:checked ~ label { - color: #ffc700; -} -.rate:not(:checked) > label:hover, -.rate:not(:checked) > label:hover ~ label { - color: #deb217; -} -.rate > input:checked + label:hover, -.rate > input:checked + label:hover ~ label, -.rate > input:checked ~ label:hover, -.rate > input:checked ~ label:hover ~ label, -.rate > label:hover ~ input:checked ~ label { - color: #c59b08; -} \ No newline at end of file + \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js index 5f282702bb..1b29a47190 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js @@ -1 +1,81 @@ - \ No newline at end of file +(function () { + + var l = abp.localization.getResource("CmsKit"); + + $(document).ready(function () { + abp.widgets.CmsRating = function ($widget) { + var widgetManager = $widget.data("abp-widget-manager"); + var $ratingArea = $widget.find(".cms-rating-area"); + + function getFilters() { + return { + entityType: $ratingArea.attr("data-entity-type"), + entityId: $ratingArea.attr("data-entity-id") + }; + } + + function registerCreateOfNewRating() { + $(".my-rating-5").starRating({ + initialRating: 0, + disableAfterRate: true, + useFullStars: true, + readOnly: authenticated === "True", + onHover: function(currentIndex, currentRating, $el) { + $(".live-rating").text(currentIndex); + }, + onLeave: function(currentIndex, currentRating, $el) { + $(".live-rating").text(currentRating); + }, + callback: function(currentRating, $el) { + volo.cmsKit.public.ratings.ratingPublic.create( + $ratingArea.attr("data-entity-type"), + $ratingArea.attr("data-entity-id"), + { + starCount: parseInt(currentRating) + } + ).then(function () { + widgetManager.refresh($widget); + }) + } + }); + } + + function registerUndoLink() { + console.log("asdf"); + $(".rating-undo-link").on('click', '', function (e) { + e.preventDefault(); + + abp.message.confirm(l("RatingUndoMessage"), function (ok) { + if(ok) { + var id = $(".rating-undo-link").attr("data-id"); + volo.cmsKit.public.ratings.ratingPublic.delete( + id + ).then(function () { + widgetManager.refresh($widget); + }); + } + }) + }); + } + + function init() { + registerCreateOfNewRating(); + registerUndoLink(); + } + + return { + init: init, + getFilters: getFilters + } + }; + + $('.abp-widget-wrapper[data-widget-name="CmsRating"]') + .each(function () { + var widgetManager = new abp.WidgetManager({ + wrapper: $(this), + }); + + widgetManager.init($(this)); + }); + }); +})(jQuery); \ No newline at end of file From 97b3ff113508cb9aede3dbb4bcf7f4f7b418b64b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Thu, 27 Aug 2020 15:31:01 +0300 Subject: [PATCH 080/474] added rating style and script contributor --- .../star-rating-svg/css/star-rating-svg.css | 37 +++++++++++++++++++ .../js/jquery.star-rating-svg.min.js | 1 + .../Shared/Components/Rating/Default.cshtml | 31 ++++------------ .../Rating/RatingScriptBundleContributor.cs | 3 ++ .../Rating/RatingStyleBundleContributor.cs | 3 ++ .../Shared/Components/Rating/default.js | 17 +++++++++ 6 files changed, 69 insertions(+), 23 deletions(-) create mode 100644 modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/star-rating-svg/css/star-rating-svg.css create mode 100644 modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/star-rating-svg/js/jquery.star-rating-svg.min.js diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/star-rating-svg/css/star-rating-svg.css b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/star-rating-svg/css/star-rating-svg.css new file mode 100644 index 0000000000..2c0114687f --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/star-rating-svg/css/star-rating-svg.css @@ -0,0 +1,37 @@ +.jq-stars { + display: inline-block; +} + +.jq-rating-label { + font-size: 22px; + display: inline-block; + position: relative; + vertical-align: top; + font-family: helvetica, arial, verdana; +} + +.jq-star { + width: 100px; + height: 100px; + display: inline-block; + cursor: pointer; +} + +.jq-star-svg { + width: 100%; + height: 100% ; +} + +.jq-star:hover .fs-star-svg polygon { +} + +.jq-star-svg polygon { + stroke: #000; + stroke-linejoin: round; +} + +/* un-used */ +.jq-shadow { + -webkit-filter: drop-shadow( -2px -2px 2px #888 ); + filter: drop-shadow( -2px -2px 2px #888 ); +} diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/star-rating-svg/js/jquery.star-rating-svg.min.js b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/star-rating-svg/js/jquery.star-rating-svg.min.js new file mode 100644 index 0000000000..df947cfe2b --- /dev/null +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/star-rating-svg/js/jquery.star-rating-svg.min.js @@ -0,0 +1 @@ +!function(a){"use strict";var b="starRating",c=function(){},d={totalStars:5,useFullStars:!1,emptyColor:"lightgray",hoverColor:"orange",activeColor:"gold",useGradient:!0,readOnly:!1,disableAfterRate:!0,starGradient:{start:"#FEF7CD",end:"#FF9511"},strokeWidth:0,strokeColor:"black",initialRating:0,starSize:40,callback:c,onHover:c,onLeave:c},e=function(c,e){var f;this.element=c,this.$el=a(c),this.settings=a.extend({},d,e),f=this.$el.data("rating")||this.settings.initialRating,this._state={rating:(Math.round(2*f)/2).toFixed(1)},this._uid=Math.floor(999*Math.random()),e.starGradient||this.settings.useGradient||(this.settings.starGradient.start=this.settings.starGradient.end=this.settings.activeColor),this._defaults=d,this._name=b,this.init()},f={init:function(){this.renderMarkup(),this.addListeners(),this.initRating()},addListeners:function(){this.settings.readOnly||(this.$stars.on("mouseover",this.hoverRating.bind(this)),this.$stars.on("mouseout",this.restoreState.bind(this)),this.$stars.on("click",this.handleRating.bind(this)))},hoverRating:function(a){var b=this.getIndex(a);this.paintStars(b,"hovered"),this.settings.onHover(b+1,this._state.rating,this.$el)},handleRating:function(a){var b=this.getIndex(a),c=b+1;this.applyRating(c,this.$el),this.executeCallback(c,this.$el),this.settings.disableAfterRate&&this.$stars.off()},applyRating:function(a){var b=a-1;this.paintStars(b,"active"),this._state.rating=b+1},restoreState:function(a){var b=this.getIndex(a),c=this._state.rating||-1;this.paintStars(c-1,"active"),this.settings.onLeave(b+1,this._state.rating,this.$el)},getIndex:function(b){var c=a(b.currentTarget),d=c.width(),e=a(b.target).attr("data-side");e=e?e:this.getOffsetByPixel(b,c,d),e=this.settings.useFullStars?"right":e;var f=c.index()-("left"===e?.5:0);return f=.5>f&&b.offsetX=d&&!this.settings.useFullStars?"left":"right"},initRating:function(){this.paintStars(this._state.rating-1,"active")},paintStars:function(b,c){var d,e,f,g;a.each(this.$stars,function(h,i){d=a(i).find('polygon[data-side="left"]'),e=a(i).find('polygon[data-side="right"]'),f=g=b>=h?c:"empty",f=h-b===.5?c:f,d.attr("class","svg-"+f+"-"+this._uid),e.attr("class","svg-"+g+"-"+this._uid)}.bind(this))},renderMarkup:function(){for(var a='
    "+this.getLinearGradient(this._uid+"_SVGID_1_",this.settings.emptyColor,this.settings.emptyColor)+this.getLinearGradient(this._uid+"_SVGID_2_",this.settings.hoverColor,this.settings.hoverColor)+this.getLinearGradient(this._uid+"_SVGID_3_",this.settings.starGradient.start,this.settings.starGradient.end)+'
    ',b="",c=0;c '},executeCallback:function(a,b){var c=this.settings.callback;c(a,b)}},g={unload:function(){var c="plugin_"+b,d=a(this),e=d.data(c).$stars;e.off(),d.removeData(c).remove()},setRating:function(c,d){var e="plugin_"+b,f=a(this),g=f.data(e);c>g.settings.totalStars||0>c||(d&&(c=Math.round(c)),g.applyRating(c))},getRating:function(){var c="plugin_"+b,d=a(this),e=d.data(c);return e._state.rating}};a.extend(e.prototype,f),a.fn[b]=function(c){if(!a.isPlainObject(c)){if(g.hasOwnProperty(c))return g[c].apply(this,Array.prototype.slice.call(arguments,1));a.error("Method "+c+" does not exist on "+b+".js")}return this.each(function(){a.data(this,"plugin_"+b)||a.data(this,"plugin_"+b,new e(this,c))})}}(jQuery,window,document); \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml index 7c02d769a5..51b799d2e6 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml @@ -1,11 +1,18 @@ @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Users @using Volo.CmsKit.Localization +@using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating @inject ICurrentUser CurrentUser @model Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating.RatingViewModel @inject IHtmlLocalizer L - +@section styles{ + +} + +@section scripts{ + +}
    @if (CurrentUser.IsAuthenticated) @@ -43,25 +50,3 @@
    }
    - - - - \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingScriptBundleContributor.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingScriptBundleContributor.cs index a57ff8294f..4340cea485 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingScriptBundleContributor.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingScriptBundleContributor.cs @@ -1,8 +1,11 @@ using System.Collections.Generic; using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Packages.StarRatingSvg; +using Volo.Abp.Modularity; namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating { + [DependsOn(typeof(StarRatingSvgScriptContributor))] public class RatingScriptBundleContributor : BundleContributor { public override void ConfigureBundle(BundleConfigurationContext context) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingStyleBundleContributor.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingStyleBundleContributor.cs index dc82f1f5da..bd017f9d1e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingStyleBundleContributor.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingStyleBundleContributor.cs @@ -1,8 +1,11 @@ using System.Collections.Generic; using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Packages.StarRatingSvg; +using Volo.Abp.Modularity; namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating { + [DependsOn(typeof(StarRatingSvgStyleContributor))] public class RatingStyleBundleContributor : BundleContributor { public override void ConfigureBundle(BundleConfigurationContext context) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js index 1b29a47190..6bc8dc763e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js @@ -1,5 +1,22 @@ (function () { + var authenticated = $(".my-rating-5").attr("data-authenticated"); + $(".my-rating-5").starRating({ + initialRating: 0, + disableAfterRate: true, + useFullStars: true, + readOnly: authenticated === "True", + onHover: function(currentIndex, currentRating, $el) { + $(".live-rating").text(currentIndex); + }, + onLeave: function(currentIndex, currentRating, $el) { + $(".live-rating").text(currentRating); + }, + callback: function(currentRating, $el) { + alert(currentRating); + } + }); + var l = abp.localization.getResource("CmsKit"); $(document).ready(function () { From da4db91537a4c7b39c6842ba98dbe57b287df0b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Thu, 27 Aug 2020 15:32:04 +0300 Subject: [PATCH 081/474] Introduce @abp/star-rating-svg npm package --- .../StarRatingSvgScriptContributor.cs | 16 ++++++++++++++++ .../StarRatingSvgStyleContributor.cs | 13 +++++++++++++ npm/packs/star-rating-svg/abp.resourcemapping.js | 6 ++++++ npm/packs/star-rating-svg/package.json | 12 ++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/StarRatingSvg/StarRatingSvgScriptContributor.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/StarRatingSvg/StarRatingSvgStyleContributor.cs create mode 100644 npm/packs/star-rating-svg/abp.resourcemapping.js create mode 100644 npm/packs/star-rating-svg/package.json diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/StarRatingSvg/StarRatingSvgScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/StarRatingSvg/StarRatingSvgScriptContributor.cs new file mode 100644 index 0000000000..f1ce671aa8 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/StarRatingSvg/StarRatingSvgScriptContributor.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQuery; +using Volo.Abp.Modularity; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.StarRatingSvg +{ + [DependsOn(typeof(JQueryScriptContributor))] + public class StarRatingSvgScriptContributor : BundleContributor + { + public override void ConfigureBundle(BundleConfigurationContext context) + { + context.Files.AddIfNotContains("/libs/star-rating-svg/js/jquery.star-rating-svg.min.js"); + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/StarRatingSvg/StarRatingSvgStyleContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/StarRatingSvg/StarRatingSvgStyleContributor.cs new file mode 100644 index 0000000000..47e8d100e1 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/StarRatingSvg/StarRatingSvgStyleContributor.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.StarRatingSvg +{ + public class StarRatingSvgStyleContributor : BundleContributor + { + public override void ConfigureBundle(BundleConfigurationContext context) + { + context.Files.AddIfNotContains("/libs/star-rating-svg/css/star-rating-svg.css"); + } + } +} \ No newline at end of file diff --git a/npm/packs/star-rating-svg/abp.resourcemapping.js b/npm/packs/star-rating-svg/abp.resourcemapping.js new file mode 100644 index 0000000000..bb8a398f9b --- /dev/null +++ b/npm/packs/star-rating-svg/abp.resourcemapping.js @@ -0,0 +1,6 @@ +module.exports = { + mappings: { + "@node_modules/star-rating-svg/dist/*.min.js": "@libs/star-rating-svg/js/", + "@node_modules/star-rating-svg/src/css/*.css": "@libs/star-rating-svg/css/", + }, +}; diff --git a/npm/packs/star-rating-svg/package.json b/npm/packs/star-rating-svg/package.json new file mode 100644 index 0000000000..820cfb1978 --- /dev/null +++ b/npm/packs/star-rating-svg/package.json @@ -0,0 +1,12 @@ +{ + "version": "3.1.0-rc.2", + "name": "@abp/star-rating-svg", + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@abp/jquery": "~3.1.0-rc.2", + "star-rating-svg": "^3.5.0" + }, + "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" +} From 4889762d41f97df80223a643bdf901ebd715123a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 15:40:34 +0300 Subject: [PATCH 082/474] Update POST.md --- docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md index 9c7281ede4..e0543fb915 100644 --- a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md +++ b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md @@ -387,8 +387,6 @@ export class OrderService { src/app/shared/models/orders/**index.ts** -**TODO: FIX the ERROR** - ````typescript import type { GenericDetailDto } from '../../models/orders'; @@ -404,3 +402,4 @@ export interface OrderDetailDto extends GenericDetailDto { } ```` +NOTE: 3.1.0-rc2 was generating the code above, which is wrong. It will be fixed in the next RC versions. \ No newline at end of file From 6a81530abd391e05c848d178130b1befd2b4c541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 15:41:16 +0300 Subject: [PATCH 083/474] Added blog post: Introducing the Angular Service Proxy Generation --- .../POST.md | 405 ++++++++++++++++++ .../abp-generate-proxy-output.png | Bin 0 -> 42515 bytes .../swagger-book-list.png | Bin 0 -> 9573 bytes 3 files changed, 405 insertions(+) create mode 100644 docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md create mode 100644 docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/abp-generate-proxy-output.png create mode 100644 docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/swagger-book-list.png diff --git a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md new file mode 100644 index 0000000000..e0543fb915 --- /dev/null +++ b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md @@ -0,0 +1,405 @@ +# Introducing the Angular Service Proxy Generation + +Angular Service Proxy System **generates TypeScript services and models** to consume your backend HTTP APIs developed using the ABP Framework. So, you **don't manually create** models for your server side DTOs and perform raw HTTP calls to the server. + +ABP Framework has introduced the **new** Angular Service Proxy Generation system with the version 3.1. While this feature was available since the [v2.3](https://blog.abp.io/abp/ABP-Framework-v2_3_0-Has-Been-Released), it was not well covering some scenarios, like inheritance and generic types and had some known problems. **With the v3.1, we've re-written** it using the [Angular Schematics](https://angular.io/guide/schematics) system. Now, it is much more stable and feature rich. + +This post introduces the service proxy generation system and highlights some important features. + +## Installation + +### ABP CLI + +You need to have the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) to use the system. So, install it if you haven't installed before: + +````bash +dotnet tool install -g Volo.Abp.Cli +```` + +If you already have installed it before, you can update to the latest version: + +````shell +dotnet tool update -g Volo.Abp.Cli +```` + +### Project Configuration + +> If you've created your project with version 3.1 or later, you can skip this part since it will be already installed in your solution. + +For the solution was created before v3.1, follow the steps below to configure your angular project: + +* Add `@abp/ng.schematics` package to the `devDependencies` of the Angular project (run the following command in the root folder of the angular application): + +````bash +npm install @abp/ng.schematics --save-dev +```` + +- Add `rootNamespace` entry into the `/apis/default/` section in the `/src/environments/environment.ts`, as shown below: + +```json +apis: { + default: { + ... + rootNamespace: 'Acme.BookStore' //<-- ADD THIS + }, +} +``` + +`Acme.BookStore` should be replaced by the root namespace of your .NET project. This ensures to not create unnecessary nested folders while creating the service proxy code. + +## Basic Usage + +### Project Creation + +Assuming you've created your project with the Angular UI. + +Example (using the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI)): + +````bash +abp new AngularProxyDemo -u angular +```` + +#### Run the Application + +The backend application must be up and running to be able to use the service proxy code generation system. + +> See the [getting started](https://docs.abp.io/en/abp/latest/Getting-Started?UI=NG&DB=EF&Tiered=No) guide if you don't know how create and to run the project. + +### Backend + +Assume that we have an `IBookAppService` interface: + +````csharp +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace AngularProxyDemo.Books +{ + public interface IBookAppService : IApplicationService + { + public Task> GetListAsync(); + } +} +```` + +That uses a `BookDto` defined as shown: + +```csharp +using System; +using Volo.Abp.Application.Dtos; + +namespace AngularProxyDemo.Books +{ + public class BookDto : EntityDto + { + public string Name { get; set; } + + public DateTime PublishDate { get; set; } + } +} +``` + +And implemented as the following: + +```csharp +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace AngularProxyDemo.Books +{ + public class BookAppService : ApplicationService, IBookAppService + { + public async Task> GetListAsync() + { + //TODO: get books from a database... + } + } +} +``` + +It simply returns a list of books. You probably want to get the books from a database, but it doesn't matter for this article. + +### HTTP API + +Thanks to the conventional API controllers system of the ABP Framework, we don't have too develop API controllers manually. Just **run the backend (*HttpApi.Host*) application** that shows the [Swagger UI](https://swagger.io/tools/swagger-ui/) by default. You will see the GET API for the books: + +![swagger-book-list](swagger-book-list.png) + +### Service Proxy Generation + +Open a command line in the root folder of the Angular application and execute the following command: + +````bash +abp generate-proxy +```` + +It should produce an output like the following: + +````bash +CREATE src/app/shared/models/books/index.ts (142 bytes) +CREATE src/app/shared/services/books/book.service.ts (437 bytes) +... +```` + +> `generate-proxy` command can take some some optional parameters for advanced scenarios (like [modular development](https://docs.abp.io/en/abp/latest/Module-Development-Basics)). You can take a look at the [documentation](https://docs.abp.io/en/abp/latest/UI/Angular/Service-Proxies). + +It basically creates two files; + +src/app/shared/services/books/**book.service.ts**: This is the service that can be injected and used to get the list of books; + +````typescript +import { RestService } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; +import type { BookDto } from '../../models/book'; + +@Injectable({ + providedIn: 'root', +}) +export class BookService { + apiName = 'Default'; + + getList = () => + this.restService.request({ + method: 'GET', + url: `/api/app/book`, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} + +```` + +src/app/shared/models/books/**index.ts**: This file contains the modal classes corresponding to the DTOs defined in the server side; + +````typescript +import type { EntityDto } from '@abp/ng.core'; + +export interface BookDto extends EntityDto { + name: string; + publishDate: string; +} +```` + +You can now inject the `BookService` into any Angular component and use the `getList()` method to get the list of books. + +### About the Generated Code + +The generated code is; + +* **Simple**: It is almost identical to the code if you've written it yourself. +* **Splitted**: Instead of a single, large file; + * It creates a separate `.ts` file for every backend **service**. **Model** (DTO) classes are also grouped per service. + * It understands the [modularity](https://docs.abp.io/en/abp/latest/Module-Development-Basics), so creates the services for your own **module** (or the module you've specified). +* **Object oriented**; + * Supports **inheritance** of server side DTOs and generates the code respecting to the inheritance structure. + * Supports **generic types**. + * Supports **re-using type definitions** across services and doesn't generate the same DTO multiple times. +* **Well-aligned to the backend**; + * Service **method signatures** match exactly with the services on the backend services. This is achieved by a special endpoint exposed by the ABP Framework that well defines the backend contracts. + * **Namespaces** are exactly matches to the backend services and DTOs. +* **Well-aligned with the ABP Framework**; + * Recognizes the **standard ABP Framework DTO types** (like `EntityDto`, `ListResultDto`... etc) and doesn't repeat these classes in the application code, but uses from the `@abp/ng.core` package. + * Uses the `RestService` defined by the `@abp/ng.core` package which simplifies the generated code, keeps it short and re-uses all the logics implemented by the `RestService` (including error handling, authorization token injection, using multiple server endpoints... etc). + +These are the main motivations behind the decision of creating a service proxy generation system, instead of using a pre-built tool like [NSWAG](https://github.com/RicoSuter/NSwag). + +## Other Examples + +Let me show you a few more examples. + +### Updating an Entity + +Assume that you added a new method to the server side application service, to update a book: + +```csharp +public Task UpdateAsync(Guid id, BookUpdateDto input); +``` + +`BookUpdateDto` is a simple class defined shown below: + +```csharp +using System; + +namespace AngularProxyDemo.Books +{ + public class BookUpdateDto + { + public string Name { get; set; } + + public DateTime PublishDate { get; set; } + } +} +``` + +Let's re-run the `generate-proxy` command to see the result: + +```` +abp generate-proxy +```` + +The output of this command will be like the following: + +````bash +UPDATE src/app/shared/services/books/book.service.ts (660 bytes) +UPDATE src/app/shared/models/books/index.ts (217 bytes) +```` + +It tells us two files have been updated. Let's see the changes; + +**book.service.ts** + +````typescript +import { RestService } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; +import type { BookDto, BookUpdateDto } from '../../models/books'; + +@Injectable({ + providedIn: 'root', +}) +export class BookService { + apiName = 'Default'; + + getList = () => + this.restService.request({ + method: 'GET', + url: `/api/app/book`, + }, + { apiName: this.apiName }); + + update = (id: string, input: BookUpdateDto) => + this.restService.request({ + method: 'PUT', + url: `/api/app/book/${id}`, + body: input, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} +```` + +`update` function has been added to the `BookService` that gets an `id` and a `BookUpdateDto` as the parameters. + +**index.ts** + +````typescript +import type { EntityDto } from '@abp/ng.core'; + +export interface BookDto extends EntityDto { + name: string; + publishDate: string; +} + +export interface BookUpdateDto { + name: string; + publishDate: string; +} +```` + +Added a new DTO class: `BookUpdateDto`. + +### Advanced Example + +In this example, I want to show a DTO structure using inheritance, generics, arrays and dictionaries. + +I've created an `IOrderAppService` as shown below: + +````csharp +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace AngularProxyDemo.Orders +{ + public interface IOrderAppService : IApplicationService + { + public Task CreateAsync(OrderCreateDto input); + } +} +```` + +`OrderCreateDto` and the related DTOs are as the followings; + +````csharp +using System; +using System.Collections.Generic; +using Volo.Abp.Data; + +namespace AngularProxyDemo.Orders +{ + public class OrderCreateDto : IHasExtraProperties + { + public Guid CustomerId { get; set; } + + public DateTime CreationTime { get; set; } + + //ARRAY of DTOs + public OrderDetailDto[] Details { get; set; } + + //DICTIONARY + public Dictionary ExtraProperties { get; set; } + } + + public class OrderDetailDto : GenericDetailDto //INHERIT from GENERIC + { + public string Note { get; set; } + } + + //GENERIC class + public abstract class GenericDetailDto + { + public Guid ProductId { get; set; } + + public TCount Count { get; set; } + } +} +```` + +When I run the `abp generate-proxy` command again, I see two new files have been created. + +src/app/shared/services/orders/**order.service.ts** + +````typescript +import { RestService } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; +import type { OrderCreateDto } from '../../models/orders'; + +@Injectable({ + providedIn: 'root', +}) +export class OrderService { + apiName = 'Default'; + + create = (input: OrderCreateDto) => + this.restService.request({ + method: 'POST', + url: `/api/app/order`, + body: input, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} +```` + +src/app/shared/models/orders/**index.ts** + +````typescript +import type { GenericDetailDto } from '../../models/orders'; + +export interface OrderCreateDto { + customerId: string; + creationTime: string; + details: OrderDetailDto[]; + extraProperties: string | object; +} + +export interface OrderDetailDto extends GenericDetailDto { + note: string; +} +```` + +NOTE: 3.1.0-rc2 was generating the code above, which is wrong. It will be fixed in the next RC versions. \ No newline at end of file diff --git a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/abp-generate-proxy-output.png b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/abp-generate-proxy-output.png new file mode 100644 index 0000000000000000000000000000000000000000..0a77d8e40fe256f7443fe81b4552d310414f31f5 GIT binary patch literal 42515 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 literal 0 HcmV?d00001 From dd298f3301cc330a6817d7d5f2a59ac7ae9c03c0 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 27 Aug 2020 15:50:56 +0300 Subject: [PATCH 084/474] feat: accept __default as placeholder for default param --- .../packages/schematics/src/commands/api/index.ts | 4 +++- .../packages/schematics/src/commands/proxy/index.ts | 6 ++++-- npm/ng-packs/packages/schematics/src/utils/common.ts | 10 ++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/index.ts b/npm/ng-packs/packages/schematics/src/commands/api/index.ts index 956e91e0b1..24e0f816af 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/api/index.ts @@ -23,13 +23,15 @@ import { getRootNamespace, interpolate, ModelGeneratorParams, + removeDefaultPlaceholders, resolveProject, serializeParameters, } from '../../utils'; import * as cases from '../../utils/text'; import { Schema as GenerateProxySchema } from './schema'; -export default function(params: GenerateProxySchema) { +export default function(schema: GenerateProxySchema) { + const params = removeDefaultPlaceholders(schema); const moduleName = strings.camelize(params.module || 'app'); return chain([ diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy/index.ts index d597f720cd..ddbbd68caa 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy/index.ts @@ -13,11 +13,13 @@ import { createApiDefinitionSaver, getApiDefinition, getSourceUrl, + removeDefaultPlaceholders, resolveProject, } from '../../utils'; import { Schema as GenerateProxySchema } from './schema'; -export default function(params: GenerateProxySchema) { +export default function(schema: GenerateProxySchema) { + const params = removeDefaultPlaceholders(schema); const moduleName = strings.camelize(params.module || 'app'); return chain([ @@ -32,7 +34,7 @@ export default function(params: GenerateProxySchema) { data, `${targetPath}/shared/api-definition.json`, ); - const createApi = schematic('api', params); + const createApi = schematic('api', schema); return branchAndMerge(chain([saveApiDefinition, createApi])); }, diff --git a/npm/ng-packs/packages/schematics/src/utils/common.ts b/npm/ng-packs/packages/schematics/src/utils/common.ts index 8a5aa5fd93..ff01bd27c5 100644 --- a/npm/ng-packs/packages/schematics/src/utils/common.ts +++ b/npm/ng-packs/packages/schematics/src/utils/common.ts @@ -23,3 +23,13 @@ export function readFileInTree(tree: Tree, filePath: string): ts.SourceFile { const text = buffer.toString('utf-8'); return ts.createSourceFile(filePath, text, ts.ScriptTarget.Latest, true); } + +export function removeDefaultPlaceholders(oldParams: T) { + const newParams: Record = {}; + + Object.entries(oldParams).forEach(([key, value]) => { + newParams[key] = value === '__default' ? undefined : value; + }); + + return newParams as T; +} From d3f0f3c603663a05a74be4bda32528baac5232c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 15:52:44 +0300 Subject: [PATCH 085/474] Update POST.md --- .../POST.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md index e0543fb915..d16540872f 100644 --- a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md +++ b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md @@ -26,34 +26,34 @@ dotnet tool update -g Volo.Abp.Cli > If you've created your project with version 3.1 or later, you can skip this part since it will be already installed in your solution. -For the solution was created before v3.1, follow the steps below to configure your angular project: +For a solution that was created before v3.1, follow the steps below to configure the angular application: -* Add `@abp/ng.schematics` package to the `devDependencies` of the Angular project (run the following command in the root folder of the angular application): +* Add `@abp/ng.schematics` package to the `devDependencies` of the Angular project. Run the following command in the root folder of the angular application: ````bash npm install @abp/ng.schematics --save-dev ```` -- Add `rootNamespace` entry into the `/apis/default/` section in the `/src/environments/environment.ts`, as shown below: +- Add `rootNamespace` entry into the `apis/default` section in the `/src/environments/environment.ts`, as shown below: ```json apis: { default: { ... - rootNamespace: 'Acme.BookStore' //<-- ADD THIS + rootNamespace: 'Acme.BookStore' }, } ``` -`Acme.BookStore` should be replaced by the root namespace of your .NET project. This ensures to not create unnecessary nested folders while creating the service proxy code. +`Acme.BookStore` should be replaced by the root namespace of your .NET project. This ensures to not create unnecessary nested folders while creating the service proxy code. This value is `AngularProxyDemo` for the example solution explained below. ## Basic Usage ### Project Creation -Assuming you've created your project with the Angular UI. +> If you already have a solution, you can skip this section. -Example (using the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI)): +You need to [create](https://abp.io/get-started) your solution with the Angular UI. You can use the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) to create a new solution: ````bash abp new AngularProxyDemo -u angular @@ -63,7 +63,7 @@ abp new AngularProxyDemo -u angular The backend application must be up and running to be able to use the service proxy code generation system. -> See the [getting started](https://docs.abp.io/en/abp/latest/Getting-Started?UI=NG&DB=EF&Tiered=No) guide if you don't know how create and to run the project. +> See the [getting started](https://docs.abp.io/en/abp/latest/Getting-Started?UI=NG&DB=EF&Tiered=No) guide if you don't know details of creating and running the solution. ### Backend @@ -124,13 +124,13 @@ It simply returns a list of books. You probably want to get the books from a dat ### HTTP API -Thanks to the conventional API controllers system of the ABP Framework, we don't have too develop API controllers manually. Just **run the backend (*HttpApi.Host*) application** that shows the [Swagger UI](https://swagger.io/tools/swagger-ui/) by default. You will see the GET API for the books: +Thanks to the [auto API controllers](https://docs.abp.io/en/abp/latest/API/Auto-API-Controllers) system of the ABP Framework, we don't have to develop API controllers manually. Just **run the backend (*HttpApi.Host*) application** that shows the [Swagger UI](https://swagger.io/tools/swagger-ui/) by default. You will see the **GET** API for the books: ![swagger-book-list](swagger-book-list.png) ### Service Proxy Generation -Open a command line in the root folder of the Angular application and execute the following command: +Open a **command line** in the **root folder of the Angular application** and execute the following command: ````bash abp generate-proxy From 32b3fded5733b1496f48e3629fd8841f132fcf77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 16:06:58 +0300 Subject: [PATCH 086/474] GenerateProxyCommand should pass __default for unset options. --- .../Abp/Cli/Commands/AddPackageCommand.cs | 1 - .../Abp/Cli/Commands/GenerateProxyCommand.cs | 43 +++++++++++++++---- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddPackageCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddPackageCommand.cs index 7ea20eccf4..36530a7979 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddPackageCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddPackageCommand.cs @@ -115,7 +115,6 @@ namespace Volo.Abp.Cli.Commands throw new CliUsageException(sb.ToString()); } - public static class Options { public static class Project diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs index ab680ce4b8..fa605bdce7 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs @@ -2,7 +2,6 @@ using System; using System.IO; using System.Text; using System.Threading.Tasks; -using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Volo.Abp.Cli.Args; using Volo.Abp.Cli.Utils; @@ -17,7 +16,11 @@ namespace Volo.Abp.Cli.Commands CheckAngularJsonFile(); CheckNgSchematics(); - CmdHelper.RunCmd("npx ng g @abp/ng.schematics:proxy"); + var module = commandLineArgs.Options.GetOrNull(Options.Module.Short, Options.Module.Long) ?? "__default"; + var source = commandLineArgs.Options.GetOrNull(Options.Source.Short, Options.Source.Long) ?? "__default"; + var target = commandLineArgs.Options.GetOrNull(Options.Target.Short, Options.Target.Long) ?? "__default"; + + CmdHelper.RunCmd($"npx ng g @abp/ng.schematics:proxy --module {module} --source {source} --target {target}"); return Task.CompletedTask; } @@ -29,20 +32,21 @@ namespace Volo.Abp.Cli.Commands if (!File.Exists(packageJsonPath)) { throw new CliUsageException( - "package.json file not found" + - Environment.NewLine + - GetUsageInfo() + "package.json file not found" + + Environment.NewLine + + GetUsageInfo() ); } - var schematicsPackageNode = (string) JObject.Parse(File.ReadAllText(packageJsonPath))["devDependencies"]?["@abp/ng.schematics"]; + var schematicsPackageNode = + (string) JObject.Parse(File.ReadAllText(packageJsonPath))["devDependencies"]?["@abp/ng.schematics"]; if (schematicsPackageNode == null) { throw new CliUsageException( - "\"@abp/ng.schematics\" NPM package should be installed to the devDependencies before running this command!" + - Environment.NewLine + - GetUsageInfo() + "\"@abp/ng.schematics\" NPM package should be installed to the devDependencies before running this command!" + + Environment.NewLine + + GetUsageInfo() ); } } @@ -82,5 +86,26 @@ namespace Volo.Abp.Cli.Commands { return "Generates Angular service proxies and DTOs to consume HTTP APIs."; } + + public static class Options + { + public static class Module + { + public const string Short = "m"; + public const string Long = "module"; + } + + public static class Source + { + public const string Short = "s"; + public const string Long = "source"; + } + + public static class Target + { + public const string Short = "t"; + public const string Long = "target"; + } + } } } From f4ad9b9eab9086649a3b13503fab9182efa0f81f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 16:22:23 +0300 Subject: [PATCH 087/474] Add prompt parameter to the GenerateProxyCommand --- .../Abp/Cli/Commands/GenerateProxyCommand.cs | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs index fa605bdce7..5e88417b4a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs @@ -16,11 +16,31 @@ namespace Volo.Abp.Cli.Commands CheckAngularJsonFile(); CheckNgSchematics(); - var module = commandLineArgs.Options.GetOrNull(Options.Module.Short, Options.Module.Long) ?? "__default"; - var source = commandLineArgs.Options.GetOrNull(Options.Source.Short, Options.Source.Long) ?? "__default"; - var target = commandLineArgs.Options.GetOrNull(Options.Target.Short, Options.Target.Long) ?? "__default"; + var prompt = commandLineArgs.Options.ContainsKey("p") || commandLineArgs.Options.ContainsKey("prompt"); + var defaultValue = prompt ? null : "__default"; - CmdHelper.RunCmd($"npx ng g @abp/ng.schematics:proxy --module {module} --source {source} --target {target}"); + var module = commandLineArgs.Options.GetOrNull(Options.Module.Short, Options.Module.Long) ?? defaultValue; + var source = commandLineArgs.Options.GetOrNull(Options.Source.Short, Options.Source.Long) ?? defaultValue; + var target = commandLineArgs.Options.GetOrNull(Options.Target.Short, Options.Target.Long) ?? defaultValue; + + var commandBuilder = new StringBuilder("npx ng g @abp/ng.schematics:proxy"); + + if (module != null) + { + commandBuilder.Append($" --module {module}"); + } + + if (source != null) + { + commandBuilder.Append($" --source {source}"); + } + + if (target != null) + { + commandBuilder.Append($" --target {target}"); + } + + CmdHelper.RunCmd(commandBuilder.ToString()); return Task.CompletedTask; } @@ -73,9 +93,12 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine(""); sb.AppendLine(" abp generate-proxy"); sb.AppendLine(""); - sb.AppendLine("Examples:"); + sb.AppendLine("Options:"); sb.AppendLine(""); - sb.AppendLine(" abp generate-proxy"); + sb.AppendLine("-m|--module (default: 'app') The name of the backend module you wish to generate proxies for."); + sb.AppendLine("-s|--source (default: 'defaultProject') Angular project name to resolve the root namespace & API definition URL from."); + sb.AppendLine("-t|--target (default: 'defaultProject') Angular project name to place generated code in."); + sb.AppendLine("-p|--prompt Asks the options from the command line prompt (for the missing options)"); sb.AppendLine(""); sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); @@ -106,6 +129,12 @@ namespace Volo.Abp.Cli.Commands public const string Short = "t"; public const string Long = "target"; } + + public static class Prompt + { + public const string Short = "p"; + public const string Long = "prompt"; + } } } } From ee718ffb3a6a7f6464dc4c37a0a4e3deea751d7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 16:34:13 +0300 Subject: [PATCH 088/474] Resolved #5205: Add "--skip-cli-version-check" option to ABP CLI. --- docs/en/CLI.md | 6 ++++++ .../src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/en/CLI.md b/docs/en/CLI.md index 99808c3ba5..ff828b91a3 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -16,6 +16,12 @@ To update an existing installation: dotnet tool update -g Volo.Abp.Cli ```` +## Global Options + +While each command may have a set of options, there are some global options those can be used with any command; + +* `--skip-cli-version-check`: Skips to check the latest version of the ABP CLI. If you don't specify, it will check the latest version and shows a warning message if there is a newer version of the ABP CLI. + ## Commands Here, the list of all available commands before explaining their details: diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs index ef6eb79042..a984d79771 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs @@ -41,9 +41,13 @@ namespace Volo.Abp.Cli { Logger.LogInformation("ABP CLI (https://abp.io)"); - await CheckCliVersionAsync(); - var commandLineArgs = CommandLineArgumentParser.Parse(args); + + if (!commandLineArgs.Options.ContainsKey("skip-cli-version-check")) + { + await CheckCliVersionAsync(); + } + var commandType = CommandSelector.Select(commandLineArgs); using (var scope = ServiceScopeFactory.CreateScope()) @@ -72,7 +76,7 @@ namespace Volo.Abp.Cli var currentCliVersion = await GetCurrentCliVersion(assembly); var updateChannel = GetUpdateChannel(currentCliVersion); - Logger.LogInformation($"Version {currentCliVersion} ({updateChannel} channel)"); + Logger.LogInformation($"Version {currentCliVersion} ({updateChannel})"); try { From 28b13d3af39598bde9644f7e5d871a5fcf3eced4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 16:35:48 +0300 Subject: [PATCH 089/474] Add options to GenerateProxyCommand --- .../Abp/Cli/Commands/GenerateProxyCommand.cs | 76 ++++++++++++++++--- 1 file changed, 65 insertions(+), 11 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs index ab680ce4b8..5e88417b4a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs @@ -2,7 +2,6 @@ using System; using System.IO; using System.Text; using System.Threading.Tasks; -using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Volo.Abp.Cli.Args; using Volo.Abp.Cli.Utils; @@ -17,7 +16,31 @@ namespace Volo.Abp.Cli.Commands CheckAngularJsonFile(); CheckNgSchematics(); - CmdHelper.RunCmd("npx ng g @abp/ng.schematics:proxy"); + var prompt = commandLineArgs.Options.ContainsKey("p") || commandLineArgs.Options.ContainsKey("prompt"); + var defaultValue = prompt ? null : "__default"; + + var module = commandLineArgs.Options.GetOrNull(Options.Module.Short, Options.Module.Long) ?? defaultValue; + var source = commandLineArgs.Options.GetOrNull(Options.Source.Short, Options.Source.Long) ?? defaultValue; + var target = commandLineArgs.Options.GetOrNull(Options.Target.Short, Options.Target.Long) ?? defaultValue; + + var commandBuilder = new StringBuilder("npx ng g @abp/ng.schematics:proxy"); + + if (module != null) + { + commandBuilder.Append($" --module {module}"); + } + + if (source != null) + { + commandBuilder.Append($" --source {source}"); + } + + if (target != null) + { + commandBuilder.Append($" --target {target}"); + } + + CmdHelper.RunCmd(commandBuilder.ToString()); return Task.CompletedTask; } @@ -29,20 +52,21 @@ namespace Volo.Abp.Cli.Commands if (!File.Exists(packageJsonPath)) { throw new CliUsageException( - "package.json file not found" + - Environment.NewLine + - GetUsageInfo() + "package.json file not found" + + Environment.NewLine + + GetUsageInfo() ); } - var schematicsPackageNode = (string) JObject.Parse(File.ReadAllText(packageJsonPath))["devDependencies"]?["@abp/ng.schematics"]; + var schematicsPackageNode = + (string) JObject.Parse(File.ReadAllText(packageJsonPath))["devDependencies"]?["@abp/ng.schematics"]; if (schematicsPackageNode == null) { throw new CliUsageException( - "\"@abp/ng.schematics\" NPM package should be installed to the devDependencies before running this command!" + - Environment.NewLine + - GetUsageInfo() + "\"@abp/ng.schematics\" NPM package should be installed to the devDependencies before running this command!" + + Environment.NewLine + + GetUsageInfo() ); } } @@ -69,9 +93,12 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine(""); sb.AppendLine(" abp generate-proxy"); sb.AppendLine(""); - sb.AppendLine("Examples:"); + sb.AppendLine("Options:"); sb.AppendLine(""); - sb.AppendLine(" abp generate-proxy"); + sb.AppendLine("-m|--module (default: 'app') The name of the backend module you wish to generate proxies for."); + sb.AppendLine("-s|--source (default: 'defaultProject') Angular project name to resolve the root namespace & API definition URL from."); + sb.AppendLine("-t|--target (default: 'defaultProject') Angular project name to place generated code in."); + sb.AppendLine("-p|--prompt Asks the options from the command line prompt (for the missing options)"); sb.AppendLine(""); sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); @@ -82,5 +109,32 @@ namespace Volo.Abp.Cli.Commands { return "Generates Angular service proxies and DTOs to consume HTTP APIs."; } + + public static class Options + { + public static class Module + { + public const string Short = "m"; + public const string Long = "module"; + } + + public static class Source + { + public const string Short = "s"; + public const string Long = "source"; + } + + public static class Target + { + public const string Short = "t"; + public const string Long = "target"; + } + + public static class Prompt + { + public const string Short = "p"; + public const string Long = "prompt"; + } + } } } From 43c18d0322cf3c1fc60495233383cc4e961c7171 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 16:45:14 +0300 Subject: [PATCH 090/474] Added Conclusion section --- .../Using-DevExtreme-In-ABP-Based-Application.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md b/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md index 1b2c2b3e33..c62db89fc0 100644 --- a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md +++ b/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md @@ -1,9 +1,11 @@ ## Using DevExtreme with ABP Based Applications -Hi, in this step by step article, I will show you how to integrate DevExtreme components into ABP Framework based applications. +Hi, in this step by step article, I will show you how to integrate [DevExtreme](https://js.devexpress.com/) components into ABP Framework based applications. ![both-example-result](both-example-result.png) +*(A screenshot from the example application developed in this article)* + ## Create the Project ABP Framework offers startup templates to get into the business faster. We can download a new startup template using [ABP CLI](https://docs.abp.io/en/abp/latest/CLI): @@ -300,3 +302,7 @@ Html.DevExtreme().DataGrid() .Key("OrderID") ) ``` + +## Conclusion + +In this article, I've explained how to use [DevExtreme](https://js.devexpress.com/) components in your application. ABP Framework is designed so that it can work with any UI library/framework. \ No newline at end of file From df7cd0ebad9aff27d20dbef4dce6be6f8add22e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 16:46:13 +0300 Subject: [PATCH 091/474] Update Using-DevExtreme-In-ABP-Based-Application.md --- .../Using-DevExtreme-In-ABP-Based-Application.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md b/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md index c62db89fc0..19cac81e76 100644 --- a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md +++ b/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md @@ -1,4 +1,4 @@ -## Using DevExtreme with ABP Based Applications +## Using DevExtreme Componenets With the ABP Fremework Hi, in this step by step article, I will show you how to integrate [DevExtreme](https://js.devexpress.com/) components into ABP Framework based applications. @@ -305,4 +305,4 @@ Html.DevExtreme().DataGrid() ## Conclusion -In this article, I've explained how to use [DevExtreme](https://js.devexpress.com/) components in your application. ABP Framework is designed so that it can work with any UI library/framework. \ No newline at end of file +In this article, I've explained how to use [DevExtreme](https://js.devexpress.com/) components in your application. ABP Framework is designed so that it can work with any UI library/framework. From 8d03319c9ebfd9461e3e758ed4faa266cd454b73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 17:27:02 +0300 Subject: [PATCH 092/474] Set dependencies and versions. --- npm/packs/cropperjs/package.json | 3 ++- npm/packs/luxon/package.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json index 9ce511e71b..6255727a26 100644 --- a/npm/packs/cropperjs/package.json +++ b/npm/packs/cropperjs/package.json @@ -1,10 +1,11 @@ { - "version": "3.0.5", + "version": "~3.1.0-rc.2", "name": "@abp/cropperjs", "publishConfig": { "access": "public" }, "dependencies": { + "@abp/core": "~3.1.0-rc.2", "cropperjs": "^1.5.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index de348d7b21..b26f1b6ba6 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -5,7 +5,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~3.0.5", + "@abp/core": "~3.1.0-rc.2", "luxon": "^1.24.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" From 9b95e6d398fe1a2cfddaf3fdc7eee72ad13b8177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 17:28:33 +0300 Subject: [PATCH 093/474] Fix version --- npm/packs/cropperjs/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json index 6255727a26..0895ebcace 100644 --- a/npm/packs/cropperjs/package.json +++ b/npm/packs/cropperjs/package.json @@ -1,11 +1,11 @@ { - "version": "~3.1.0-rc.2", + "version": "~3.0.5", "name": "@abp/cropperjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.0.5", "cropperjs": "^1.5.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" From 7db0f4fe9ceb3b20950004bd5cd8ac69529cc432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 17:30:28 +0300 Subject: [PATCH 094/474] Fix version --- npm/packs/cropperjs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json index 0895ebcace..9764f89545 100644 --- a/npm/packs/cropperjs/package.json +++ b/npm/packs/cropperjs/package.json @@ -1,5 +1,5 @@ { - "version": "~3.0.5", + "version": "3.0.5", "name": "@abp/cropperjs", "publishConfig": { "access": "public" From f5594ec3973a9991f6c590806f36eaaeb8c37fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yekta=20Burcu=20G=C3=B6kta=C5=9F?= <58883990+YektaGoktas@users.noreply.github.com> Date: Thu, 27 Aug 2020 17:40:31 +0300 Subject: [PATCH 095/474] Update Using-DevExtreme-In-ABP-Based-Application.md Some grammatical correctness. --- .../Using-DevExtreme-In-ABP-Based-Application.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md b/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md index 19cac81e76..eb93041228 100644 --- a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md +++ b/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md @@ -1,6 +1,6 @@ -## Using DevExtreme Componenets With the ABP Fremework +## Using DevExtreme Components With the ABP Fremework -Hi, in this step by step article, I will show you how to integrate [DevExtreme](https://js.devexpress.com/) components into ABP Framework based applications. +Hi, in this step by step article, I will show you how to integrate [DevExtreme](https://js.devexpress.com/) components into ABP Framework-based applications. ![both-example-result](both-example-result.png) @@ -153,7 +153,7 @@ namespace DevExtremeSample.Web.Bundling } ``` -As you see, the `DevExtremeScriptContributor` is depends on `JQueryScriptContributor` which adds JQuery related files before the DevExpress packages (see the [bundling system](https://docs.abp.io/en/abp/latest/UI/AspNetCore/Bundling-Minification) for details). +As you see, the `DevExtremeScriptContributor` depends on `JQueryScriptContributor` which adds JQuery related files before the DevExpress packages (see the [bundling system](https://docs.abp.io/en/abp/latest/UI/AspNetCore/Bundling-Minification) for details). #### Create DevExtremeJsViewComponent @@ -186,7 +186,7 @@ namespace DevExtremeSample.Web.Components.DevExtremeJs ``` -Your final Web project should be like as the following: +Your final Web project should be like the following: ![devextreme-js](devextreme-js.png) @@ -206,7 +206,7 @@ Configure(options => #### Known Issue: Uncaught TypeError: MutationObserver.observe: Argument 1 is not an object. -> This issue does exists in the ABP Framework v3.0 and earlier versions. If you are using ABP Framework v3.1 or a latter version, you can skip this section. +> This issue does exist in the ABP Framework v3.0 and earlier versions. If you are using ABP Framework v3.1 or a later version, you can skip this section. When you run your `*.Web` project, you will see an exception (`Uncaught TypeError: MutationObserver.observe: Argument 1 is not an object.`) at your console. @@ -267,7 +267,7 @@ I've used an in-memory list to store data for this example, instead of a real da #### JSON Serialization -You can see some `JsonProperty` attributes on the DTO properties. I uses these attributes because DevExtreme example expects `PascalCase` property names in the serialized JSON that is sent to the client. But ABP Framework & ASP.NET Core conventionally uses `camelCase` property names on JSON serialization. Adding these `JsonProperty` attributes ensures that the related properties are serialized as `PascalCase`. +You can see some `JsonProperty` attributes on the DTO properties. I use these attributes because DevExtreme example expects `PascalCase` property names in the serialized JSON that is sent to the client. But ABP Framework & ASP.NET Core conventionally uses `camelCase` property names on JSON serialization. Adding these `JsonProperty` attributes ensures that the related properties are serialized as `PascalCase`. #### DevExtreme Components vs Application Service Methods From 9f69970f3d5559bd1b71a8007c437a543447992e Mon Sep 17 00:00:00 2001 From: berkansasmaz Date: Thu, 27 Aug 2020 17:54:53 +0300 Subject: [PATCH 096/474] Localization added for new features added to the Community. --- .../Community/Localization/Resources/en.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json index 6ed5d8c778..651af64675 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json @@ -65,6 +65,22 @@ "HeightAndWidthMustNotExceed": "Height and Width must not exceed 1920*1080.", "CoverImage": "Cover Image", "ShareYourExperiencesWithTheABPFramework": "Share your experiences with the ABP Framework!", - "Optional": "Optional" + "Optional": "Optional", + "UpdateUserWebSiteInfo": "Example: https://abp.io", + "UpdateUserTwitterInfo": "Example: https://twitter.com/abpframework", + "UpdateUserGithubInfo": "Example: https://github.com/abpframework/abp", + "UpdateUserLinkedinInfo": "Example: https://www.linkedin.com/company/volosoft", + "UpdateUserCompanyInfo": "Example: Volosoft Computer & Technology", + "UpdateUserJobTitleInfo": "Example: Software Engineer Intern", + "UpdateUserBiographyInfo": "About you", + "UserName": "UserName", + "Company": "Company", + "PersonalWebsite": "Personal Website", + "RegistrationDate": "Registration Date", + "Social": "Social", + "Biography": "Biography", + "HasNoPublishedArticlesYet": "has no published articles yet", + "Author": "Author", + "MyAccount": "My account" } } From d874b4d927aac9a502523252d6946c8b7b962911 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Thu, 27 Aug 2020 17:59:40 +0300 Subject: [PATCH 097/474] File Rename --- ...DevExtreme-Components-With-The-ABP-Fremework.md} | 0 .../both-example-result.png | Bin .../data-grid-app-contract.png | Bin .../data-grid-application.png | Bin .../data-grid-final.png | Bin .../data-grid-web.png | Bin .../devexp-result.gif | Bin .../devextreme-js.png | Bin .../gulp.png | Bin .../initial-project.png | Bin .../tree-list-app-contract.png | Bin .../tree-list-application.png | Bin .../tree-list-final.png | Bin .../tree-list-web.png | Bin .../wwwroot-lib.png | Bin 15 files changed, 0 insertions(+), 0 deletions(-) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/Using-DevExtreme-Components-With-The-ABP-Fremework.md} (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/both-example-result.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/data-grid-app-contract.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/data-grid-application.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/data-grid-final.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/data-grid-web.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/devexp-result.gif (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/devextreme-js.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/gulp.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/initial-project.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/tree-list-app-contract.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/tree-list-application.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/tree-list-final.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/tree-list-web.png (100%) rename docs/en/Community-Articles/{2020-08-18-DevExtreme-With-ABP => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework}/wwwroot-lib.png (100%) diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/Using-DevExtreme-Components-With-The-ABP-Fremework.md similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/Using-DevExtreme-In-ABP-Based-Application.md rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/Using-DevExtreme-Components-With-The-ABP-Fremework.md diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/both-example-result.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/both-example-result.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/both-example-result.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/both-example-result.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/data-grid-app-contract.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-app-contract.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/data-grid-app-contract.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-app-contract.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/data-grid-application.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-application.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/data-grid-application.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-application.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/data-grid-final.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-final.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/data-grid-final.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-final.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/data-grid-web.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-web.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/data-grid-web.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-web.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/devexp-result.gif b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/devexp-result.gif similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/devexp-result.gif rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/devexp-result.gif diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/devextreme-js.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/devextreme-js.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/devextreme-js.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/devextreme-js.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/gulp.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/gulp.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/gulp.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/gulp.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/initial-project.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/initial-project.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/initial-project.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/initial-project.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/tree-list-app-contract.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-app-contract.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/tree-list-app-contract.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-app-contract.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/tree-list-application.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-application.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/tree-list-application.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-application.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/tree-list-final.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-final.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/tree-list-final.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-final.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/tree-list-web.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-web.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/tree-list-web.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-web.png diff --git a/docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/wwwroot-lib.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/wwwroot-lib.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-DevExtreme-With-ABP/wwwroot-lib.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/wwwroot-lib.png From e96b5bf26b9888bdf2fd73539ef50524d1e82503 Mon Sep 17 00:00:00 2001 From: EngincanV Date: Thu, 27 Aug 2020 18:16:36 +0300 Subject: [PATCH 098/474] CmsKit: Rating widget design --- .../Shared/Components/Rating/Default.cshtml | 66 +++++++++---------- .../Components/Rating/RatingViewComponent.cs | 7 +- .../Shared/Components/Rating/default.css | 45 ++++++++++++- .../Shared/Components/Rating/default.js | 21 +----- 4 files changed, 82 insertions(+), 57 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml index 51b799d2e6..f1d96fa97e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml @@ -1,52 +1,46 @@ @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Users @using Volo.CmsKit.Localization -@using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating @inject ICurrentUser CurrentUser @model Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating.RatingViewModel @inject IHtmlLocalizer L -@section styles{ - -} - -@section scripts{ - -} - -
    +
    @if (CurrentUser.IsAuthenticated) { -
    - - @(Model.CurrentRating != null ? Model.CurrentRating.StarCount : 0) - if (Model.CurrentRating != null) - { - - @L["Undo"] - - } -
    -
    -

    All Stars

    - @if (Model.Ratings != null) +
    + + @(Model.CurrentRating != null ? Model.CurrentRating.StarCount + " | " : 0 + "") + @if (Model.CurrentRating != null) { -
      - @foreach (var rating in Model.Ratings) - { -
    • - @rating.StarCount @L["Stars"] - @rating.Count -
    • - } -
    + + @L["Undo"] + }
    + if (Model.Ratings != null) + { +
    + @foreach (var rating in Model.Ratings) + { +
    +
    @rating.StarCount @L["Stars"]
    +
    +
    +
    +
    +
    +
    +
    +
    @rating.Count
    +
    + } +
    + } } else { - +
    "> + } -
    +
    \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs index 31dedbc532..7c458d033b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; @@ -32,6 +33,7 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating public virtual async Task InvokeAsync(string entityType, string entityId) { var ratings = await RatingPublicAppService.GetGroupedStarCountsAsync(entityType, entityId); + var totalRating = ratings.Sum(x => x.Count); RatingDto currentUserRating = null; if (CurrentUser.IsAuthenticated) @@ -48,7 +50,8 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating EntityType = entityType, LoginUrl = loginUrl, Ratings = ratings, - CurrentRating = currentUserRating + CurrentRating = currentUserRating, + TotalRating = totalRating }; return View("~/Pages/CmsKit/Shared/Components/Rating/Default.cshtml", viewModel); @@ -66,5 +69,7 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating public List Ratings { get; set; } public RatingDto CurrentRating { get; set; } + + public int TotalRating { get; set; } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.css b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.css index 5f282702bb..c38f44cace 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.css +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.css @@ -1 +1,44 @@ - \ No newline at end of file +.side { + width: 15%; + margin-top:10px; +} + +.middle { + float: left; + width: 70%; + margin-top:10px; + padding-top: 4px; +} + +.row:after { + content: ""; + display: table; + clear: both; +} + +.bar-container { + width: 100%; + background-color: #f1f1f1; + text-align: center; + color: white; +} + +.bar { + height: 18px; +} + +/* Individual bars */ +.bar-5 { background-color: #173F5F; } +.bar-4 { background-color: #20639B; } +.bar-3 { background-color: #3CAEA3; } +.bar-2 { background-color: #F6D55C; } +.bar-1 { background-color: #ED553B; } + +@media (max-width: 400px) { + .side, .middle { + width: 100%; + } + .right { + display: none; + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js index 6bc8dc763e..2835e57a3c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js @@ -1,22 +1,4 @@ (function () { - var authenticated = $(".my-rating-5").attr("data-authenticated"); - - $(".my-rating-5").starRating({ - initialRating: 0, - disableAfterRate: true, - useFullStars: true, - readOnly: authenticated === "True", - onHover: function(currentIndex, currentRating, $el) { - $(".live-rating").text(currentIndex); - }, - onLeave: function(currentIndex, currentRating, $el) { - $(".live-rating").text(currentRating); - }, - callback: function(currentRating, $el) { - alert(currentRating); - } - }); - var l = abp.localization.getResource("CmsKit"); $(document).ready(function () { @@ -32,6 +14,8 @@ } function registerCreateOfNewRating() { + var authenticated = $(".my-rating-5").attr("data-authenticated"); + $(".my-rating-5").starRating({ initialRating: 0, disableAfterRate: true, @@ -58,7 +42,6 @@ } function registerUndoLink() { - console.log("asdf"); $(".rating-undo-link").on('click', '', function (e) { e.preventDefault(); From 9c8f7528454f4ef191bf521e58e6c9d23af6309f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 27 Aug 2020 20:50:57 +0300 Subject: [PATCH 099/474] Add options of the generate-proxy command. --- docs/en/CLI.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/en/CLI.md b/docs/en/CLI.md index ff828b91a3..91e7b6669d 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -187,6 +187,13 @@ Usage: abp generate-proxy ```` +#### Options + +* `--module` or `-m`: Specifies the name of the backend module you wish to generate proxies for. Default value: `app`. +* `--source` or `-s`: Specifies the Angular project name to resolve the root namespace & API definition URL from. Default value: `defaultProject`. +* `--target` or `-t`: Specifies the Angular project name to place generated code in. Default value: `defaultProject`. +* `--prompt` or `-p`: Asks the options from the command line prompt (for the unspecified options). + > See the [Angular Service Proxies document](UI/Angular/Service-Proxies.md) for more. @@ -202,7 +209,7 @@ abp switch-to-preview [options] #### Options -`--solution-directory` or `-sd`: Specifies the directory. The solution should be in that directory or in any of its sub directories. If not specified, default is the current directory. +* `--solution-directory` or `-sd`: Specifies the directory. The solution should be in that directory or in any of its sub directories. If not specified, default is the current directory. ### switch-to-nightly @@ -217,7 +224,7 @@ abp switch-to-nightly [options] #### Options -`--solution-directory` or `-sd`: Specifies the directory. The solution should be in that directory or in any of its sub directories. If not specified, default is the current directory. +* `--solution-directory` or `-sd`: Specifies the directory. The solution should be in that directory or in any of its sub directories. If not specified, default is the current directory. ### switch-to-stable @@ -230,7 +237,7 @@ abp switch-to-stable [options] ```` #### Options -`--solution-directory` or `-sd`: Specifies the directory. The solution should be in that directory or in any of its sub directories. If not specified, default is the current directory. +* `--solution-directory` or `-sd`: Specifies the directory. The solution should be in that directory or in any of its sub directories. If not specified, default is the current directory. ### translate From 53defa8c724536c1f62107f9359c061c722bd611 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 27 Aug 2020 22:20:58 +0300 Subject: [PATCH 100/474] feat: resolve dictionary types in schematics --- .../packages/schematics/src/utils/type.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/type.ts b/npm/ng-packs/packages/schematics/src/utils/type.ts index d6e451f202..9734b96af5 100644 --- a/npm/ng-packs/packages/schematics/src/utils/type.ts +++ b/npm/ng-packs/packages/schematics/src/utils/type.ts @@ -15,13 +15,18 @@ export function createTypeSimplifier() { ); return type.split('.').pop()!; }); - return (type: string) => parseType(type).join(' | '); + + return (type: string) => { + const parsed = parseType(type); + const last = parsed.pop()!; + return parsed.reduceRight((record, tKey) => `Record<${tKey}, ${record}>`, last); + }; } export function createTypeParser(replacerFn = (t: string) => t) { const normalizeType = createTypeNormalizer(replacerFn); - return (originalType: string) => flattenUnionTypes([], originalType).map(normalizeType); + return (originalType: string) => flattenDictionaryTypes([], originalType).map(normalizeType); } export function createTypeNormalizer(replacerFn = (t: string) => t) { @@ -32,14 +37,10 @@ export function createTypeNormalizer(replacerFn = (t: string) => t) { }; } -export function flattenUnionTypes(types: string[], type: string) { +export function flattenDictionaryTypes(types: string[], type: string) { type - .replace(/^{/, '') - .replace(/}$/, '') - .replace(/{/, '(') - .replace(/}/, ')') + .replace(/[}{]/g, '') .split(':') - .filter(Boolean) .forEach(t => types.push(t)); return types; From c1207c25b4044ec0f4f79bf2dc082b78bd1721ec Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 27 Aug 2020 22:21:46 +0300 Subject: [PATCH 101/474] feat: add interface for Volo.Abp.NameValue as constant --- .../packages/schematics/src/constants/volo.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/npm/ng-packs/packages/schematics/src/constants/volo.ts b/npm/ng-packs/packages/schematics/src/constants/volo.ts index 00fde72c79..a6726594ee 100644 --- a/npm/ng-packs/packages/schematics/src/constants/volo.ts +++ b/npm/ng-packs/packages/schematics/src/constants/volo.ts @@ -1 +1,22 @@ +import { Interface, Property } from '../models'; + export const VOLO_REGEX = /^Volo\.Abp\.(Application\.Dtos|ObjectExtending)/; + +export const VOLO_NAME_VALUE = new Interface({ + base: null, + identifier: 'NameValue', + ref: 'Volo.Abp.NameValue', + namespace: 'Volo.Abp', + properties: [ + new Property({ + name: 'Name', + type: 'string', + refs: ['System.String'], + }), + new Property({ + name: 'Value', + type: 'string', + refs: ['System.String'], + }), + ], +}); From 8974ed94429ee702e4d1f4ab2b02ad6692853746 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 27 Aug 2020 22:23:05 +0300 Subject: [PATCH 102/474] feat: handle unique case of Volo.Abp.NameValue --- npm/ng-packs/packages/schematics/src/utils/model.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/model.ts b/npm/ng-packs/packages/schematics/src/utils/model.ts index 22e2b55347..19435f5f76 100644 --- a/npm/ng-packs/packages/schematics/src/utils/model.ts +++ b/npm/ng-packs/packages/schematics/src/utils/model.ts @@ -1,5 +1,5 @@ import { strings } from '@angular-devkit/core'; -import { VOLO_REGEX } from '../constants'; +import { VOLO_NAME_VALUE, VOLO_REGEX } from '../constants'; import { Interface, Model, Property, Type, TypeWithEnum } from '../models'; import { parseNamespace } from './namespace'; import { relativePathToModel } from './path'; @@ -40,8 +40,11 @@ export function createImportRefsToModelReducer(params: ModelGeneratorParams) { const index = models.findIndex(m => m.namespace === _interface.namespace); if (index > -1) { if (models[index].interfaces.some(i => i.identifier === _interface.identifier)) return; + models[index].interfaces.push(_interface); } else { + if (_interface.ref === VOLO_NAME_VALUE.ref) _interface = VOLO_NAME_VALUE; + const { namespace } = _interface; models.push( @@ -59,6 +62,7 @@ export function createImportRefsToModelReducer(params: ModelGeneratorParams) { model.interfaces.forEach(_interface => { const { baseType } = types[_interface.ref]; + if (baseType && parseNamespace(solution, baseType) !== model.namespace) toBeImported.push({ type: baseType.split('<')[0], From 59934d009e024df939ec0de2fffd845d9e5040c6 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 27 Aug 2020 22:23:41 +0300 Subject: [PATCH 103/474] fix: improve namespace parsing by removing generics --- npm/ng-packs/packages/schematics/src/utils/namespace.ts | 4 ++-- npm/ng-packs/packages/schematics/src/utils/type.ts | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/namespace.ts b/npm/ng-packs/packages/schematics/src/utils/namespace.ts index 78ee91a02a..88c574db8a 100644 --- a/npm/ng-packs/packages/schematics/src/utils/namespace.ts +++ b/npm/ng-packs/packages/schematics/src/utils/namespace.ts @@ -1,7 +1,7 @@ -import { createTypeParser } from './type'; +import { createTypeParser, removeGenerics } from './type'; export function parseNamespace(solution: string, type: string) { - const parseType = createTypeParser(); + const parseType = createTypeParser(removeGenerics); let namespace = parseType(type)[0] .split('.') .slice(0, -1) diff --git a/npm/ng-packs/packages/schematics/src/utils/type.ts b/npm/ng-packs/packages/schematics/src/utils/type.ts index 9734b96af5..25751f475d 100644 --- a/npm/ng-packs/packages/schematics/src/utils/type.ts +++ b/npm/ng-packs/packages/schematics/src/utils/type.ts @@ -51,6 +51,10 @@ export function normalizeTypeAnnotations(type: string) { return type.replace(/\?/g, ''); } +export function removeGenerics(type: string) { + return type.replace(/<.+>/g, ''); +} + export function removeTypeModifiers(type: string) { return type.replace(/\[\]/g, ''); } From 7c480461e38ffe7d2aa6fb121da413057cb41a63 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 27 Aug 2020 23:32:38 +0300 Subject: [PATCH 104/474] feat: generate Volo.Abp.NameValue as generic type --- .../packages/schematics/src/constants/volo.ts | 10 +++++----- npm/ng-packs/packages/schematics/src/utils/model.ts | 11 +++-------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/constants/volo.ts b/npm/ng-packs/packages/schematics/src/constants/volo.ts index a6726594ee..12aa166d66 100644 --- a/npm/ng-packs/packages/schematics/src/constants/volo.ts +++ b/npm/ng-packs/packages/schematics/src/constants/volo.ts @@ -4,19 +4,19 @@ export const VOLO_REGEX = /^Volo\.Abp\.(Application\.Dtos|ObjectExtending)/; export const VOLO_NAME_VALUE = new Interface({ base: null, - identifier: 'NameValue', + identifier: 'NameValue', ref: 'Volo.Abp.NameValue', namespace: 'Volo.Abp', properties: [ new Property({ - name: 'Name', + name: 'name', type: 'string', refs: ['System.String'], }), new Property({ - name: 'Value', - type: 'string', - refs: ['System.String'], + name: 'value', + type: 'T', + refs: ['T'], }), ], }); diff --git a/npm/ng-packs/packages/schematics/src/utils/model.ts b/npm/ng-packs/packages/schematics/src/utils/model.ts index 19435f5f76..2ac5949050 100644 --- a/npm/ng-packs/packages/schematics/src/utils/model.ts +++ b/npm/ng-packs/packages/schematics/src/utils/model.ts @@ -40,10 +40,11 @@ export function createImportRefsToModelReducer(params: ModelGeneratorParams) { const index = models.findIndex(m => m.namespace === _interface.namespace); if (index > -1) { if (models[index].interfaces.some(i => i.identifier === _interface.identifier)) return; + if (_interface.ref.startsWith(VOLO_NAME_VALUE.ref)) return; models[index].interfaces.push(_interface); } else { - if (_interface.ref === VOLO_NAME_VALUE.ref) _interface = VOLO_NAME_VALUE; + if (_interface.ref.startsWith(VOLO_NAME_VALUE.ref)) _interface = VOLO_NAME_VALUE; const { namespace } = _interface; @@ -135,13 +136,7 @@ export function createImportRefToInterfaceReducerCreator(params: ModelGeneratorP prop.refs.forEach(type => !types[type]?.isEnum && refs.push(type)); return refs; }, []) - .concat( - base - ? parseGenerics(typeDef.baseType!) - .toGenerics() - .join('') - : [], - ) + .concat(base ? parseGenerics(typeDef.baseType!).toGenerics() : []) .reduce(reduceRefsToInterfaces, interfaces); } } From 012137a4853bfb8f04468bcdec82ae15d0590712 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 00:47:41 +0300 Subject: [PATCH 105/474] feat: add proxy config interface to schematics --- npm/ng-packs/packages/schematics/src/models/index.ts | 1 + npm/ng-packs/packages/schematics/src/models/proxy-config.ts | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 npm/ng-packs/packages/schematics/src/models/proxy-config.ts diff --git a/npm/ng-packs/packages/schematics/src/models/index.ts b/npm/ng-packs/packages/schematics/src/models/index.ts index 900b58b4f1..36eadc54d9 100644 --- a/npm/ng-packs/packages/schematics/src/models/index.ts +++ b/npm/ng-packs/packages/schematics/src/models/index.ts @@ -3,5 +3,6 @@ export * from './import'; export * from './method'; export * from './model'; export * from './project'; +export * from './proxy-config'; export * from './service'; export * from './util'; diff --git a/npm/ng-packs/packages/schematics/src/models/proxy-config.ts b/npm/ng-packs/packages/schematics/src/models/proxy-config.ts new file mode 100644 index 0000000000..226833da12 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/models/proxy-config.ts @@ -0,0 +1,5 @@ +import { ApiDefinition } from './api-definition'; + +export interface ProxyConfig extends ApiDefinition { + generated: string[]; +} From fa59ee8602532b2cb110a33729cdcf8f54949eea Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 00:48:37 +0300 Subject: [PATCH 106/474] feat: convert api definition reader to proxy config reader --- .../packages/schematics/src/utils/source.ts | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/source.ts b/npm/ng-packs/packages/schematics/src/utils/source.ts index 8a41776955..294b84e63e 100644 --- a/npm/ng-packs/packages/schematics/src/utils/source.ts +++ b/npm/ng-packs/packages/schematics/src/utils/source.ts @@ -1,7 +1,7 @@ import { SchematicsException, Tree } from '@angular-devkit/schematics'; import got from 'got'; import { Exception } from '../enums'; -import { ApiDefinition, Project } from '../models'; +import { ApiDefinition, Project, ProxyConfig } from '../models'; import { getAssignedPropertyFromObjectliteral } from './ast'; import { interpolate } from './common'; import { readEnvironment } from './workspace'; @@ -71,23 +71,28 @@ export function getSourceUrl(tree: Tree, project: Project, moduleName: string) { return assignment.replace(/[`'"]/g, ''); } -export function createApiDefinitionReader(targetPath: string) { +export function createProxyConfigReader(targetPath: string) { return (tree: Tree) => { try { const buffer = tree.read(targetPath); - const apiDefinition: ApiDefinition = JSON.parse(buffer!.toString()); - return apiDefinition; + return JSON.parse(buffer!.toString()) as ProxyConfig; } catch (_) {} throw new SchematicsException(interpolate(Exception.NoApiDefinition, targetPath)); }; } -export function createApiDefinitionSaver(apiDefinition: ApiDefinition, targetPath: string) { +export function createProxyConfigSaver(apiDefinition: ApiDefinition, targetPath: string) { + const readPreviousConfig = createProxyConfigReader(targetPath); + return (tree: Tree) => { - tree[tree.exists(targetPath) ? 'overwrite' : 'create']( - targetPath, - JSON.stringify(apiDefinition, null, 2), - ); + if (tree.exists(targetPath)) { + const generated: string[] = []; + try { + readPreviousConfig(tree).generated.forEach(m => generated.push(m)); + } catch (_) {} + + tree.overwrite(targetPath, JSON.stringify({ generated, ...apiDefinition }, null, 2)); + } else tree.create(targetPath, JSON.stringify(apiDefinition, null, 2)); }; } From eff4ad50f5cd37ae2a451a58858a137c0048cc9f Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 00:49:22 +0300 Subject: [PATCH 107/474] feat: add constant for proxy-config.json path --- npm/ng-packs/packages/schematics/src/constants/index.ts | 1 + npm/ng-packs/packages/schematics/src/constants/proxy.ts | 1 + 2 files changed, 2 insertions(+) create mode 100644 npm/ng-packs/packages/schematics/src/constants/proxy.ts diff --git a/npm/ng-packs/packages/schematics/src/constants/index.ts b/npm/ng-packs/packages/schematics/src/constants/index.ts index 01053d9333..cd95fb5201 100644 --- a/npm/ng-packs/packages/schematics/src/constants/index.ts +++ b/npm/ng-packs/packages/schematics/src/constants/index.ts @@ -1,3 +1,4 @@ export * from './api'; +export * from './proxy'; export * from './system-types'; export * from './volo'; diff --git a/npm/ng-packs/packages/schematics/src/constants/proxy.ts b/npm/ng-packs/packages/schematics/src/constants/proxy.ts new file mode 100644 index 0000000000..a864da6f24 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/constants/proxy.ts @@ -0,0 +1 @@ +export const PROXY_CONFIG_PATH = '/proxy/proxy-config.json'; From a4d9df215c4e7728fe09dff2f3d7d011a6f05c50 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 00:50:11 +0300 Subject: [PATCH 108/474] feat: use proxy config reader and saver in commands --- .../packages/schematics/src/commands/api/index.ts | 9 +++++---- .../packages/schematics/src/commands/proxy/index.ts | 11 ++++------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/index.ts b/npm/ng-packs/packages/schematics/src/commands/api/index.ts index 24e0f816af..9554c54506 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/api/index.ts @@ -9,15 +9,16 @@ import { Tree, url, } from '@angular-devkit/schematics'; +import { PROXY_CONFIG_PATH } from '../../constants'; import { Exception } from '../../enums'; import { ServiceGeneratorParams } from '../../models'; import { applyWithOverwrite, buildDefaultPath, - createApiDefinitionReader, createControllerToServiceMapper, createImportRefsToModelReducer, createImportRefToEnumMapper, + createProxyConfigReader, EnumGeneratorParams, getEnumNamesFromImports, getRootNamespace, @@ -40,9 +41,9 @@ export default function(schema: GenerateProxySchema) { const target = await resolveProject(tree, params.target!); const solution = getRootNamespace(tree, source, moduleName); const targetPath = buildDefaultPath(target.definition); - const definitionPath = `${targetPath}/shared/api-definition.json`; - const readApiDefinition = createApiDefinitionReader(definitionPath); - const data = readApiDefinition(tree); + const definitionPath = targetPath + PROXY_CONFIG_PATH; + const readProxyConfig = createProxyConfigReader(definitionPath); + const data = readProxyConfig(tree); const types = data.types; const modules = data.modules; if (!types || !modules) throw new SchematicsException(Exception.InvalidApiDefinition); diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy/index.ts index ddbbd68caa..fc405b5a58 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy/index.ts @@ -6,11 +6,11 @@ import { SchematicContext, Tree, } from '@angular-devkit/schematics'; -import { API_DEFINITION_ENDPOINT } from '../../constants'; +import { API_DEFINITION_ENDPOINT, PROXY_CONFIG_PATH } from '../../constants'; import { ApiDefinition } from '../../models'; import { buildDefaultPath, - createApiDefinitionSaver, + createProxyConfigSaver, getApiDefinition, getSourceUrl, removeDefaultPlaceholders, @@ -30,13 +30,10 @@ export default function(schema: GenerateProxySchema) { const targetPath = buildDefaultPath(target.definition); const data: ApiDefinition = await getApiDefinition(sourceUrl + API_DEFINITION_ENDPOINT); - const saveApiDefinition = createApiDefinitionSaver( - data, - `${targetPath}/shared/api-definition.json`, - ); + const saveProxyConfig = createProxyConfigSaver(data, targetPath + PROXY_CONFIG_PATH); const createApi = schematic('api', schema); - return branchAndMerge(chain([saveApiDefinition, createApi])); + return branchAndMerge(chain([saveProxyConfig, createApi])); }, ]); } From 87e61eb268124e1aee4528186b15a571bd8d2f67 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 00:52:54 +0300 Subject: [PATCH 109/474] feat: rename shared directory as proxy in schametics --- .../enums/__namespace@dir__/__name@kebab__.ts.template | 0 .../{shared => proxy}/models/__namespace@dir__/index.ts.template | 0 .../services/__namespace@dir__/__name@kebab__.service.ts.template | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename npm/ng-packs/packages/schematics/src/commands/api/files-enum/{shared => proxy}/enums/__namespace@dir__/__name@kebab__.ts.template (100%) rename npm/ng-packs/packages/schematics/src/commands/api/files-model/{shared => proxy}/models/__namespace@dir__/index.ts.template (100%) rename npm/ng-packs/packages/schematics/src/commands/api/files-service/{shared => proxy}/services/__namespace@dir__/__name@kebab__.service.ts.template (100%) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-enum/shared/enums/__namespace@dir__/__name@kebab__.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/enums/__namespace@dir__/__name@kebab__.ts.template similarity index 100% rename from npm/ng-packs/packages/schematics/src/commands/api/files-enum/shared/enums/__namespace@dir__/__name@kebab__.ts.template rename to npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/enums/__namespace@dir__/__name@kebab__.ts.template diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-model/shared/models/__namespace@dir__/index.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/index.ts.template similarity index 100% rename from npm/ng-packs/packages/schematics/src/commands/api/files-model/shared/models/__namespace@dir__/index.ts.template rename to npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/index.ts.template diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-service/shared/services/__namespace@dir__/__name@kebab__.service.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/services/__namespace@dir__/__name@kebab__.service.ts.template similarity index 100% rename from npm/ng-packs/packages/schematics/src/commands/api/files-service/shared/services/__namespace@dir__/__name@kebab__.service.ts.template rename to npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/services/__namespace@dir__/__name@kebab__.service.ts.template From 992932a8131b5efa22fab8347d74e3001126a068 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 01:17:10 +0300 Subject: [PATCH 110/474] feat: add file write exception in schematics --- npm/ng-packs/packages/schematics/src/enums/exception.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/npm/ng-packs/packages/schematics/src/enums/exception.ts b/npm/ng-packs/packages/schematics/src/enums/exception.ts index 6c2e635edf..40ef6487f5 100644 --- a/npm/ng-packs/packages/schematics/src/enums/exception.ts +++ b/npm/ng-packs/packages/schematics/src/enums/exception.ts @@ -1,5 +1,6 @@ export const enum Exception { FileNotFound = '[File Not Found] There is no file at "{0}" path.', + FileWriteFailed = '[File Write Failed] Cannot write file at "{0}".', InvalidModule = '[Invalid Module] Backend module "{0}" does not exist in API definition.', InvalidApiDefinition = '[Invalid API Definition] The provided API definition is invalid.', InvalidWorkspace = '[Invalid Workspace] The angular.json should be a valid JSON file.', From 3a8fba25e1a9d450a33dcff210b629385448bc98 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 01:17:35 +0300 Subject: [PATCH 111/474] feat: add type alias for file write operation --- npm/ng-packs/packages/schematics/src/models/index.ts | 1 + npm/ng-packs/packages/schematics/src/models/tree.ts | 1 + 2 files changed, 2 insertions(+) create mode 100644 npm/ng-packs/packages/schematics/src/models/tree.ts diff --git a/npm/ng-packs/packages/schematics/src/models/index.ts b/npm/ng-packs/packages/schematics/src/models/index.ts index 36eadc54d9..fb5e9f5639 100644 --- a/npm/ng-packs/packages/schematics/src/models/index.ts +++ b/npm/ng-packs/packages/schematics/src/models/index.ts @@ -5,4 +5,5 @@ export * from './model'; export * from './project'; export * from './proxy-config'; export * from './service'; +export * from './tree'; export * from './util'; diff --git a/npm/ng-packs/packages/schematics/src/models/tree.ts b/npm/ng-packs/packages/schematics/src/models/tree.ts new file mode 100644 index 0000000000..3c17cfcb10 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/models/tree.ts @@ -0,0 +1 @@ +export type WriteOp = 'create' | 'overwrite'; From 8870976ead658ee45b6f25726472ceb2596bbb90 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 01:17:41 +0300 Subject: [PATCH 112/474] feat: improve proxy config write op in schematics --- .../packages/schematics/src/utils/source.ts | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/source.ts b/npm/ng-packs/packages/schematics/src/utils/source.ts index 294b84e63e..f6a9857866 100644 --- a/npm/ng-packs/packages/schematics/src/utils/source.ts +++ b/npm/ng-packs/packages/schematics/src/utils/source.ts @@ -1,7 +1,7 @@ import { SchematicsException, Tree } from '@angular-devkit/schematics'; import got from 'got'; import { Exception } from '../enums'; -import { ApiDefinition, Project, ProxyConfig } from '../models'; +import { ApiDefinition, Project, ProxyConfig, WriteOp } from '../models'; import { getAssignedPropertyFromObjectliteral } from './ast'; import { interpolate } from './common'; import { readEnvironment } from './workspace'; @@ -83,16 +83,37 @@ export function createProxyConfigReader(targetPath: string) { } export function createProxyConfigSaver(apiDefinition: ApiDefinition, targetPath: string) { + const createProxyConfigJson = createProxyConfigJsonCreator(apiDefinition); const readPreviousConfig = createProxyConfigReader(targetPath); + const writeNewConfig = createProxyConfigWriter(targetPath); return (tree: Tree) => { + const generated: string[] = []; + let op: WriteOp = 'create'; + if (tree.exists(targetPath)) { - const generated: string[] = []; + op = 'overwrite'; + try { readPreviousConfig(tree).generated.forEach(m => generated.push(m)); } catch (_) {} + } + + writeNewConfig(tree, op, createProxyConfigJson(generated)); + }; +} - tree.overwrite(targetPath, JSON.stringify({ generated, ...apiDefinition }, null, 2)); - } else tree.create(targetPath, JSON.stringify(apiDefinition, null, 2)); +export function createProxyConfigWriter(targetPath: string) { + return (tree: Tree, op: WriteOp, data: string) => { + try { + tree[op](targetPath, data); + return tree; + } catch (_) {} + + throw new SchematicsException(interpolate(Exception.FileWriteFailed, targetPath)); }; } + +function createProxyConfigJsonCreator(apiDefinition: ApiDefinition) { + return (generated: string[]) => JSON.stringify({ generated, ...apiDefinition }, null, 2); +} From fe3aa265eb2953ed181b1695d1f5289cc8be85d4 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 01:33:39 +0300 Subject: [PATCH 113/474] refactor: enable creating rule from proxy config writer --- .../packages/schematics/src/utils/source.ts | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/source.ts b/npm/ng-packs/packages/schematics/src/utils/source.ts index f6a9857866..3652836ed7 100644 --- a/npm/ng-packs/packages/schematics/src/utils/source.ts +++ b/npm/ng-packs/packages/schematics/src/utils/source.ts @@ -85,7 +85,7 @@ export function createProxyConfigReader(targetPath: string) { export function createProxyConfigSaver(apiDefinition: ApiDefinition, targetPath: string) { const createProxyConfigJson = createProxyConfigJsonCreator(apiDefinition); const readPreviousConfig = createProxyConfigReader(targetPath); - const writeNewConfig = createProxyConfigWriter(targetPath); + const createProxyConfigWriter = createProxyConfigWriterCreator(targetPath); return (tree: Tree) => { const generated: string[] = []; @@ -99,12 +99,16 @@ export function createProxyConfigSaver(apiDefinition: ApiDefinition, targetPath: } catch (_) {} } - writeNewConfig(tree, op, createProxyConfigJson(generated)); + const json = createProxyConfigJson(generated); + const writeProxyConfig = createProxyConfigWriter(op, json); + writeProxyConfig(tree); + + return tree; }; } -export function createProxyConfigWriter(targetPath: string) { - return (tree: Tree, op: WriteOp, data: string) => { +export function createProxyConfigWriterCreator(targetPath: string) { + return (op: WriteOp, data: string) => (tree: Tree) => { try { tree[op](targetPath, data); return tree; @@ -114,6 +118,10 @@ export function createProxyConfigWriter(targetPath: string) { }; } -function createProxyConfigJsonCreator(apiDefinition: ApiDefinition) { - return (generated: string[]) => JSON.stringify({ generated, ...apiDefinition }, null, 2); +export function createProxyConfigJsonCreator(apiDefinition: ApiDefinition) { + return (generated: string[]) => generateProxyConfigJson({ generated, ...apiDefinition }); +} + +export function generateProxyConfigJson(proxyConfig: ProxyConfig) { + return JSON.stringify(proxyConfig, null, 2); } From c0fd167c19b8c7aaed38cae9d44b05abff519ef6 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 01:35:16 +0300 Subject: [PATCH 114/474] feat: store generated module names in proxy config --- .../packages/schematics/src/commands/api/index.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/index.ts b/npm/ng-packs/packages/schematics/src/commands/api/index.ts index 9554c54506..178c72f376 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/api/index.ts @@ -19,7 +19,9 @@ import { createImportRefsToModelReducer, createImportRefToEnumMapper, createProxyConfigReader, + createProxyConfigWriterCreator, EnumGeneratorParams, + generateProxyConfigJson, getEnumNamesFromImports, getRootNamespace, interpolate, @@ -43,6 +45,7 @@ export default function(schema: GenerateProxySchema) { const targetPath = buildDefaultPath(target.definition); const definitionPath = targetPath + PROXY_CONFIG_PATH; const readProxyConfig = createProxyConfigReader(definitionPath); + const createProxyConfigWriter = createProxyConfigWriterCreator(definitionPath); const data = readProxyConfig(tree); const types = data.types; const modules = data.modules; @@ -81,7 +84,14 @@ export default function(schema: GenerateProxySchema) { modelImports, }); - return branchAndMerge(chain([generateServices, generateModels, generateEnums])); + if (!data.generated.includes(moduleName)) data.generated.push(moduleName); + data.generated.sort(); + const json = generateProxyConfigJson(data); + const overwriteProxyConfig = createProxyConfigWriter('overwrite', json); + + return branchAndMerge( + chain([generateServices, generateModels, generateEnums, overwriteProxyConfig]), + ); }, ]); } From bebcd1313de64923d54a74e5326a4d9f424971dc Mon Sep 17 00:00:00 2001 From: EngincanV Date: Fri, 28 Aug 2020 09:16:28 +0300 Subject: [PATCH 115/474] CmsKit: Rating missing localizations --- .../Volo/CmsKit/Localization/Resources/en.json | 6 +++++- .../Volo/CmsKit/Localization/Resources/tr.json | 6 +++++- .../Pages/CmsKit/Shared/Components/Rating/Default.cshtml | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json index 3e16a17a47..73fd2d52b6 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json @@ -13,6 +13,10 @@ "LoginToAddComment": "Login to add comment", "LoginToReply": "Login to reply", "MessageDeletionConfirmationMessage": "This comment will be deleted completely.", - "CommentAuthorizationExceptionMessage": "Those comments are not allowed for public display." + "CommentAuthorizationExceptionMessage": "Those comments are not allowed for public display.", + "Undo": "Undo", + "RatingUndoMessage": "Your rating will be undo.", + "LoginToRate": "Login to rate", + "Star": "Star" } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json index c1664f9122..777e89c979 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json @@ -13,6 +13,10 @@ "LoginToAddComment": "Yorum yapmak için giriş yap", "LoginToReply": "Cevap vermek için giriş yap", "MessageDeletionConfirmationMessage": "Bu yorum tamamen silinecektir", - "CommentAuthorizationExceptionMessage": "Bu yorumları görebilmek için yetki gerekir." + "CommentAuthorizationExceptionMessage": "Bu yorumları görebilmek için yetki gerekir.", + "Undo": "Geri al", + "RatingUndoMessage": "Oylamanız geri alınacak.", + "LoginToRate": "Oylamak için giriş yapın", + "Star": "Yıldız" } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml index f1d96fa97e..51c47f93de 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml @@ -24,7 +24,7 @@ @foreach (var rating in Model.Ratings) {
    -
    @rating.StarCount @L["Stars"]
    +
    @rating.StarCount @L["Star"]
    From 7c6b0c454849e8c3dd6a22f437be9bcf1ae69fda Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 28 Aug 2020 09:30:07 +0300 Subject: [PATCH 116/474] Update SuiteCommand.cs --- .../Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs index 25a3d8ea5c..2d58474ed5 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs @@ -37,7 +37,7 @@ namespace Volo.Abp.Cli.Commands { case "": case null: - await CheckVersion(); + await InstallSuiteIfNotInstalledAsync(); RunSuite(); break; @@ -56,7 +56,7 @@ namespace Volo.Abp.Cli.Commands } } - private async Task CheckVersion() + private async Task InstallSuiteIfNotInstalledAsync() { var currentSuiteVersionAsString = GetCurrentSuiteVersion(); @@ -239,4 +239,4 @@ namespace Volo.Abp.Cli.Commands } } } -} \ No newline at end of file +} From 333f848ddf9c6ebcadf9966c1141779c42cfd3fb Mon Sep 17 00:00:00 2001 From: Erol Arkat Date: Fri, 28 Aug 2020 09:33:54 +0300 Subject: [PATCH 117/474] version update --- common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.props b/common.props index 4855f1cd9c..f1a0cf5890 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 3.1.0 + 3.1.0-rc.3 $(NoWarn);CS1591 https://abp.io/assets/abp_nupkg.png https://abp.io/ From 2b646ff9d6694b0085c5031e74ec21bb7d6ba97f Mon Sep 17 00:00:00 2001 From: EngincanV Date: Fri, 28 Aug 2020 09:39:08 +0300 Subject: [PATCH 118/474] Update Index.cshtml --- .../cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml index ab628d4412..6fc38ba28b 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml @@ -60,5 +60,8 @@
    -@await Component.InvokeAsync(typeof(RatingViewComponent), new { entityType = "quote", entityId = "2" }) +@if (GlobalFeatureManager.Instance.IsEnabled()) +{ + @await Component.InvokeAsync(typeof(RatingViewComponent), new { entityType = "quote", entityId = "2" }) +}
    From 747701130cfb03cdffa1e72a01573b7549a1ffa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Fri, 28 Aug 2020 11:15:37 +0300 Subject: [PATCH 119/474] Update Using-DevExtreme-Components-With-The-ABP-Fremework.md --- .../Using-DevExtreme-Components-With-The-ABP-Fremework.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/Using-DevExtreme-Components-With-The-ABP-Fremework.md b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/Using-DevExtreme-Components-With-The-ABP-Fremework.md index eb93041228..93ed01d05c 100644 --- a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/Using-DevExtreme-Components-With-The-ABP-Fremework.md +++ b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/Using-DevExtreme-Components-With-The-ABP-Fremework.md @@ -1,4 +1,4 @@ -## Using DevExtreme Components With the ABP Fremework +## Using DevExtreme Components With the ABP Framework Hi, in this step by step article, I will show you how to integrate [DevExtreme](https://js.devexpress.com/) components into ABP Framework-based applications. From f7658a34f252b3c59e6ac7a30e6ee1efa3ade42b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Fri, 28 Aug 2020 11:18:03 +0300 Subject: [PATCH 120/474] rename --- ...DevExtreme-Components-With-The-ABP-Framework.md} | 0 .../both-example-result.png | Bin .../data-grid-app-contract.png | Bin .../data-grid-application.png | Bin .../data-grid-final.png | Bin .../data-grid-web.png | Bin .../devexp-result.gif | Bin .../devextreme-js.png | Bin .../gulp.png | Bin .../initial-project.png | Bin .../tree-list-app-contract.png | Bin .../tree-list-application.png | Bin .../tree-list-final.png | Bin .../tree-list-web.png | Bin .../wwwroot-lib.png | Bin 15 files changed, 0 insertions(+), 0 deletions(-) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/Using-DevExtreme-Components-With-The-ABP-Fremework.md => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/Using-DevExtreme-Components-With-The-ABP-Framework.md} (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/both-example-result.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/data-grid-app-contract.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/data-grid-application.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/data-grid-final.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/data-grid-web.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/devexp-result.gif (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/devextreme-js.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/gulp.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/initial-project.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/tree-list-app-contract.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/tree-list-application.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/tree-list-final.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/tree-list-web.png (100%) rename docs/en/Community-Articles/{2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework => 2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework}/wwwroot-lib.png (100%) diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/Using-DevExtreme-Components-With-The-ABP-Fremework.md b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/Using-DevExtreme-Components-With-The-ABP-Framework.md similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/Using-DevExtreme-Components-With-The-ABP-Fremework.md rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/Using-DevExtreme-Components-With-The-ABP-Framework.md diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/both-example-result.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/both-example-result.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/both-example-result.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/both-example-result.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-app-contract.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/data-grid-app-contract.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-app-contract.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/data-grid-app-contract.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-application.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/data-grid-application.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-application.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/data-grid-application.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-final.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/data-grid-final.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-final.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/data-grid-final.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-web.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/data-grid-web.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/data-grid-web.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/data-grid-web.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/devexp-result.gif b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/devexp-result.gif similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/devexp-result.gif rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/devexp-result.gif diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/devextreme-js.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/devextreme-js.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/devextreme-js.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/devextreme-js.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/gulp.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/gulp.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/gulp.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/gulp.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/initial-project.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/initial-project.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/initial-project.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/initial-project.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-app-contract.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/tree-list-app-contract.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-app-contract.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/tree-list-app-contract.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-application.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/tree-list-application.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-application.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/tree-list-application.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-final.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/tree-list-final.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-final.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/tree-list-final.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-web.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/tree-list-web.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/tree-list-web.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/tree-list-web.png diff --git a/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/wwwroot-lib.png b/docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/wwwroot-lib.png similarity index 100% rename from docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Fremework/wwwroot-lib.png rename to docs/en/Community-Articles/2020-08-18-Using-DevExtreme-Components-With-The-ABP-Framework/wwwroot-lib.png From 617795ca0ea58337419b0ca1f014fd339577876b Mon Sep 17 00:00:00 2001 From: EngincanV Date: Fri, 28 Aug 2020 11:26:11 +0300 Subject: [PATCH 121/474] Update en.json --- .../Community/Localization/Resources/en.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json index 651af64675..639e4c7676 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json @@ -81,6 +81,8 @@ "Biography": "Biography", "HasNoPublishedArticlesYet": "has no published articles yet", "Author": "Author", - "MyAccount": "My account" + "MyAccount": "My account", + "LatestGithubAnnouncements": "Latest Github Announcements", + "SeeAllAnnouncements": "See All Announcements" } } From baf4c0392d68c8601e279a97f2edb0147085909f Mon Sep 17 00:00:00 2001 From: erolarkat Date: Fri, 28 Aug 2020 11:58:45 +0300 Subject: [PATCH 122/474] npm packages 3.1.0-rc.3 --- .../package.json | 2 +- .../yarn.lock | 222 ++++++------ .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../app/Volo.BloggingTestApp/package.json | 4 +- .../app/Volo.BloggingTestApp/yarn.lock | 330 +++++++++--------- .../Volo.ClientSimulation.Demo/package.json | 2 +- .../demo/Volo.ClientSimulation.Demo/yarn.lock | 236 ++++++------- modules/cms-kit/angular/package.json | 10 +- .../angular/projects/cms-kit/package.json | 4 +- .../Volo.CmsKit.IdentityServer/package.json | 2 +- .../host/Volo.CmsKit.IdentityServer/yarn.lock | 236 ++++++------- .../host/Volo.CmsKit.Web.Host/package.json | 2 +- .../host/Volo.CmsKit.Web.Host/yarn.lock | 236 ++++++------- .../host/Volo.CmsKit.Web.Unified/package.json | 2 +- .../host/Volo.CmsKit.Web.Unified/yarn.lock | 236 ++++++------- modules/docs/app/VoloDocs.Web/package.json | 4 +- modules/docs/app/VoloDocs.Web/yarn.lock | 296 ++++++++-------- npm/lerna.json | 2 +- npm/ng-packs/lerna.version.json | 2 +- npm/ng-packs/package.json | 20 +- npm/ng-packs/packages/account/package.json | 4 +- npm/ng-packs/packages/components/package.json | 4 +- npm/ng-packs/packages/core/package.json | 4 +- .../packages/feature-management/package.json | 4 +- npm/ng-packs/packages/identity/package.json | 6 +- .../permission-management/package.json | 4 +- npm/ng-packs/packages/schematics/package.json | 2 +- .../packages/setting-management/package.json | 4 +- .../packages/tenant-management/package.json | 6 +- .../packages/theme-basic/package.json | 4 +- .../packages/theme-shared/package.json | 4 +- npm/ng-packs/yarn.lock | 163 ++++----- npm/packs/anchor-js/package.json | 4 +- .../package.json | 4 +- .../package.json | 30 +- npm/packs/aspnetcore.mvc.ui/package.json | 2 +- npm/packs/blogging/package.json | 10 +- npm/packs/bootstrap-datepicker/package.json | 2 +- npm/packs/bootstrap/package.json | 4 +- npm/packs/chart.js/package.json | 2 +- npm/packs/clipboard/package.json | 4 +- npm/packs/codemirror/package.json | 4 +- npm/packs/core/package.json | 4 +- npm/packs/datatables.net-bs4/package.json | 4 +- npm/packs/datatables.net/package.json | 4 +- npm/packs/docs/package.json | 12 +- npm/packs/flag-icon-css/package.json | 2 +- npm/packs/font-awesome/package.json | 4 +- npm/packs/highlight.js/package.json | 4 +- npm/packs/jquery-form/package.json | 4 +- .../package.json | 4 +- npm/packs/jquery-validation/package.json | 4 +- npm/packs/jquery/package.json | 4 +- npm/packs/jstree/package.json | 4 +- npm/packs/lodash/package.json | 4 +- npm/packs/luxon/package.json | 2 +- .../package.json | 4 +- npm/packs/markdown-it/package.json | 4 +- npm/packs/owl.carousel/package.json | 4 +- npm/packs/popper.js/package.json | 4 +- npm/packs/prismjs/package.json | 6 +- npm/packs/select2/package.json | 4 +- npm/packs/signalr/package.json | 4 +- npm/packs/sweetalert/package.json | 4 +- npm/packs/timeago/package.json | 4 +- npm/packs/toastr/package.json | 4 +- npm/packs/tui-editor/package.json | 10 +- npm/packs/uppy/package.json | 4 +- npm/packs/utils/package.json | 2 +- npm/packs/virtual-file-explorer/package.json | 6 +- templates/app/angular/package.json | 12 +- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../MyCompanyName.MyProjectName.Web/yarn.lock | 236 ++++++------- templates/module/angular/package.json | 12 +- .../projects/my-project-name/package.json | 4 +- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- 88 files changed, 2074 insertions(+), 2105 deletions(-) diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index 60d92094ba..00021c8fb2 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^3.1.0-rc.2", + "@abp/aspnetcore.mvc.ui.theme.shared": "^3.1.0-rc.3", "highlight.js": "^9.13.1" }, "devDependencies": {} diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock index fe5adc6229..664291812e 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock @@ -2,30 +2,30 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.shared@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.shared@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -34,144 +34,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index 66d620dc75..b2bc192cea 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" }, "devDependencies": {} } \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index f1b72d84a6..0c2e9764b1 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index 3329e0c9b4..f608db303b 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2", - "@abp/blogging": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3", + "@abp/blogging": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index 259516d463..c69f117723 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,213 +41,213 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/blogging@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.1.0-rc.2.tgz#89f056ce6218cbeffeefbc96138d98596db6dd91" - integrity sha512-SrAsp6S/1FM9IRnpsOKLSxT/Cx0mENS7LmLYm/rMc8YwYTUZDg9s9DJhs6WqFgghadByvul6bgJ8NDLrktKJcA== +"@abp/blogging@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.1.0-rc.3.tgz#5c21c1dc57d832de35e89621fd81653599e676ad" + integrity sha512-8iAe29fzdCH4YAp3+8JSMrT0E0/OfUSQ9sIxGXrlV4GyEX2iGZrszRyKsKA+bgQmBOQdnT36RrmSOl0K/A+Mxw== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - "@abp/owl.carousel" "~3.1.0-rc.2" - "@abp/prismjs" "~3.1.0-rc.2" - "@abp/tui-editor" "~3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + "@abp/owl.carousel" "~3.1.0-rc.3" + "@abp/prismjs" "~3.1.0-rc.3" + "@abp/tui-editor" "~3.1.0-rc.3" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/clipboard@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.2.tgz#73a8dbc1f98cfb64d374b463dcd16b186bb694bb" - integrity sha512-Q1Z9pcs3gpptjE8Cjm/38bPKwKncjoVYSO0TknyEZLM3QG+PtZwa9UCkaK+Truz/U3QoZqbPuNbPKr5cz7o+lw== +"@abp/clipboard@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.3.tgz#40f0a95298cf9d7097d8e7f96e42c181e5a9907b" + integrity sha512-efCjrAHN3d7zmq4eVzlT4H/s6K11I9K7hv4fIJP6fbZKDoXi5hzTv2+dt9JRDWAra+s87PdBJq7AEWNs6ONiGg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" clipboard "^2.0.6" -"@abp/codemirror@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.1.0-rc.2.tgz#020d6207094293109a0752b046064c2592056c27" - integrity sha512-TmbfAP+CpzbWly03iibi7x9dW655Zxcu50tifAyi3LSTwrQIbhB6jo1aksdA2X97qTSLBhvOt3avcqj91sKRhQ== +"@abp/codemirror@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.1.0-rc.3.tgz#db68462bc6618734daa30f928feb65e0cca8cf53" + integrity sha512-TJz21MreoVePouWjnQKQ6gD9cXWQkS7xTl4V93i69C6m9f/ozoaoJvm3Va3GGGZMKf6u2B8G+XX7d6QGz406hg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" codemirror "^5.54.0" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/highlight.js@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.1.0-rc.2.tgz#4c796617471ec571dd6be2fc5327ae02e720ea1f" - integrity sha512-EUBRx7kDRmWEZx4bx1tHRjs0goMV1TzvuBQj7Wrq41CUqhpz2cBk9ZUI5AFGQJTSf0tz1SFqZhr4xDMpo8szTw== +"@abp/highlight.js@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.1.0-rc.3.tgz#d1e92b44ebd6cc6fc49a18cf350bf24b12be2792" + integrity sha512-rb9/ryoEK2krMh3DLYQcqTyvSaI7BYlOd6+awDYl5iWXu8TK+M1NP9zSM8ZoYr0kkLoD1dGHsF4ondCfCYjxPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/markdown-it@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.1.0-rc.2.tgz#cd9e84d4188c1adaad4f37ce5f9a1fa028fb5405" - integrity sha512-CufWWxhceJqzKxnTbFXMB+SVi2Ikp2CH8tQ5wvrsDwqJV6ViOCyhBLMIwcV1/oAY9lHzCI+abPiEUZdN7AzhYQ== +"@abp/markdown-it@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.1.0-rc.3.tgz#74a1e2c20654988159f332a01790a74d7ffb6b92" + integrity sha512-6k5e+WRfE4I0vp4KmV44FLQXvT8u+UUtdzPJOotWERWePuCVLJqM0u0hht0s5uEoTOhfCONIYwqQoGjzfP/8lg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" markdown-it "^11.0.0" -"@abp/owl.carousel@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.1.0-rc.2.tgz#c17e34dd4a38aef12f59ad0ef9ad20715880aa98" - integrity sha512-065bHPn7XJHs2ABKdUx3hunnRmKuedjyZZuIMZNvavH4hJyiV3MI0F6RjWLohgMFIvmp0iM259bQwoCkvGFrBA== +"@abp/owl.carousel@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.1.0-rc.3.tgz#c419eccaeb18150dab5b7fdd2da102a26a6d6013" + integrity sha512-lLJuhCJ5/879juIHqLPrNos+zOyBb7cuvpzAF+IE+6/Jb9yP5Xn9O8004F2ELXRag0bHZVzCgCbtPmDDF+LkNQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" owl.carousel "^2.3.4" -"@abp/prismjs@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.2.tgz#767d58c07e94c6e5056fd187d4e398efa108f67e" - integrity sha512-HCX/nw6noslnlw7xh94IaybI7xNYrjVOIld1C+J7p9AHizLhxh4kRbwVTpLhFzUWsSrTe8+VssgryimLQvTmjg== +"@abp/prismjs@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.3.tgz#d13885bf613871f6cd003f58ae01ee4587ad15ad" + integrity sha512-gaKxJ3d78oR1wGZhnPzM5EJIAsibh3VT9MFithFt/YAQdrMMOqS1fEdGsm1zO/A7Veyho9Ba/144RmPkFXH5gQ== dependencies: - "@abp/clipboard" "~3.1.0-rc.2" - "@abp/core" "~3.1.0-rc.2" + "@abp/clipboard" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.3" prismjs "^1.20.0" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/tui-editor@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.1.0-rc.2.tgz#48a1f78b4aca6a82daeb243b2d192c1dbe01710f" - integrity sha512-w9mNBY4c1DXAsIwLpLLKXHoIZMMaQhY2xONhD771v503ZGyNKHU+0donbyowLUzznf3PX7LcVVx/vpYxCnWybw== +"@abp/tui-editor@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.1.0-rc.3.tgz#31c66f06b938ec416276907e539f51da389be01c" + integrity sha512-V3drpSK2l+WwfHWnK+9BFB33Ww+ruo6GFuOhyzDXjmXhOOMeiM2c/r205v+Bm/uEB0GaCW1m/r3yfogFfMipIw== dependencies: - "@abp/codemirror" "~3.1.0-rc.2" - "@abp/highlight.js" "~3.1.0-rc.2" - "@abp/jquery" "~3.1.0-rc.2" - "@abp/markdown-it" "~3.1.0-rc.2" + "@abp/codemirror" "~3.1.0-rc.3" + "@abp/highlight.js" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.3" + "@abp/markdown-it" "~3.1.0-rc.3" tui-editor "^1.4.10" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index 1c05d0716c..ba93a68173 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index 8d9afafbf8..c2b1f9abfe 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index ecc40c2236..85a81a84fe 100644 --- a/modules/cms-kit/angular/package.json +++ b/modules/cms-kit/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.1.0-rc.2", - "@abp/ng.identity": "~3.1.0-rc.2", - "@abp/ng.setting-management": "~3.1.0-rc.2", - "@abp/ng.tenant-management": "~3.1.0-rc.2", - "@abp/ng.theme.basic": "~3.1.0-rc.2", + "@abp/ng.account": "~3.1.0-rc.3", + "@abp/ng.identity": "~3.1.0-rc.3", + "@abp/ng.setting-management": "~3.1.0-rc.3", + "@abp/ng.tenant-management": "~3.1.0-rc.3", + "@abp/ng.theme.basic": "~3.1.0-rc.3", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index 0f6c8018c3..ea7a45336c 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=3.1.0-rc.2", - "@abp/ng.theme.shared": ">=3.1.0-rc.2" + "@abp/ng.core": ">=3.1.0-rc.3", + "@abp/ng.theme.shared": ">=3.1.0-rc.3" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index 2aff27f377..726d61c566 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index c836cc49cb..46ec79f40e 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json index 7103162cc8..f53cfbaa36 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index be0f989fd7..56e0030b46 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index 7103162cc8..f53cfbaa36 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index f1a5b49588..27339975b7 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index 0db7e0be4e..b3e3660c63 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2", - "@abp/docs": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3", + "@abp/docs": "^3.1.0-rc.3" } } diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index 22df5982ca..66321e210a 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,45 +2,45 @@ # yarn lockfile v1 -"@abp/anchor-js@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.1.0-rc.2.tgz#3f445de4884bbe4a7be2bada7db56a376e9fba5e" - integrity sha512-qBFBy8tcinL7YWFy7iPprXTaFowgc7cvyO8mEKG2HG6/LdObm6KBASgAXGLRv2Jhxbdfyrisbcr+TdM8gzrWog== +"@abp/anchor-js@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.1.0-rc.3.tgz#839562d155fe9d026328da64a14e354c00090856" + integrity sha512-5NhcK1wZQlfE9gJ679DD3KsnYOigCHCqSGdwOQZn7gzGWNKnhCnzsnjAyh32lL9tNHTHMKkydVr6kJ5LU6Yr1Q== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" anchor-js "^4.2.2" -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -49,180 +49,180 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/clipboard@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.2.tgz#73a8dbc1f98cfb64d374b463dcd16b186bb694bb" - integrity sha512-Q1Z9pcs3gpptjE8Cjm/38bPKwKncjoVYSO0TknyEZLM3QG+PtZwa9UCkaK+Truz/U3QoZqbPuNbPKr5cz7o+lw== +"@abp/clipboard@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.3.tgz#40f0a95298cf9d7097d8e7f96e42c181e5a9907b" + integrity sha512-efCjrAHN3d7zmq4eVzlT4H/s6K11I9K7hv4fIJP6fbZKDoXi5hzTv2+dt9JRDWAra+s87PdBJq7AEWNs6ONiGg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" clipboard "^2.0.6" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/docs@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.1.0-rc.2.tgz#d46ec3c7b71fb7ad35e076ea6fd0b0bb9e09d27f" - integrity sha512-jGqxJTOQQb+xxNhasvy4S5qHGOesZwL4BruVdUXVbhUqc1M2lof6iJF4GxYaTndPigg4rOUpc+4WcSD8LUqWQw== +"@abp/docs@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.1.0-rc.3.tgz#b5bab272c4094de8f38c04015cf7219f0931c8c5" + integrity sha512-o1R9Kvw2VKqyjHYmNXYGUhiJue1FaqgRIJmmR6z0ncND7swsz4Qb/2gQvws4bHo/dIl28yrzJeKNzXbE74hHgQ== dependencies: - "@abp/anchor-js" "~3.1.0-rc.2" - "@abp/clipboard" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/popper.js" "~3.1.0-rc.2" - "@abp/prismjs" "~3.1.0-rc.2" + "@abp/anchor-js" "~3.1.0-rc.3" + "@abp/clipboard" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/popper.js" "~3.1.0-rc.3" + "@abp/prismjs" "~3.1.0-rc.3" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/popper.js@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.1.0-rc.2.tgz#26bd792c33b9a8cf347d14be4e08a4d42eb189c8" - integrity sha512-xWsOIzndRkvwdD5LOan8zf4vtceW0RIjCWSWdRtso4+V/fTLzWw9ofG3utvMaeJvu1Rfdr2mb2tLzYDNezNDAg== +"@abp/popper.js@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.1.0-rc.3.tgz#7b12694e65866edeaa8e8543a23ef238682f34cb" + integrity sha512-QyoRm8y4bjemPGwqTHHO30H5/g+uJ4vsX6eB+lxiqPYBW/2OCTccjWkRwPl1YXKdMMyS2IMARDtYDtrNoQ8Z5g== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" popper.js "^1.16.0" -"@abp/prismjs@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.2.tgz#767d58c07e94c6e5056fd187d4e398efa108f67e" - integrity sha512-HCX/nw6noslnlw7xh94IaybI7xNYrjVOIld1C+J7p9AHizLhxh4kRbwVTpLhFzUWsSrTe8+VssgryimLQvTmjg== +"@abp/prismjs@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.3.tgz#d13885bf613871f6cd003f58ae01ee4587ad15ad" + integrity sha512-gaKxJ3d78oR1wGZhnPzM5EJIAsibh3VT9MFithFt/YAQdrMMOqS1fEdGsm1zO/A7Veyho9Ba/144RmPkFXH5gQ== dependencies: - "@abp/clipboard" "~3.1.0-rc.2" - "@abp/core" "~3.1.0-rc.2" + "@abp/clipboard" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.3" prismjs "^1.20.0" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/npm/lerna.json b/npm/lerna.json index fd6fc21eb1..c7e316ca8b 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "packages": [ "packs/*" ], diff --git a/npm/ng-packs/lerna.version.json b/npm/ng-packs/lerna.version.json index 83d38bb0df..c872eedc50 100644 --- a/npm/ng-packs/lerna.version.json +++ b/npm/ng-packs/lerna.version.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "packages": [ "packages/*" ], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 843beb71bb..afee0f022a 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -25,16 +25,16 @@ "postinstall": "npm run compile:ivy" }, "devDependencies": { - "@abp/ng.account": "~3.1.0-rc.2", - "@abp/ng.core": "~3.1.0-rc.2", - "@abp/ng.feature-management": "~3.1.0-rc.2", - "@abp/ng.identity": "~3.1.0-rc.2", - "@abp/ng.permission-management": "~3.1.0-rc.2", - "@abp/ng.setting-management": "~3.1.0-rc.2", - "@abp/ng.tenant-management": "~3.1.0-rc.2", - "@abp/ng.theme.basic": "~3.1.0-rc.2", - "@abp/ng.theme.shared": "~3.1.0-rc.2", - "@abp/utils": "^3.1.0-rc.2", + "@abp/ng.account": "~3.1.0-rc.3", + "@abp/ng.core": "~3.1.0-rc.3", + "@abp/ng.feature-management": "~3.1.0-rc.3", + "@abp/ng.identity": "~3.1.0-rc.3", + "@abp/ng.permission-management": "~3.1.0-rc.3", + "@abp/ng.setting-management": "~3.1.0-rc.3", + "@abp/ng.tenant-management": "~3.1.0-rc.3", + "@abp/ng.theme.basic": "~3.1.0-rc.3", + "@abp/ng.theme.shared": "~3.1.0-rc.3", + "@abp/utils": "^3.1.0-rc.3", "@angular-builders/jest": "^10.0.0", "@angular-devkit/build-angular": "~0.1000.6", "@angular-devkit/build-ng-packagr": "~0.1000.6", diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json index 1f3b34dcab..f1b35ab34c 100644 --- a/npm/ng-packs/packages/account/package.json +++ b/npm/ng-packs/packages/account/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.account", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.2", + "@abp/ng.theme.shared": "~3.1.0-rc.3", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json index f3bb738a91..f28f0bdccc 100644 --- a/npm/ng-packs/packages/components/package.json +++ b/npm/ng-packs/packages/components/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.components", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": ">=3.1.0-rc.2", + "@abp/ng.core": ">=3.1.0-rc.3", "@ng-bootstrap/ng-bootstrap": ">=6.0.0" }, "dependencies": { diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index 3f5bd24e97..13a5835319 100644 --- a/npm/ng-packs/packages/core/package.json +++ b/npm/ng-packs/packages/core/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.core", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/utils": "^3.1.0-rc.2", + "@abp/utils": "^3.1.0-rc.3", "@angular/localize": "~10.0.10", "@ngxs/router-plugin": "^3.6.2", "@ngxs/storage-plugin": "^3.6.2", diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index 8b304d13c7..1dd7f4f92a 100644 --- a/npm/ng-packs/packages/feature-management/package.json +++ b/npm/ng-packs/packages/feature-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.feature-management", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.2", + "@abp/ng.theme.shared": "~3.1.0-rc.3", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index e259cdea9f..77586f3536 100644 --- a/npm/ng-packs/packages/identity/package.json +++ b/npm/ng-packs/packages/identity/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.identity", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.permission-management": "~3.1.0-rc.2", - "@abp/ng.theme.shared": "~3.1.0-rc.2", + "@abp/ng.permission-management": "~3.1.0-rc.3", + "@abp/ng.theme.shared": "~3.1.0-rc.3", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index 5d258540ea..42d7f8ef9b 100644 --- a/npm/ng-packs/packages/permission-management/package.json +++ b/npm/ng-packs/packages/permission-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.permission-management", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.2", + "@abp/ng.theme.shared": "~3.1.0-rc.3", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index 9c7df23b83..075a987af7 100644 --- a/npm/ng-packs/packages/schematics/package.json +++ b/npm/ng-packs/packages/schematics/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.schematics", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "description": "Schematics that works with ABP Backend", "keywords": [ "schematics" diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index 97b644d782..30716290e8 100644 --- a/npm/ng-packs/packages/setting-management/package.json +++ b/npm/ng-packs/packages/setting-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.setting-management", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.2", + "@abp/ng.theme.shared": "~3.1.0-rc.3", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index 735d905a5d..5aa95e42dd 100644 --- a/npm/ng-packs/packages/tenant-management/package.json +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.tenant-management", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.feature-management": "~3.1.0-rc.2", - "@abp/ng.theme.shared": "~3.1.0-rc.2", + "@abp/ng.feature-management": "~3.1.0-rc.3", + "@abp/ng.theme.shared": "~3.1.0-rc.3", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json index 666cd7fd5c..24215426c8 100644 --- a/npm/ng-packs/packages/theme-basic/package.json +++ b/npm/ng-packs/packages/theme-basic/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.basic", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.2", + "@abp/ng.theme.shared": "~3.1.0-rc.3", "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 91a875c0dd..e50100e544 100644 --- a/npm/ng-packs/packages/theme-shared/package.json +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.shared", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~3.1.0-rc.2", + "@abp/ng.core": "~3.1.0-rc.3", "@fortawesome/fontawesome-free": "^5.14.0", "@ng-bootstrap/ng-bootstrap": "^7.0.0", "@ngx-validate/core": "^0.0.11", diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index cd90d0ffb9..eff77be002 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -2,102 +2,109 @@ # yarn lockfile v1 -"@abp/ng.account@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-3.0.5.tgz#3f359e07be021c5743f42f32abc8371f93552df1" - integrity sha512-isG8VmENHookDJoq73dJfPbAdLxmzPGAJMDvg5Yn124yfHVkZQONszLGZxDNUFWti0S07Xose5dripNzcK2Clg== +"@abp/ng.account@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-3.1.0-rc.2.tgz#bcd93452e0ccae43d8387863a3249aa32e3f5826" + integrity sha512-eMu9W4fuvFd1Vk6KY3hLQDTcAhlH6FJkVs7joO3ks4andv4S+SuqBU44R6eNyGSTrB3NphZ05kOSLwmP+oDbJw== dependencies: - "@abp/ng.theme.shared" "~3.0.5" + "@abp/ng.theme.shared" "~3.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.core@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-3.0.5.tgz#8956c4e27689e80d981bae66e173524c79ca8678" - integrity sha512-PTluEXyea1d5oPtvkNx/SbmX3kBaHtdiJyN88vJoZXbdd5/OIZeeR5cL4Q58+kYG5xf1z6xkq7wNSAzRjTG7VA== +"@abp/ng.core@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-3.1.0-rc.2.tgz#fee3bff9c2505b25d88d9daf999a9ca0ed9ce45e" + integrity sha512-uOMqMCghYspKCUmmdF89e/rcl/peREY4owH9ld0jSrsyhXpTAYpZ2U402yCGjk8jidQvDN26DEtiwNvfjOfpcA== dependencies: - "@abp/utils" "^3.0.4" - "@angular/localize" "~9.1.11" + "@abp/utils" "^3.0.5" + "@angular/localize" "~10.0.10" "@ngxs/router-plugin" "^3.6.2" "@ngxs/storage-plugin" "^3.6.2" "@ngxs/store" "^3.6.2" - angular-oauth2-oidc "^9.2.2" + angular-oauth2-oidc "^10.0.0" just-clone "^3.1.0" just-compare "^1.3.0" snq "^1.0.3" - ts-toolbelt "^6.9.9" + ts-toolbelt "6.15.4" tslib "^2.0.0" -"@abp/ng.feature-management@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-3.0.5.tgz#d947f9f05e9edd7c972c42ea903bf05d89efe8da" - integrity sha512-TUrKF5U2hjQ92/Ocig7uULNCew++dfIpCyoHdXrcWZHdhLiFcuuNLc0UElPjFe7WrIuPkka/28MEWHylKFAk4Q== +"@abp/ng.feature-management@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-3.1.0-rc.2.tgz#79967fa06370dd8893a8a75f99e72653eff61a46" + integrity sha512-vB9Kf1DziR8mfG1HTDY6C0UrK54QujLulNf0s7hV5XmAm7Vw4zyor8996LRuEmls3BcySZgGTab2pM4Z3wnI6w== dependencies: - "@abp/ng.theme.shared" "~3.0.5" + "@abp/ng.theme.shared" "~3.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.identity@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-3.0.5.tgz#474119e9d3ce2529f0b03a3241d41ed1d49faa65" - integrity sha512-v6hxUniSyIknOidXYuYFvV2edNksDIBgiB7LvqY/csmddH+fHJhct0W0bdk//83aj5N/Fy3FO5BvkeiGYSFMRg== +"@abp/ng.identity@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-3.1.0-rc.2.tgz#fcc529dcb0296cd8d65db69b678ddd443166363e" + integrity sha512-lNuCVgrtw5NRVYCN8SRNVGT05yi1BzCKF1Db2rNPDHqKneDknDuTGn3fikYSID5dHFn4Ms+L46oDEYMggMBu8A== dependencies: - "@abp/ng.permission-management" "~3.0.5" - "@abp/ng.theme.shared" "~3.0.5" + "@abp/ng.permission-management" "~3.1.0-rc.2" + "@abp/ng.theme.shared" "~3.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.permission-management@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-3.0.5.tgz#2d496872be5af52e8f50022a5c36b3db989c9bc4" - integrity sha512-ukXX/v/ECU0R4SNKNwwdLG1+bbbS8r2GabaefX8IHYxq084VWXWlM7gTgStDIsvgC3Trh8Itoi7uVJHCU6bb0Q== +"@abp/ng.permission-management@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-3.1.0-rc.2.tgz#1a6d8751bac0eb848261fb020b121a37e95a76bd" + integrity sha512-vP62H3vWtIDWmgvn9ATwSz6hxsMc8qT8Qb37XlXC47ZXySxhaQ05EQWWreSiEvzMwNl4fVZ1n+BkMfsFJji8kA== dependencies: - "@abp/ng.theme.shared" "~3.0.5" + "@abp/ng.theme.shared" "~3.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.setting-management@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-3.0.5.tgz#57cc71d3357b73fe4f8890c077916c616301ee97" - integrity sha512-Cd6hTXS9XfIVmzwStICijEzaELDn4++xVUmVncWLJn9dWW5T9Mau+kkn7SeElzmv6U/iSEZH8/UHshktCvJ3Tg== +"@abp/ng.setting-management@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-3.1.0-rc.2.tgz#720cdca35d33115148ef845c441f386d4e45db3c" + integrity sha512-atQFPlYiTja2edf3pzIlzg2Z08TKoOOmCJ3XmYcO0hoofySoJE2j5YvxaKyRnLFRKPvSj2aTquAbkK8jvOQOMg== dependencies: - "@abp/ng.theme.shared" "~3.0.5" + "@abp/ng.theme.shared" "~3.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.tenant-management@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-3.0.5.tgz#ade0e26b26dcea5445842a21f5a1f675705dfa50" - integrity sha512-2etqlpCB2iXCXSTX1D/YSl5WIXgTvPMFUaOQ8r1CFVxdOhsmWgS/8JZEEZMO5oJDKMyw/jibqtY9WeqgdsnJQg== +"@abp/ng.tenant-management@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-3.1.0-rc.2.tgz#cf4519091ab58b5db188ae64440713ea8149759f" + integrity sha512-TktojUpQXIDwBthngjySRNQkmS8v3ZbFT/7TJHKc9W1AAnySHGpPm8qOACtNsYZ2fPMlLVVahBjjQdYOQEgwCg== dependencies: - "@abp/ng.feature-management" "~3.0.5" - "@abp/ng.theme.shared" "~3.0.5" + "@abp/ng.feature-management" "~3.1.0-rc.2" + "@abp/ng.theme.shared" "~3.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.theme.basic@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-3.0.5.tgz#13d3da2547fde92a66eb5fc9f9798892226e63b2" - integrity sha512-COeCirRKpLcY2OE4cs9CrKObA1XRRaHXbRcKnMovPUcxC4xb47tQ5snZ4n4C9VYkRnlpSh8p2w51a8SQuxQjMg== +"@abp/ng.theme.basic@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-3.1.0-rc.2.tgz#d6ebdabfe7617f85bffecdb0a08b62a9ade8be91" + integrity sha512-/Y2eBc9HyYiTTsbfDk8ZnB+F32IfuvtAdLohNAIhq+oCR1an9Yl48gIRfd64FNM0Ay8uhibQuLhSi0PewbWXcw== dependencies: - "@abp/ng.theme.shared" "~3.0.5" + "@abp/ng.theme.shared" "~3.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.theme.shared@~3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-3.0.5.tgz#7d0187621d5e27bcc171d21d8ab0e5f7241edef4" - integrity sha512-LAokCastVsEIMH+HfQjkkt6OotKNrIFMCMlDs7Y7i74sXGGhhe+v4hHsWlAT4yQ0EydNYr1W10XoI7B3pzH1MQ== - dependencies: - "@abp/ng.core" "~3.0.5" - "@fortawesome/fontawesome-free" "^5.13.1" - "@ng-bootstrap/ng-bootstrap" "^6.1.0" - "@ngx-validate/core" "^0.0.10" - "@swimlane/ngx-datatable" "^17.0.0" +"@abp/ng.theme.shared@~3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-3.1.0-rc.2.tgz#f970614d80fb4f96b9ca30bd6abc905d047b4d34" + integrity sha512-6oykIW27Es53Sn4cAuVWdL6g8L2buvi/nn5IoJ/XtD1pylkkD4FWKF/2VtPRHBhGH+5T81bwQM0KWTOfv49cIg== + dependencies: + "@abp/ng.core" "~3.1.0-rc.2" + "@fortawesome/fontawesome-free" "^5.14.0" + "@ng-bootstrap/ng-bootstrap" "^7.0.0" + "@ngx-validate/core" "^0.0.11" + "@swimlane/ngx-datatable" "^17.1.0" bootstrap "^4.5.0" chart.js "^2.9.3" tslib "^2.0.0" -"@abp/utils@^3.0.4", "@abp/utils@^3.0.5": +"@abp/utils@^3.0.5": version "3.0.5" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.5.tgz#66b3da953500e73ff1f23d1b41168cde8216ce49" integrity sha512-X9V1xLIEazItaf93nFSA4p94WT6QK3yA4eIyvU7GyyEkkOQdaakNwPbRwy930sd+I+/oXnIqM1vDsJu9QDhgvg== dependencies: just-compare "^1.3.0" +"@abp/utils@^3.1.0-rc.2": + version "3.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" + integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== + dependencies: + just-compare "^1.3.0" + "@angular-builders/jest@^10.0.0": version "10.0.0" resolved "https://registry.yarnpkg.com/@angular-builders/jest/-/jest-10.0.0.tgz#1d4f80c15544a2a13de9e335b0d2d8f076026388" @@ -354,15 +361,6 @@ glob "7.1.2" yargs "15.3.0" -"@angular/localize@~9.1.11": - version "9.1.12" - resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-9.1.12.tgz#60377a644c620be4ac408b77db9c547f44ac1514" - integrity sha512-31OalfES+dLrxN0VXCxxtT5dWoOSlQ40KYmzMS8X+mQ20gy9eFiZK4qf3DEq3JPqRltBMdEDnwR38uGIMAu2gQ== - dependencies: - "@babel/core" "7.8.3" - glob "7.1.2" - yargs "15.3.0" - "@angular/platform-browser-dynamic@~10.0.10": version "10.0.10" resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.10.tgz#0ae069a67c3fa7d593af554a333dd2b69d12903c" @@ -1373,7 +1371,7 @@ unique-filename "^1.1.1" which "^1.3.1" -"@fortawesome/fontawesome-free@^5.13.1", "@fortawesome/fontawesome-free@^5.14.0": +"@fortawesome/fontawesome-free@^5.14.0": version "5.14.0" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.14.0.tgz#a371e91029ebf265015e64f81bfbf7d228c9681f" integrity sha512-OfdMsF+ZQgdKHP9jUbmDcRrP0eX90XXrsXIdyjLbkmSBzmMXPABB8eobUJtivaupucYaByz6WNe1PI1JuYm3qA== @@ -2286,11 +2284,6 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@ng-bootstrap/ng-bootstrap@^6.1.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-6.2.0.tgz#0506d612ca6002bd8fa398d006fa2641013e11d4" - integrity sha512-wqwhnJFyEwvzWQJjXrEt+7oBTSvu2qPbdYvUFYhDVzOJLWB5M7YEhDAkMrfHQJ0pZNBMGr580FqYue+XiURY0Q== - "@ng-bootstrap/ng-bootstrap@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-7.0.0.tgz#3bfa62eb52fdb891b1ce693ea11c39127e2d1ab7" @@ -2317,13 +2310,6 @@ rxjs "6.5.5" webpack-sources "1.4.3" -"@ngx-validate/core@^0.0.10": - version "0.0.10" - resolved "https://registry.yarnpkg.com/@ngx-validate/core/-/core-0.0.10.tgz#a9ff36e5645533f5bc2d4850a980582bdfee8033" - integrity sha512-/uq22KteDF3WcJEMNaK7C9eT6Mxw8rlPqJfq2XteO2g3utzx/n/gKDdb0GzD/2eefjmO1qq98XQKgpFzQXoTag== - dependencies: - tslib "^1.9.0" - "@ngx-validate/core@^0.0.11": version "0.0.11" resolved "https://registry.yarnpkg.com/@ngx-validate/core/-/core-0.0.11.tgz#bec771546a09f2a5f44305fcdd1186851b4df152" @@ -2594,7 +2580,7 @@ dependencies: type-detect "4.0.8" -"@swimlane/ngx-datatable@^17.0.0", "@swimlane/ngx-datatable@^17.1.0": +"@swimlane/ngx-datatable@^17.1.0": version "17.1.0" resolved "https://registry.yarnpkg.com/@swimlane/ngx-datatable/-/ngx-datatable-17.1.0.tgz#ef2f91c3783526e7e89ac7a62a53e7bc9e1c90d5" integrity sha512-zYUS7uNO9OJ5UQZFuuTRjlPu6vdKA+FHYLfeEs7PgSuUiDCcbl2SWoUdS/3zIoWn/qQyws767ueWiAvvWUbpEw== @@ -3180,20 +3166,13 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= -angular-oauth2-oidc@^10.0.3: +angular-oauth2-oidc@^10.0.0, angular-oauth2-oidc@^10.0.3: version "10.0.3" resolved "https://registry.yarnpkg.com/angular-oauth2-oidc/-/angular-oauth2-oidc-10.0.3.tgz#612ef75c2e07b56592d2506f9618ee6a61857ad9" integrity sha512-9wC8I3e3cN6rMBOlo5JB2y3Fd2erp8pJ67t4vEVzyPbnRG6BJ4rreSOznSL9zw/2SjhC9kRV2OfFie29CUCzEg== dependencies: tslib "^2.0.0" -angular-oauth2-oidc@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/angular-oauth2-oidc/-/angular-oauth2-oidc-9.2.2.tgz#2b888337953a8773e0269b5ef1709f30316448f1" - integrity sha512-aMQXeujzhubvxGw3ujw9FGwTC+L8m7CXnzVntpNJRkJsgMiuZFrXzgeiG87tvAE61J+PlOVIb/UkJjYDgDVU6Q== - dependencies: - js-sha256 "^0.9.0" - ansi-align@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" @@ -8415,11 +8394,6 @@ jquery@3.5.0: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.0.tgz#9980b97d9e4194611c36530e7dc46a58d7340fc9" integrity sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ== -js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -13246,11 +13220,6 @@ ts-toolbelt@6.15.4: resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-6.15.4.tgz#f7fad584e197d0f495f77b5e3ee75a8f4c4dd3da" integrity sha512-Ifp2yNo4I8q5UwNARUBMnBiFpv5DEtTbCtS8RCjjLOz+PNcThbjUsPJCK3hRnz0dTygM1Fi3Mgvnt/DoKUTU2g== -ts-toolbelt@^6.9.9: - version "6.15.5" - resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz#cb3b43ed725cb63644782c64fbcad7d8f28c0a83" - integrity sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A== - tsickle@^0.38.1: version "0.38.1" resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.38.1.tgz#30762db759d40c435943093b6972c7f2efb384ef" diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index 0d38ce5e2d..726da38362 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "anchor-js": "^4.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index 06274bbeed..78755293bb 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index bb1a173dcc..5d47164fc1 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json @@ -1,24 +1,24 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "~3.1.0-rc.2", - "@abp/bootstrap": "~3.1.0-rc.2", - "@abp/bootstrap-datepicker": "~3.1.0-rc.2", - "@abp/datatables.net-bs4": "~3.1.0-rc.2", - "@abp/font-awesome": "~3.1.0-rc.2", - "@abp/jquery-form": "~3.1.0-rc.2", - "@abp/jquery-validation-unobtrusive": "~3.1.0-rc.2", - "@abp/lodash": "~3.1.0-rc.2", - "@abp/luxon": "~3.1.0-rc.2", - "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.2", - "@abp/select2": "~3.1.0-rc.2", - "@abp/sweetalert": "~3.1.0-rc.2", - "@abp/timeago": "~3.1.0-rc.2", - "@abp/toastr": "~3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui": "~3.1.0-rc.3", + "@abp/bootstrap": "~3.1.0-rc.3", + "@abp/bootstrap-datepicker": "~3.1.0-rc.3", + "@abp/datatables.net-bs4": "~3.1.0-rc.3", + "@abp/font-awesome": "~3.1.0-rc.3", + "@abp/jquery-form": "~3.1.0-rc.3", + "@abp/jquery-validation-unobtrusive": "~3.1.0-rc.3", + "@abp/lodash": "~3.1.0-rc.3", + "@abp/luxon": "~3.1.0-rc.3", + "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.3", + "@abp/select2": "~3.1.0-rc.3", + "@abp/sweetalert": "~3.1.0-rc.3", + "@abp/timeago": "~3.1.0-rc.3", + "@abp/toastr": "~3.1.0-rc.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index ba1ea2b672..7aacb6b184 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/aspnetcore.mvc.ui", "publishConfig": { "access": "public" diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index 03f11931ee..6054e72f85 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,14 +1,14 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.2", - "@abp/owl.carousel": "~3.1.0-rc.2", - "@abp/prismjs": "~3.1.0-rc.2", - "@abp/tui-editor": "~3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.3", + "@abp/owl.carousel": "~3.1.0-rc.3", + "@abp/prismjs": "~3.1.0-rc.3", + "@abp/tui-editor": "~3.1.0-rc.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index 8e8fe67d5a..1b72d96b5d 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/bootstrap-datepicker", "publishConfig": { "access": "public" diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index ce970434c3..d4d3415e70 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/bootstrap", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "bootstrap": "^4.5.0", "bootstrap-v4-rtl": "4.4.1-2" }, diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index b483d36ac9..7529deb7f4 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/chart.js", "publishConfig": { "access": "public" diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index 62df2bf8db..8a8dd891c0 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "clipboard": "^2.0.6" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index 03afdc0370..83cee9677a 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "codemirror": "^5.54.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index de6ed27ccd..682bbb8592 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/core", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/utils": "^3.1.0-rc.2" + "@abp/utils": "^3.1.0-rc.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index ff1d91a8ef..ede20a11bb 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/datatables.net-bs4", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "~3.1.0-rc.2", + "@abp/datatables.net": "~3.1.0-rc.3", "datatables.net-bs4": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index 836ed61126..d0f8693c31 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/datatables.net", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.2", + "@abp/jquery": "~3.1.0-rc.3", "datatables.net": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index 3be2ff3c24..6ba9c58bca 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "~3.1.0-rc.2", - "@abp/clipboard": "~3.1.0-rc.2", - "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.2", - "@abp/popper.js": "~3.1.0-rc.2", - "@abp/prismjs": "~3.1.0-rc.2" + "@abp/anchor-js": "~3.1.0-rc.3", + "@abp/clipboard": "~3.1.0-rc.3", + "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.3", + "@abp/popper.js": "~3.1.0-rc.3", + "@abp/prismjs": "~3.1.0-rc.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index bc07d361ed..a3f47c0227 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index 0635634a31..57f8de0ebf 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/font-awesome", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "@fortawesome/fontawesome-free": "^5.13.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index d07ba815a2..31448744ad 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2" + "@abp/core": "~3.1.0-rc.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index 0b285ba858..c388597cbe 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/jquery-form", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.2", + "@abp/jquery": "~3.1.0-rc.3", "jquery-form": "^4.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index 3d398b767f..388d02041c 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/jquery-validation-unobtrusive", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery-validation": "~3.1.0-rc.2", + "@abp/jquery-validation": "~3.1.0-rc.3", "jquery-validation-unobtrusive": "^3.2.11" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index 22bf237ec6..47239f0c38 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/jquery-validation", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.2", + "@abp/jquery": "~3.1.0-rc.3", "jquery-validation": "^1.19.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index 76337adfa3..a7f343f88c 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/jquery", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "jquery": "~3.5.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json index 246209ed16..00992c0a2d 100644 --- a/npm/packs/jstree/package.json +++ b/npm/packs/jstree/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/jstree", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.2", + "@abp/jquery": "~3.1.0-rc.3", "jstree": "^3.3.9" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index 18c555a3f2..8594527be2 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/lodash", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "lodash": "^4.17.15" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index 39ef414fff..26e8cc80f8 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/luxon", "publishConfig": { "access": "public" diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index 1dd9459497..9e64887184 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/malihu-custom-scrollbar-plugin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "malihu-custom-scrollbar-plugin": "^3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index 306a58f6b8..0191e7ba18 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "markdown-it": "^11.0.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index e1f3151561..02f179f6b3 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "owl.carousel": "^2.3.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index 43f07f85eb..6569164983 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "popper.js": "^1.16.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 459d0d75a5..94bb705499 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~3.1.0-rc.2", - "@abp/core": "~3.1.0-rc.2", + "@abp/clipboard": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.3", "prismjs": "^1.20.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index 85ac78874b..8c0ab85b2a 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/select2", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "select2": "^4.0.13" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json index d240950fa2..630afb38bf 100644 --- a/npm/packs/signalr/package.json +++ b/npm/packs/signalr/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/signalr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "@microsoft/signalr": "~3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/sweetalert/package.json b/npm/packs/sweetalert/package.json index e4e8f96e63..2164a04e96 100644 --- a/npm/packs/sweetalert/package.json +++ b/npm/packs/sweetalert/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/sweetalert", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "sweetalert": "^2.1.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index 20a773e5c6..b7dc927a58 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/timeago", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.2", + "@abp/jquery": "~3.1.0-rc.3", "timeago": "^1.6.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index ae79e0eaaf..a6033b7f57 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/toastr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.2", + "@abp/jquery": "~3.1.0-rc.3", "toastr": "^2.1.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index f727468814..c537e0c9b2 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,14 +1,14 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/codemirror": "~3.1.0-rc.2", - "@abp/highlight.js": "~3.1.0-rc.2", - "@abp/jquery": "~3.1.0-rc.2", - "@abp/markdown-it": "~3.1.0-rc.2", + "@abp/codemirror": "~3.1.0-rc.3", + "@abp/highlight.js": "~3.1.0-rc.3", + "@abp/jquery": "~3.1.0-rc.3", + "@abp/markdown-it": "~3.1.0-rc.3", "tui-editor": "^1.4.10" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json index cbb79c574c..9c49680aba 100644 --- a/npm/packs/uppy/package.json +++ b/npm/packs/uppy/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/uppy", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.2", + "@abp/core": "~3.1.0-rc.3", "uppy": "^1.16.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json index 981b8a1680..c22be374d7 100644 --- a/npm/packs/utils/package.json +++ b/npm/packs/utils/package.json @@ -1,6 +1,6 @@ { "name": "@abp/utils", - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "scripts": { "prepublish": "yarn install --ignore-scripts && node prepublish.js", "ng": "ng", diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json index 96a3d5d12e..a565102771 100644 --- a/npm/packs/virtual-file-explorer/package.json +++ b/npm/packs/virtual-file-explorer/package.json @@ -1,12 +1,12 @@ { - "version": "3.1.0-rc.2", + "version": "3.1.0-rc.3", "name": "@abp/virtual-file-explorer", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~3.1.0-rc.2", - "@abp/prismjs": "~3.1.0-rc.2" + "@abp/clipboard": "~3.1.0-rc.3", + "@abp/prismjs": "~3.1.0-rc.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json index 960aea4afb..c6c71dc7ad 100644 --- a/templates/app/angular/package.json +++ b/templates/app/angular/package.json @@ -12,11 +12,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.1.0-rc.2", - "@abp/ng.identity": "~3.1.0-rc.2", - "@abp/ng.setting-management": "~3.1.0-rc.2", - "@abp/ng.tenant-management": "~3.1.0-rc.2", - "@abp/ng.theme.basic": "~3.1.0-rc.2", + "@abp/ng.account": "~3.1.0-rc.3", + "@abp/ng.identity": "~3.1.0-rc.3", + "@abp/ng.setting-management": "~3.1.0-rc.3", + "@abp/ng.tenant-management": "~3.1.0-rc.3", + "@abp/ng.theme.basic": "~3.1.0-rc.3", "@angular/animations": "~10.0.10", "@angular/common": "~10.0.10", "@angular/compiler": "~10.0.10", @@ -30,7 +30,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~3.1.0-rc.2", + "@abp/ng.schematics": "~3.1.0-rc.3", "@angular-devkit/build-angular": "~0.1000.6", "@angular-devkit/build-ng-packagr": "~0.1000.6", "@angular/cli": "~10.0.6", diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json index 7103162cc8..f53cfbaa36 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock index 57c957a100..98e42393f6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json index 2aff27f377..726d61c566 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index c836cc49cb..46ec79f40e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json index 7103162cc8..f53cfbaa36 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock index c836cc49cb..46ec79f40e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json index 7103162cc8..f53cfbaa36 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock index 57c957a100..98e42393f6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json index fd316e5807..b4b79f49a0 100644 --- a/templates/module/angular/package.json +++ b/templates/module/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.1.0-rc.2", - "@abp/ng.identity": "~3.1.0-rc.2", - "@abp/ng.setting-management": "~3.1.0-rc.2", - "@abp/ng.tenant-management": "~3.1.0-rc.2", - "@abp/ng.theme.basic": "~3.1.0-rc.2", + "@abp/ng.account": "~3.1.0-rc.3", + "@abp/ng.identity": "~3.1.0-rc.3", + "@abp/ng.setting-management": "~3.1.0-rc.3", + "@abp/ng.tenant-management": "~3.1.0-rc.3", + "@abp/ng.theme.basic": "~3.1.0-rc.3", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", @@ -33,7 +33,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~3.1.0-rc.2", + "@abp/ng.schematics": "~3.1.0-rc.3", "@angular-devkit/build-angular": "~0.1000.0", "@angular-devkit/build-ng-packagr": "~0.1000.0", "@angular/cli": "~10.0.0", diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json index 3de5eb4cbd..e28ea10a59 100644 --- a/templates/module/angular/projects/my-project-name/package.json +++ b/templates/module/angular/projects/my-project-name/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=3.1.0-rc.2", - "@abp/ng.theme.shared": ">=3.1.0-rc.2" + "@abp/ng.core": ">=3.1.0-rc.3", + "@abp/ng.theme.shared": ">=3.1.0-rc.3" }, "dependencies": { "tslib": "^2.0.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json index 2aff27f377..726d61c566 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index c836cc49cb..46ec79f40e 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json index 7103162cc8..f53cfbaa36 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock index c836cc49cb..46ec79f40e 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json index 7103162cc8..f53cfbaa36 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock index f1a5b49588..27339975b7 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.2.tgz#b72eee4a441619caa8222941c797c8afd3cae09b" - integrity sha512-8zczo69E6ACjFaL+3UNP7VoUXeoSVViKAyhoub0Uw6CrLUxAYxT/Yuw/apIY7AW3cVoB5ULBfjMN7xWSJML9eg== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.2.tgz#db34b0414ded4bd52420d1faa3a5fab03b68783f" - integrity sha512-tnTDCkExlUT+OyPls/VfZsBlbgu02P9zqpT58F7bDo2WtaxzrSvo6xwC+9a6+c3CpKy/xezI2S/r8H9lb2vd5w== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.2" - "@abp/bootstrap" "~3.1.0-rc.2" - "@abp/bootstrap-datepicker" "~3.1.0-rc.2" - "@abp/datatables.net-bs4" "~3.1.0-rc.2" - "@abp/font-awesome" "~3.1.0-rc.2" - "@abp/jquery-form" "~3.1.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.2" - "@abp/lodash" "~3.1.0-rc.2" - "@abp/luxon" "~3.1.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.2" - "@abp/select2" "~3.1.0-rc.2" - "@abp/sweetalert" "~3.1.0-rc.2" - "@abp/timeago" "~3.1.0-rc.2" - "@abp/toastr" "~3.1.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.2.tgz#395e101891d8fa7d1532defd125712c7846ee22a" - integrity sha512-dUvOXwUX7I08ZO5q30I9/1qv7s3c9FvKLVrjMexZL1auP83C5hnCh6EBOSWhKKe5Wfe5Rq2sxiinFi/xXibTsw== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" + integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" + integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" + "@abp/bootstrap" "~3.1.0-rc.3" + "@abp/bootstrap-datepicker" "~3.1.0-rc.3" + "@abp/datatables.net-bs4" "~3.1.0-rc.3" + "@abp/font-awesome" "~3.1.0-rc.3" + "@abp/jquery-form" "~3.1.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" + "@abp/lodash" "~3.1.0-rc.3" + "@abp/luxon" "~3.1.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" + "@abp/select2" "~3.1.0-rc.3" + "@abp/sweetalert" "~3.1.0-rc.3" + "@abp/timeago" "~3.1.0-rc.3" + "@abp/toastr" "~3.1.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" + integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.2.tgz#5ecca3e7150d4a75577d9abf0f226813fe40cff5" - integrity sha512-SebgagX0TszhsmIfQhM+A+M+cThbELSRmbDb+48DgLflVHH1bw6wCGXVMVQA65vYWkiHaALbxDgYOHLSFsWpag== +"@abp/bootstrap-datepicker@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" + integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.2.tgz#691e4f609895e8914cf6903a26ad5d51f629c596" - integrity sha512-SaT7JN5C2RqzTgA8YdoON/eaeL4gl54vp7DTGPXXVvTYS20ZSxExKgVXEuOMEJVITKu4OeXqLYZyThz888I9iQ== +"@abp/bootstrap@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" + integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.2.tgz#707cec3323020b9ee4cc7c5a7fee21b418457eff" - integrity sha512-2VSCPIWEEM4iwcgRfgFempjPV0zLaWf81cp1ZrwuilqsljUXjMQL8Pf07TEaSa8+uN3VKkCsQtyq3A+DhUlVhA== +"@abp/core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" + integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" -"@abp/datatables.net-bs4@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.2.tgz#d98f47e4e286a7299ba42da1c394594f4b4581c7" - integrity sha512-VrcgFq3qq6azpCJEpk00R4fWA6GBzoDgHJT0K9bQtg4AqG8oamJa2QWX60g2OXzWpbI74bxleBAOLXzC4OJIrw== +"@abp/datatables.net-bs4@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" + integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.2" + "@abp/datatables.net" "~3.1.0-rc.3" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.2.tgz#e73fee8f323e33094bfe49cbed520a4b9f382c18" - integrity sha512-+Bo8C7tslTasH7kMUnXQ5JESzg+ciy7jmvWPbJo32f0VFuiSPDBBr6nacBmE6IHPqG54ZAjqOkvE8eWL39dN2A== +"@abp/datatables.net@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" + integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.2.tgz#4d0ef35abe67b86a6cbb8c7008a50f26eadbaa6e" - integrity sha512-r1iLq+1avQ8lsDqNAsu0TAQn5+JlYhUnjTVpnb/xcDMtbJv+eBZpqVLTbXelHV0q2Czq/gDzloqkHFNv5Cxceg== +"@abp/font-awesome@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" + integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.2.tgz#f08ceb6be4a23d79f855d59b46c5fea5a6bf37ee" - integrity sha512-3UlUGXmvoT5xz4Hjz2gRX2rL+YbL4JprGaZvBrIbASJ6VSV3yHYbjma8YBqj2Wu2IQv6wpNhAYV+tALjPnFEgw== +"@abp/jquery-form@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" + integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.2.tgz#1802ffd0dc8aa710bfb81f6f5e6654a44227334f" - integrity sha512-2iWFp8a4Iths5dbf3v/gcTFrOXUX6CkwS5JiO3YsA0ujbZgF2HGbnPD7vzrfuRJAIKPKCIiovLDBY3yKN6boQw== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" + integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.2" + "@abp/jquery-validation" "~3.1.0-rc.3" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.2.tgz#adc314584261ef5bcdfa240c5e2df9f1bb4dcb2f" - integrity sha512-L2GoAUxMCAd8pXt54UqI2CEV4nWS0ww2dTNctEUcnJ2UZc7Ce+QFqBgvyRNmuSULMebfdtUYkodCGFdzzjRXfg== +"@abp/jquery-validation@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" + integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.2.tgz#05857739e5ec9e519194fe9b80b426be0b40addb" - integrity sha512-+qPHJpV/s9GGWwdH6gj8BdDhg4t4w8pI9hx41UlIpPdrtO4kzaPU85/f7vX0QYzOrsYYxmWXHu3H0pL8QyDwQA== +"@abp/jquery@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" + integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.2.tgz#80fc560277e903b94cf90146e05cb6e6e62b0ee3" - integrity sha512-TQ8HqvW9skMFDfJv7wNX4Ahi/HjCBfD/ZDePvfyTLwdsnNPwDg6zERwYTGk48ep/6CUsK3MMQzvShl4yaYIFYQ== +"@abp/lodash@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" + integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.2.tgz#6a7db2fd1cc1674e73df6c982657c791a94fc65b" - integrity sha512-vrtiuMnQDP0rC+yrQawqVu3F4pcZrv3wsx0ZqaIWWakQJ4X17aSTM0Xhxa95jnHh4WFFUDN00mYxkPxNr8JqvA== +"@abp/luxon@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" + integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.2.tgz#3805b260bd3442353a946de5c7508e98cc7cefdd" - integrity sha512-bp+S43ZIWQpkhx7ni2DThwDZ2A+q6ZaAUaESWz+yCHXWwYacnfHeq4p+mkS07OdVteP33NWAxJpjtDl6fPBo8A== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" + integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.2.tgz#6b16301cb7c4ad4e2b39400a5f9cf336c700a343" - integrity sha512-qbj6csa9/0+xF5fzcm1WJSzUiBvSgwiYPRpH5wyG/FZYf7YxK2dAv/Lmi5RE4eAb8Ib9ueB7nPkzJYUJhJ1wgQ== +"@abp/select2@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" + integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.2.tgz#a152eb5632cd0eee50d5fed2c156bc4b6daf6829" - integrity sha512-6pjzFwr/HKgNYcsx76GZdcm0qZ8NfcdYqFOwj91w3bGmtPZYRRJLV01k9kDIOQHYnmCReO+ThF46wZCyt/8xvg== +"@abp/sweetalert@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" + integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== dependencies: - "@abp/core" "~3.1.0-rc.2" + "@abp/core" "~3.1.0-rc.3" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.2.tgz#0c3fe13f15319c943186eff861f0e9a790b6651b" - integrity sha512-BJzvJGJk6uPkpR5MMIX7DF/WsYZbvss2B82RTcr2Dkto7VtfRUYqcpWBcUIHCJ7hLh4SMS000fC8tfRXo7e0EA== +"@abp/timeago@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" + integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.2.tgz#1b149684a4f7751df48cd9cbac5ce0ce7526042c" - integrity sha512-4U2spuDnl2F3AzGDvHyhGJtZT0Kv4LmdUYwdq/aKneHSTzJ9v5bUpjjU1Gth6fyi0iqH61DAyaoTsbgy0kFQqQ== +"@abp/toastr@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" + integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== dependencies: - "@abp/jquery" "~3.1.0-rc.2" + "@abp/jquery" "~3.1.0-rc.3" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== dependencies: just-compare "^1.3.0" From 787f20a5883cee24ae6162ec6ba80212b4af8641 Mon Sep 17 00:00:00 2001 From: erolarkat Date: Fri, 28 Aug 2020 12:01:55 +0300 Subject: [PATCH 123/474] version update --- common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.props b/common.props index f1a0cf5890..4855f1cd9c 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 3.1.0-rc.3 + 3.1.0 $(NoWarn);CS1591 https://abp.io/assets/abp_nupkg.png https://abp.io/ From 3cb1b129465754daa11cf61fa1989809271447d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 28 Aug 2020 12:22:30 +0300 Subject: [PATCH 124/474] Introduce ApplicationConfigurationCache --- .../ApplicationConfigurationCache.cs | 20 ++++++++++ ...blyCachedApplicationConfigurationClient.cs | 37 +++++++++---------- ...=> WebAssemblyCurrentPrincipalAccessor.cs} | 0 .../Client/RemoteLocalizationContributor.cs | 1 - 4 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ApplicationConfigurationCache.cs rename framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/{WebAssemblyCurrentUser.cs => WebAssemblyCurrentPrincipalAccessor.cs} (100%) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ApplicationConfigurationCache.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ApplicationConfigurationCache.cs new file mode 100644 index 0000000000..df41c996b6 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ApplicationConfigurationCache.cs @@ -0,0 +1,20 @@ +using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly +{ + public class ApplicationConfigurationCache : ISingletonDependency + { + protected ApplicationConfigurationDto Configuration { get; set; } + + public virtual ApplicationConfigurationDto Get() + { + return Configuration; + } + + internal void Set(ApplicationConfigurationDto configuration) + { + Configuration = configuration; + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs index ab9b18f812..e403a8cfe9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs @@ -1,5 +1,4 @@ using System.Threading.Tasks; -using Microsoft.Extensions.Caching.Memory; using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; using Volo.Abp.AspNetCore.Mvc.Client; using Volo.Abp.DependencyInjection; @@ -11,43 +10,41 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly { protected IHttpClientProxy Proxy { get; } - protected IMemoryCache Cache { get; } + protected ApplicationConfigurationCache Cache { get; } public WebAssemblyCachedApplicationConfigurationClient( IHttpClientProxy proxy, - IMemoryCache cache) + ApplicationConfigurationCache cache) { Proxy = proxy; Cache = cache; } - public async Task InitializeAsync() + public virtual async Task InitializeAsync() { - await GetAsync(); + Cache.Set(await Proxy.Service.GetAsync()); } - public async Task GetAsync() + public virtual Task GetAsync() { - return await Cache.GetOrCreateAsync( - CreateCacheKey(), - e => Proxy.Service.GetAsync() - ); + return Task.FromResult(GetConfigurationByChecking()); } - public ApplicationConfigurationDto Get() + public virtual ApplicationConfigurationDto Get() { - var cacheKey = CreateCacheKey(); - if(Cache.TryGetValue(cacheKey, out ApplicationConfigurationDto value)) - { - return value; - } - - throw new AbpException($"Should initialize the {nameof(ICachedApplicationConfigurationClient)} before getting the value!"); + return GetConfigurationByChecking(); } - protected virtual string CreateCacheKey() + private ApplicationConfigurationDto GetConfigurationByChecking() { - return $"ApplicationConfiguration"; + var configuration = Cache.Get(); + if (configuration == null) + { + throw new AbpException( + $"{nameof(WebAssemblyCachedApplicationConfigurationClient)} should be initialized before using it."); + } + + return configuration; } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentUser.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentPrincipalAccessor.cs similarity index 100% rename from framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentUser.cs rename to framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentPrincipalAccessor.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs index b179856842..f8502fce78 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs @@ -4,7 +4,6 @@ using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.Localization; -using Volo.Abp.Threading; namespace Volo.Abp.AspNetCore.Mvc.Client { From bb0489be9aeb8f2129d3e00214088014e853c956 Mon Sep 17 00:00:00 2001 From: berkansasmaz Date: Fri, 28 Aug 2020 13:33:18 +0300 Subject: [PATCH 125/474] New localization items have been added and some localization items have been changed. --- .../Community/Localization/Resources/en.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json index 639e4c7676..9451e616ff 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json @@ -37,7 +37,7 @@ "CreateArticleTitleInfo": "Title of the article to be shown on the article list.", "CreateArticleUrlInfo": "Original GitHub/External URL of the article.", "CreateArticleSummaryInfo": "A short summary of the article to be shown on the article list.", - "CreateArticleCoverInfo": "For creating an effective article, add a cover photo. Only 16:9 aspect ratio pictures will be accepted!", + "CreateArticleCoverInfo": "For creating an effective article, add a cover photo. Upload 16:9 aspect ratio pictures for the best view.", "ThisExtensionIsNotAllowed": "This extension is not allowed.", "TheFileIsTooLarge": "The file is too large.", "GoToTheArticle": "Go to the Article", @@ -61,14 +61,14 @@ "Oops": "Oops!", "CreateArticleSuccessMessage": "The Article has been successfully submitted. It will be published after a review from the site admin.", "ChooseCoverImage": "Choose a cover image...", - "PictureUploadedIsNotInExpectedAspectRatio": "The picture you uploaded is not in 16:9 aspect ratio!", - "HeightAndWidthMustNotExceed": "Height and Width must not exceed 1920*1080.", "CoverImage": "Cover Image", "ShareYourExperiencesWithTheABPFramework": "Share your experiences with the ABP Framework!", "Optional": "Optional", + "UpdateUserNameInfo": "Name", + "UpdateUserSurnameInfo": "Surname", "UpdateUserWebSiteInfo": "Example: https://abp.io", - "UpdateUserTwitterInfo": "Example: https://twitter.com/abpframework", - "UpdateUserGithubInfo": "Example: https://github.com/abpframework/abp", + "UpdateUserTwitterInfo": "Example: abpframework", + "UpdateUserGithubInfo": "Example: volosoft", "UpdateUserLinkedinInfo": "Example: https://www.linkedin.com/company/volosoft", "UpdateUserCompanyInfo": "Example: Volosoft Computer & Technology", "UpdateUserJobTitleInfo": "Example: Software Engineer Intern", @@ -83,6 +83,7 @@ "Author": "Author", "MyAccount": "My account", "LatestGithubAnnouncements": "Latest Github Announcements", - "SeeAllAnnouncements": "See All Announcements" + "SeeAllAnnouncements": "See All Announcements", + "LatestBlogPost": "Latest Blog Post" } } From dc7eac44f688cda98c4accc9cc7026d7b0c7371f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 28 Aug 2020 14:56:33 +0300 Subject: [PATCH 126/474] Rename GenericInterceptAsyncMethod to MakeRequestAndGetResultAsyncMethod --- .../Client/DynamicProxying/DynamicHttpProxyInterceptor.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs index af9eb59b7f..5313457ba7 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs @@ -25,7 +25,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying public class DynamicHttpProxyInterceptor : AbpInterceptor, ITransientDependency { // ReSharper disable once StaticMemberInGenericType - protected static MethodInfo GenericInterceptAsyncMethod { get; } + protected static MethodInfo MakeRequestAndGetResultAsyncMethod { get; } protected ICancellationTokenProvider CancellationTokenProvider { get; } protected ICorrelationIdProvider CorrelationIdProvider { get; } @@ -42,7 +42,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying static DynamicHttpProxyInterceptor() { - GenericInterceptAsyncMethod = typeof(DynamicHttpProxyInterceptor) + MakeRequestAndGetResultAsyncMethod = typeof(DynamicHttpProxyInterceptor) .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance) .First(m => m.Name == nameof(MakeRequestAndGetResultAsync) && m.IsGenericMethodDefinition); } @@ -81,7 +81,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying } else { - var result = (Task)GenericInterceptAsyncMethod + var result = (Task)MakeRequestAndGetResultAsyncMethod .MakeGenericMethod(invocation.Method.ReturnType.GenericTypeArguments[0]) .Invoke(this, new object[] { invocation }); @@ -90,7 +90,6 @@ namespace Volo.Abp.Http.Client.DynamicProxying invocation.Method.ReturnType.GetGenericArguments()[0] ); } - } private async Task GetResultAsync(Task task, Type resultType) From 1f40fc9de642bfa1157c1c537fbd2ef17a47a3d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 28 Aug 2020 16:26:04 +0300 Subject: [PATCH 127/474] initialize the ABP application. --- .../MyCompanyName.MyProjectName.Blazor/Program.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs index d536321f9a..f89bdd3195 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs @@ -17,14 +17,18 @@ namespace MyCompanyName.MyProjectName.Blazor builder.Services.AddSingleton(builder.Configuration); builder.Services.AddSingleton(builder); - builder.Services.AddApplication(opts => + var application = builder.Services.AddApplication(opts => { opts.UseAutofac(); }); - - builder.ConfigureContainer(builder.Services.GetSingletonInstance>()); - await builder.Build().RunAsync(); + builder.ConfigureContainer(builder.Services.GetSingletonInstance>()); + + var host = builder.Build(); + + application.Initialize(host.Services); + + await host.RunAsync(); } } } From 738909c26b784637d96c2410c8565577a065b5ed Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 17:20:41 +0300 Subject: [PATCH 128/474] feat: add a shared GenerateProxySchema model --- .../src/models/generate-proxy-schema.ts | 16 ++++++++++++++++ .../packages/schematics/src/models/index.ts | 1 + 2 files changed, 17 insertions(+) create mode 100644 npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts diff --git a/npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts b/npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts new file mode 100644 index 0000000000..59c4e6adab --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts @@ -0,0 +1,16 @@ +export interface GenerateProxySchema { + /** + * Backend module name + */ + module?: string; + + /** + * Source Angular project for API definition URL & root namespace resolution + */ + source?: string; + + /** + * Target Angular project to place the generated code + */ + target?: string; +} diff --git a/npm/ng-packs/packages/schematics/src/models/index.ts b/npm/ng-packs/packages/schematics/src/models/index.ts index fb5e9f5639..176c9c6617 100644 --- a/npm/ng-packs/packages/schematics/src/models/index.ts +++ b/npm/ng-packs/packages/schematics/src/models/index.ts @@ -1,4 +1,5 @@ export * from './api-definition'; +export * from './generate-proxy-schema'; export * from './import'; export * from './method'; export * from './model'; From 6789471bee4d0f3aee26682bedc146004a193487 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 17:21:30 +0300 Subject: [PATCH 129/474] feat: update proxy constants in schematics --- npm/ng-packs/packages/schematics/src/constants/proxy.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/schematics/src/constants/proxy.ts b/npm/ng-packs/packages/schematics/src/constants/proxy.ts index a864da6f24..ee105029c4 100644 --- a/npm/ng-packs/packages/schematics/src/constants/proxy.ts +++ b/npm/ng-packs/packages/schematics/src/constants/proxy.ts @@ -1 +1,2 @@ -export const PROXY_CONFIG_PATH = '/proxy/proxy-config.json'; +export const PROXY_PATH = '/proxy'; +export const PROXY_CONFIG_PATH = `${PROXY_PATH}/generate-proxy.json`; From 70f80895a5101e6c8b5f97610e601d3698f21bad Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 17:21:46 +0300 Subject: [PATCH 130/474] feat: update exceptions in schematics --- npm/ng-packs/packages/schematics/src/enums/exception.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/schematics/src/enums/exception.ts b/npm/ng-packs/packages/schematics/src/enums/exception.ts index 40ef6487f5..98c92493d6 100644 --- a/npm/ng-packs/packages/schematics/src/enums/exception.ts +++ b/npm/ng-packs/packages/schematics/src/enums/exception.ts @@ -1,12 +1,13 @@ export const enum Exception { + DirRemoveFailed = '[Directory Remove Failed] Cannot remove "{0}".', FileNotFound = '[File Not Found] There is no file at "{0}" path.', FileWriteFailed = '[File Write Failed] Cannot write file at "{0}".', InvalidModule = '[Invalid Module] Backend module "{0}" does not exist in API definition.', InvalidApiDefinition = '[Invalid API Definition] The provided API definition is invalid.', InvalidWorkspace = '[Invalid Workspace] The angular.json should be a valid JSON file.', NoApi = '[API Not Available] Please double-check the URL in the source project environment and make sure your application is up and running.', - NoApiDefinition = '[API Definition Not Found] There is no API definition file at "{0}".', NoProject = '[Project Not Found] Either define a default project in your workspace or specify the project name in schematics options.', + NoProxyConfig = '[Proxy Config Not Found] There is no JSON file at "{0}".', NoTypeDefinition = '[Type Definition Not Found] There is no type definition for "{0}".', NoWorkspace = '[Workspace Not Found] Make sure you are running schematics at the root directory of your workspace and it has an angular.json file.', NoEnvironment = '[Environment Not Found] An environment file cannot be located in "{0}" project.', From f0146805fc43b26e7a2ed8d6c83781ab274753a2 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 17:24:19 +0300 Subject: [PATCH 131/474] feat: add utility fn for generating multiple APIs --- npm/ng-packs/packages/schematics/src/utils/api.ts | 11 +++++++++++ npm/ng-packs/packages/schematics/src/utils/index.ts | 1 + 2 files changed, 12 insertions(+) create mode 100644 npm/ng-packs/packages/schematics/src/utils/api.ts diff --git a/npm/ng-packs/packages/schematics/src/utils/api.ts b/npm/ng-packs/packages/schematics/src/utils/api.ts new file mode 100644 index 0000000000..f772666b4b --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/utils/api.ts @@ -0,0 +1,11 @@ +import { chain, schematic } from '@angular-devkit/schematics'; +import { GenerateProxySchema } from '../models'; + +export function createApisGenerator(schema: GenerateProxySchema, generated: string[]) { + return chain( + generated.map(m => { + const apiSchema = { ...schema, source: schema.target, module: m }; + return schematic('api', apiSchema); + }), + ); +} diff --git a/npm/ng-packs/packages/schematics/src/utils/index.ts b/npm/ng-packs/packages/schematics/src/utils/index.ts index badfaa79ee..304c2294b0 100644 --- a/npm/ng-packs/packages/schematics/src/utils/index.ts +++ b/npm/ng-packs/packages/schematics/src/utils/index.ts @@ -1,4 +1,5 @@ export * from './angular'; +export * from './api'; export * from './ast'; export * from './common'; export * from './enum'; From 722145cf072eb4041711c1a0799acc186c94b8cf Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 17:25:00 +0300 Subject: [PATCH 132/474] feat: add chainAndMerge utility rule creator --- npm/ng-packs/packages/schematics/src/utils/rule.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/npm/ng-packs/packages/schematics/src/utils/rule.ts b/npm/ng-packs/packages/schematics/src/utils/rule.ts index 6748f30fab..39b14cec78 100644 --- a/npm/ng-packs/packages/schematics/src/utils/rule.ts +++ b/npm/ng-packs/packages/schematics/src/utils/rule.ts @@ -1,6 +1,8 @@ import { apply, + chain, forEach, + MergeStrategy, mergeWith, Rule, SchematicContext, @@ -16,6 +18,14 @@ export function applyWithOverwrite(source: Source, rules: Rule[]): Rule { }; } +export function chainAndMerge(rules: Rule[]) { + return (host: Tree) => async (tree: Tree, context: SchematicContext) => + host.merge( + (await (chain(rules)(tree, context) as any).toPromise()) as Tree, + MergeStrategy.AllowDeleteConflict, + ); +} + export function overwriteFileIfExists(tree: Tree): Rule { return forEach(fileEntry => { if (!tree.exists(fileEntry.path)) return fileEntry; From 7dd5aa74ef8027feb3fc122dd543be88bc0da519 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 17:25:53 +0300 Subject: [PATCH 133/474] feat: create 3 separate commands for proxy generation --- .../packages/schematics/src/collection.json | 18 +++++-- .../schematics/src/commands/api/index.ts | 9 ++-- .../schematics/src/commands/api/schema.ts | 16 ------ .../src/commands/proxy-add/index.ts | 48 +++++++++++++++++ .../commands/{proxy => proxy-add}/schema.json | 12 ++--- .../src/commands/proxy-refresh/index.ts | 37 ++++++++++++++ .../src/commands/proxy-refresh/schema.json | 39 ++++++++++++++ .../src/commands/proxy-remove/index.ts | 43 ++++++++++++++++ .../src/commands/proxy-remove/schema.json | 39 ++++++++++++++ .../schematics/src/commands/proxy/index.ts | 39 -------------- .../schematics/src/commands/proxy/schema.ts | 16 ------ .../packages/schematics/src/utils/source.ts | 51 ++++++++++++++++--- 12 files changed, 273 insertions(+), 94 deletions(-) delete mode 100644 npm/ng-packs/packages/schematics/src/commands/api/schema.ts create mode 100644 npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts rename npm/ng-packs/packages/schematics/src/commands/{proxy => proxy-add}/schema.json (50%) create mode 100644 npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts create mode 100644 npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json create mode 100644 npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts create mode 100644 npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json delete mode 100644 npm/ng-packs/packages/schematics/src/commands/proxy/index.ts delete mode 100644 npm/ng-packs/packages/schematics/src/commands/proxy/schema.ts diff --git a/npm/ng-packs/packages/schematics/src/collection.json b/npm/ng-packs/packages/schematics/src/collection.json index 9b21d174ca..5c2df8ea36 100644 --- a/npm/ng-packs/packages/schematics/src/collection.json +++ b/npm/ng-packs/packages/schematics/src/collection.json @@ -1,9 +1,19 @@ { "schematics": { - "proxy": { - "description": "ABP Proxy Generator Schematics", - "factory": "./commands/proxy", - "schema": "./commands/proxy/schema.json" + "proxy-add": { + "description": "ABP Proxy Generator Add Schematics", + "factory": "./commands/proxy-add", + "schema": "./commands/proxy-add/schema.json" + }, + "proxy-refresh": { + "description": "ABP Proxy Generator Refresh Schematics", + "factory": "./commands/proxy-refresh", + "schema": "./commands/proxy-refresh/schema.json" + }, + "proxy-remove": { + "description": "ABP Proxy Generator Remove Schematics", + "factory": "./commands/proxy-remove", + "schema": "./commands/proxy-remove/schema.json" }, "api": { "description": "ABP API Generator Schematics", diff --git a/npm/ng-packs/packages/schematics/src/commands/api/index.ts b/npm/ng-packs/packages/schematics/src/commands/api/index.ts index 178c72f376..646f2170ea 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/api/index.ts @@ -9,9 +9,8 @@ import { Tree, url, } from '@angular-devkit/schematics'; -import { PROXY_CONFIG_PATH } from '../../constants'; import { Exception } from '../../enums'; -import { ServiceGeneratorParams } from '../../models'; +import { GenerateProxySchema, ServiceGeneratorParams } from '../../models'; import { applyWithOverwrite, buildDefaultPath, @@ -31,7 +30,6 @@ import { serializeParameters, } from '../../utils'; import * as cases from '../../utils/text'; -import { Schema as GenerateProxySchema } from './schema'; export default function(schema: GenerateProxySchema) { const params = removeDefaultPlaceholders(schema); @@ -43,9 +41,8 @@ export default function(schema: GenerateProxySchema) { const target = await resolveProject(tree, params.target!); const solution = getRootNamespace(tree, source, moduleName); const targetPath = buildDefaultPath(target.definition); - const definitionPath = targetPath + PROXY_CONFIG_PATH; - const readProxyConfig = createProxyConfigReader(definitionPath); - const createProxyConfigWriter = createProxyConfigWriterCreator(definitionPath); + const readProxyConfig = createProxyConfigReader(targetPath); + const createProxyConfigWriter = createProxyConfigWriterCreator(targetPath); const data = readProxyConfig(tree); const types = data.types; const modules = data.modules; diff --git a/npm/ng-packs/packages/schematics/src/commands/api/schema.ts b/npm/ng-packs/packages/schematics/src/commands/api/schema.ts deleted file mode 100644 index 0c26ce461f..0000000000 --- a/npm/ng-packs/packages/schematics/src/commands/api/schema.ts +++ /dev/null @@ -1,16 +0,0 @@ -export interface Schema { - /** - * Backend module to generate code for - */ - module?: string; - - /** - * Angular project to resolve root namespace & API definition URL from - */ - source?: string; - - /** - * Angular project to generate code in - */ - target?: string; -} diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts new file mode 100644 index 0000000000..3ac5053851 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts @@ -0,0 +1,48 @@ +import { strings } from '@angular-devkit/core'; +import { chain, SchematicContext, Tree } from '@angular-devkit/schematics'; +import { GenerateProxySchema } from '../../models'; +import { + buildDefaultPath, + chainAndMerge, + createApiDefinitionGetter, + createApisGenerator, + createProxyClearer, + createProxyConfigReader, + createProxyConfigSaver, + removeDefaultPlaceholders, + resolveProject, +} from '../../utils'; + +export default function(schema: GenerateProxySchema) { + const params = removeDefaultPlaceholders(schema); + const moduleName = strings.camelize(params.module || 'app'); + + return chain([ + async (host: Tree, _context: SchematicContext) => { + const target = await resolveProject(host, params.target!); + const targetPath = buildDefaultPath(target.definition); + const readProxyConfig = createProxyConfigReader(targetPath); + let generated: string[] = []; + + try { + generated = readProxyConfig(host).generated; + const index = generated.findIndex(m => m === moduleName); + if (index < 0) generated.push(moduleName); + } catch (_) { + generated.push(moduleName); + } + + const getApiDefinition = createApiDefinitionGetter(params); + const data = { generated, ...(await getApiDefinition(host)) }; + data.generated = []; + + const clearProxy = createProxyClearer(targetPath); + + const saveProxyConfig = createProxyConfigSaver(data, targetPath); + + const generateApis = createApisGenerator(schema, generated); + + return chainAndMerge([clearProxy, saveProxyConfig, generateApis])(host); + }, + ]); +} diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy/schema.json b/npm/ng-packs/packages/schematics/src/commands/proxy-add/schema.json similarity index 50% rename from npm/ng-packs/packages/schematics/src/commands/proxy/schema.json rename to npm/ng-packs/packages/schematics/src/commands/proxy-add/schema.json index f0b76bbdf6..f9e762c597 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy/schema.json +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-add/schema.json @@ -6,33 +6,33 @@ "properties": { "module": { "alias": "m", - "description": "Backend module to generate code for", + "description": "Backend module name", "type": "string", "$default": { "$source": "argv", "index": 0 }, - "x-prompt": "Please enter name of the backend module you wish to generate proxies for. (default: \"app\")" + "x-prompt": "Please enter backend module name. (default: \"app\")" }, "source": { "alias": "s", - "description": "Angular project to resolve root namespace & API definition URL from", + "description": "Source Angular project for API definition URL & root namespace resolution", "type": "string", "$default": { "$source": "argv", "index": 1 }, - "x-prompt": "Plese enter Angular project name to resolve root namespace & API definition URL from. (default: workspace \"defaultProject\")" + "x-prompt": "Plese enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" }, "target": { "alias": "t", - "description": "Angular project to generate code in", + "description": "Target Angular project to place the generated code", "type": "string", "$default": { "$source": "argv", "index": 2 }, - "x-prompt": "Plese enter Angular project name to place generated code in. (default: workspace \"defaultProject\")" + "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" } }, "required": [] diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts new file mode 100644 index 0000000000..2c4e20d7d2 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts @@ -0,0 +1,37 @@ +import { SchematicContext, Tree } from '@angular-devkit/schematics'; +import { GenerateProxySchema } from '../../models'; +import { + buildDefaultPath, + chainAndMerge, + createApiDefinitionGetter, + createApisGenerator, + createProxyClearer, + createProxyConfigReader, + createProxyConfigSaver, + removeDefaultPlaceholders, + resolveProject, +} from '../../utils'; + +export default function(schema: GenerateProxySchema) { + const params = removeDefaultPlaceholders(schema); + + return async (host: Tree, _context: SchematicContext) => { + const target = await resolveProject(host, params.target!); + const targetPath = buildDefaultPath(target.definition); + + const readProxyConfig = createProxyConfigReader(targetPath); + const { generated } = readProxyConfig(host); + + const getApiDefinition = createApiDefinitionGetter(params); + const data = { generated, ...(await getApiDefinition(host)) }; + data.generated = []; + + const clearProxy = createProxyClearer(targetPath); + + const saveProxyConfig = createProxyConfigSaver(data, targetPath); + + const generateApis = createApisGenerator(schema, generated); + + return chainAndMerge([clearProxy, saveProxyConfig, generateApis])(host); + }; +} diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json new file mode 100644 index 0000000000..f9e762c597 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json @@ -0,0 +1,39 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "SchematicsAbpGenerateProxy", + "title": "ABP Generate Proxy Schema", + "type": "object", + "properties": { + "module": { + "alias": "m", + "description": "Backend module name", + "type": "string", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "Please enter backend module name. (default: \"app\")" + }, + "source": { + "alias": "s", + "description": "Source Angular project for API definition URL & root namespace resolution", + "type": "string", + "$default": { + "$source": "argv", + "index": 1 + }, + "x-prompt": "Plese enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" + }, + "target": { + "alias": "t", + "description": "Target Angular project to place the generated code", + "type": "string", + "$default": { + "$source": "argv", + "index": 2 + }, + "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" + } + }, + "required": [] +} diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts new file mode 100644 index 0000000000..83cc43c0b8 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts @@ -0,0 +1,43 @@ +import { strings } from '@angular-devkit/core'; +import { SchematicContext, Tree } from '@angular-devkit/schematics'; +import { GenerateProxySchema } from '../../models'; +import { + buildDefaultPath, + chainAndMerge, + createApiDefinitionGetter, + createApisGenerator, + createProxyClearer, + createProxyConfigReader, + createProxyConfigSaver, + removeDefaultPlaceholders, + resolveProject, +} from '../../utils'; + +export default function(schema: GenerateProxySchema) { + const params = removeDefaultPlaceholders(schema); + const moduleName = strings.camelize(params.module || 'app'); + + return async (host: Tree, _context: SchematicContext) => { + const target = await resolveProject(host, params.target!); + const targetPath = buildDefaultPath(target.definition); + + const readProxyConfig = createProxyConfigReader(targetPath); + const { generated } = readProxyConfig(host); + + const index = generated.findIndex(m => m === moduleName); + if (index < 0) return host; + generated.splice(index, 1); + + const getApiDefinition = createApiDefinitionGetter(params); + const data = { generated, ...(await getApiDefinition(host)) }; + data.generated = []; + + const clearProxy = createProxyClearer(targetPath); + + const saveProxyConfig = createProxyConfigSaver(data, targetPath); + + const generateApis = createApisGenerator(schema, generated); + + return chainAndMerge([clearProxy, saveProxyConfig, generateApis])(host); + }; +} diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json new file mode 100644 index 0000000000..f9e762c597 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json @@ -0,0 +1,39 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "SchematicsAbpGenerateProxy", + "title": "ABP Generate Proxy Schema", + "type": "object", + "properties": { + "module": { + "alias": "m", + "description": "Backend module name", + "type": "string", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "Please enter backend module name. (default: \"app\")" + }, + "source": { + "alias": "s", + "description": "Source Angular project for API definition URL & root namespace resolution", + "type": "string", + "$default": { + "$source": "argv", + "index": 1 + }, + "x-prompt": "Plese enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" + }, + "target": { + "alias": "t", + "description": "Target Angular project to place the generated code", + "type": "string", + "$default": { + "$source": "argv", + "index": 2 + }, + "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" + } + }, + "required": [] +} diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy/index.ts deleted file mode 100644 index fc405b5a58..0000000000 --- a/npm/ng-packs/packages/schematics/src/commands/proxy/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { strings } from '@angular-devkit/core'; -import { - branchAndMerge, - chain, - schematic, - SchematicContext, - Tree, -} from '@angular-devkit/schematics'; -import { API_DEFINITION_ENDPOINT, PROXY_CONFIG_PATH } from '../../constants'; -import { ApiDefinition } from '../../models'; -import { - buildDefaultPath, - createProxyConfigSaver, - getApiDefinition, - getSourceUrl, - removeDefaultPlaceholders, - resolveProject, -} from '../../utils'; -import { Schema as GenerateProxySchema } from './schema'; - -export default function(schema: GenerateProxySchema) { - const params = removeDefaultPlaceholders(schema); - const moduleName = strings.camelize(params.module || 'app'); - - return chain([ - async (tree: Tree, _context: SchematicContext) => { - const source = await resolveProject(tree, params.source!); - const target = await resolveProject(tree, params.target!); - const sourceUrl = getSourceUrl(tree, source, moduleName); - const targetPath = buildDefaultPath(target.definition); - const data: ApiDefinition = await getApiDefinition(sourceUrl + API_DEFINITION_ENDPOINT); - - const saveProxyConfig = createProxyConfigSaver(data, targetPath + PROXY_CONFIG_PATH); - const createApi = schematic('api', schema); - - return branchAndMerge(chain([saveProxyConfig, createApi])); - }, - ]); -} diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy/schema.ts b/npm/ng-packs/packages/schematics/src/commands/proxy/schema.ts deleted file mode 100644 index 0c26ce461f..0000000000 --- a/npm/ng-packs/packages/schematics/src/commands/proxy/schema.ts +++ /dev/null @@ -1,16 +0,0 @@ -export interface Schema { - /** - * Backend module to generate code for - */ - module?: string; - - /** - * Angular project to resolve root namespace & API definition URL from - */ - source?: string; - - /** - * Angular project to generate code in - */ - target?: string; -} diff --git a/npm/ng-packs/packages/schematics/src/utils/source.ts b/npm/ng-packs/packages/schematics/src/utils/source.ts index 3652836ed7..89d1fd17d8 100644 --- a/npm/ng-packs/packages/schematics/src/utils/source.ts +++ b/npm/ng-packs/packages/schematics/src/utils/source.ts @@ -1,13 +1,26 @@ +import { strings } from '@angular-devkit/core'; import { SchematicsException, Tree } from '@angular-devkit/schematics'; import got from 'got'; +import { API_DEFINITION_ENDPOINT, PROXY_CONFIG_PATH, PROXY_PATH } from '../constants'; import { Exception } from '../enums'; -import { ApiDefinition, Project, ProxyConfig, WriteOp } from '../models'; +import { ApiDefinition, GenerateProxySchema, Project, ProxyConfig, WriteOp } from '../models'; import { getAssignedPropertyFromObjectliteral } from './ast'; import { interpolate } from './common'; -import { readEnvironment } from './workspace'; +import { readEnvironment, resolveProject } from './workspace'; -export async function getApiDefinition(url: string) { - let body: any; +export function createApiDefinitionGetter(params: GenerateProxySchema) { + const moduleName = strings.camelize(params.module || 'app'); + + return async (host: Tree) => { + const source = await resolveProject(host, params.source!); + const sourceUrl = getSourceUrl(host, source, moduleName); + return await getApiDefinition(sourceUrl); + }; +} + +async function getApiDefinition(sourceUrl: string) { + const url = sourceUrl + API_DEFINITION_ENDPOINT; + let body: ApiDefinition; try { ({ body } = await got(url, { @@ -17,9 +30,10 @@ export async function getApiDefinition(url: string) { })); } catch ({ response }) { // handle redirects - if (response?.body && response.statusCode < 400) return response.body; + if (response.statusCode >= 400 || !response?.body) + throw new SchematicsException(Exception.NoApi); - throw new SchematicsException(Exception.NoApi); + body = response.body; } return body; @@ -72,13 +86,33 @@ export function getSourceUrl(tree: Tree, project: Project, moduleName: string) { } export function createProxyConfigReader(targetPath: string) { + targetPath += PROXY_CONFIG_PATH; + return (tree: Tree) => { try { const buffer = tree.read(targetPath); return JSON.parse(buffer!.toString()) as ProxyConfig; } catch (_) {} - throw new SchematicsException(interpolate(Exception.NoApiDefinition, targetPath)); + throw new SchematicsException(interpolate(Exception.NoProxyConfig, targetPath)); + }; +} + +export function createProxyClearer(targetPath: string) { + targetPath += PROXY_PATH; + + return (tree: Tree) => { + try { + tree.getDir(targetPath).subdirs.forEach(dirName => { + if (!['enums', 'models', 'services'].includes(dirName)) return; + + tree.delete(`${targetPath}/${dirName}`); + }); + + return tree; + } catch (_) { + throw new SchematicsException(interpolate(Exception.DirRemoveFailed, targetPath)); + } }; } @@ -86,6 +120,7 @@ export function createProxyConfigSaver(apiDefinition: ApiDefinition, targetPath: const createProxyConfigJson = createProxyConfigJsonCreator(apiDefinition); const readPreviousConfig = createProxyConfigReader(targetPath); const createProxyConfigWriter = createProxyConfigWriterCreator(targetPath); + targetPath += PROXY_CONFIG_PATH; return (tree: Tree) => { const generated: string[] = []; @@ -108,6 +143,8 @@ export function createProxyConfigSaver(apiDefinition: ApiDefinition, targetPath: } export function createProxyConfigWriterCreator(targetPath: string) { + targetPath += PROXY_CONFIG_PATH; + return (op: WriteOp, data: string) => (tree: Tree) => { try { tree[op](targetPath, data); From c91206de42f51953a8b823677fab9d0771d5cd3f Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 17:26:19 +0300 Subject: [PATCH 134/474] build: update files to copy after schematics build --- npm/ng-packs/scripts/build-schematics.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/scripts/build-schematics.ts b/npm/ng-packs/scripts/build-schematics.ts index 5e95248415..3a14d2f03c 100644 --- a/npm/ng-packs/scripts/build-schematics.ts +++ b/npm/ng-packs/scripts/build-schematics.ts @@ -20,7 +20,9 @@ class FileCopy { const PACKAGE_TO_BUILD = 'schematics'; const FILES_TO_COPY_AFTER_BUILD: (FileCopy | string)[] = [ - { src: 'src/commands/proxy/schema.json', dest: 'commands/proxy/schema.json' }, + { src: 'src/commands/proxy-add/schema.json', dest: 'commands/proxy-add/schema.json' }, + { src: 'src/commands/proxy-refresh/schema.json', dest: 'commands/proxy-refresh/schema.json' }, + { src: 'src/commands/proxy-remove/schema.json', dest: 'commands/proxy-remove/schema.json' }, { src: 'src/commands/api/files-enum', dest: 'commands/api/files-enum' }, { src: 'src/commands/api/files-model', dest: 'commands/api/files-model' }, { src: 'src/commands/api/files-service', dest: 'commands/api/files-service' }, From 47b1aa13fb0595cabeac63e00c50eb172d8deaff Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 18:05:46 +0300 Subject: [PATCH 135/474] feat: add a warning about generated proxies in markdown --- .../src/commands/proxy-add/index.ts | 5 +++- .../schematics/src/constants/proxy.ts | 16 ++++++++++++ .../packages/schematics/src/utils/source.ts | 25 ++++++++++++++++++- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts index 3ac5053851..1400cfca1c 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts @@ -9,6 +9,7 @@ import { createProxyClearer, createProxyConfigReader, createProxyConfigSaver, + createProxyWarningSaver, removeDefaultPlaceholders, resolveProject, } from '../../utils'; @@ -40,9 +41,11 @@ export default function(schema: GenerateProxySchema) { const saveProxyConfig = createProxyConfigSaver(data, targetPath); + const saveProxyWarning = createProxyWarningSaver(targetPath); + const generateApis = createApisGenerator(schema, generated); - return chainAndMerge([clearProxy, saveProxyConfig, generateApis])(host); + return chainAndMerge([clearProxy, saveProxyConfig, saveProxyWarning, generateApis])(host); }, ]); } diff --git a/npm/ng-packs/packages/schematics/src/constants/proxy.ts b/npm/ng-packs/packages/schematics/src/constants/proxy.ts index ee105029c4..fbf7f127bd 100644 --- a/npm/ng-packs/packages/schematics/src/constants/proxy.ts +++ b/npm/ng-packs/packages/schematics/src/constants/proxy.ts @@ -1,2 +1,18 @@ export const PROXY_PATH = '/proxy'; export const PROXY_CONFIG_PATH = `${PROXY_PATH}/generate-proxy.json`; +export const PROXY_WARNING_PATH = `${PROXY_PATH}/README.md`; + +export const PROXY_WARNING = `# Proxy Generation Output + +This directory includes the output of the latest proxy generation. +The \`services\`, \`models\`, and \`enums\` folders will be overwritten when proxy generation is run again. +Therefore, please do not place your own content in those folders. + +In addition, \`generate-proxy.json\` works like a lock file. +It includes information used by the proxy generator, so please do not delete or modify it. + +Finally, the name of this folder should not be changed for two reasons: +- Proxy generator will keep creating this folder and you will have multiple copies of the same content. +- ABP Suite generates imports from this folder and uses the path \`/proxy\` when doing so. + +`; diff --git a/npm/ng-packs/packages/schematics/src/utils/source.ts b/npm/ng-packs/packages/schematics/src/utils/source.ts index 89d1fd17d8..b495e75c20 100644 --- a/npm/ng-packs/packages/schematics/src/utils/source.ts +++ b/npm/ng-packs/packages/schematics/src/utils/source.ts @@ -1,7 +1,13 @@ import { strings } from '@angular-devkit/core'; import { SchematicsException, Tree } from '@angular-devkit/schematics'; import got from 'got'; -import { API_DEFINITION_ENDPOINT, PROXY_CONFIG_PATH, PROXY_PATH } from '../constants'; +import { + API_DEFINITION_ENDPOINT, + PROXY_CONFIG_PATH, + PROXY_PATH, + PROXY_WARNING, + PROXY_WARNING_PATH, +} from '../constants'; import { Exception } from '../enums'; import { ApiDefinition, GenerateProxySchema, Project, ProxyConfig, WriteOp } from '../models'; import { getAssignedPropertyFromObjectliteral } from './ast'; @@ -116,6 +122,19 @@ export function createProxyClearer(targetPath: string) { }; } +export function createProxyWarningSaver(targetPath: string) { + targetPath += PROXY_WARNING_PATH; + const createFileWriter = createFileWriterCreator(targetPath); + + return (tree: Tree) => { + const op = tree.exists(targetPath) ? 'overwrite' : 'create'; + const writeWarningMD = createFileWriter(op, PROXY_WARNING); + writeWarningMD(tree); + + return tree; + }; +} + export function createProxyConfigSaver(apiDefinition: ApiDefinition, targetPath: string) { const createProxyConfigJson = createProxyConfigJsonCreator(apiDefinition); const readPreviousConfig = createProxyConfigReader(targetPath); @@ -145,6 +164,10 @@ export function createProxyConfigSaver(apiDefinition: ApiDefinition, targetPath: export function createProxyConfigWriterCreator(targetPath: string) { targetPath += PROXY_CONFIG_PATH; + return createFileWriterCreator(targetPath); +} + +export function createFileWriterCreator(targetPath: string) { return (op: WriteOp, data: string) => (tree: Tree) => { try { tree[op](targetPath, data); From d3b28845b8181272d889f27640cc0946dbd3a6e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arma=C4=9Fan=20=C3=9Cnl=C3=BC?= <36102404+armgnunlu@users.noreply.github.com> Date: Fri, 28 Aug 2020 18:34:30 +0300 Subject: [PATCH 136/474] Resolved #4874 --- .../Pages/Index.cshtml | 71 ++++---- .../CmsKitCommonWebModule.cs | 21 ++- .../CmsKit/Reactions/StandardReactions.cs | 6 +- .../Volo/CmsKit/CmsKitDomainModule.cs | 8 +- .../Components/Commenting/Default.cshtml | 162 +++++++++--------- .../ReactionSelection/Default.cshtml | 44 ++--- .../Components/ReactionSelection/default.css | 17 +- .../Components/ReactionSelection/default.js | 2 +- 8 files changed, 171 insertions(+), 160 deletions(-) diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml index 253016f03b..95faf6c6ee 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml @@ -8,52 +8,45 @@ @using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.ReactionSelection @model IndexModel @inject IStringLocalizer Localizer -

    CMS Kit DEMO

    +

    CMS Kit DEMO

    - - - -

    - Any fool can write code that a computer can understand. Good programmers write code that humans can understand. + + + +

    + "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."

    -
    - Martin Fowler -
    +

    - Martin Fowler

    - - @if (GlobalFeatureManager.Instance.IsEnabled()) - { - @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new {entityType = "quote", entityId = "1"}) -
    - } - @if (GlobalFeatureManager.Instance.IsEnabled()) - { - @await Component.InvokeAsync(typeof(CommentingViewComponent), new {entityType = "quote", entityId = "1"}) - } -
    - - - -

    - Writing code is very simple, but writing simple code is the hardest thing there is! +@if (GlobalFeatureManager.Instance.IsEnabled()) +{ + @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new { entityType = "quote", entityId = "1" }) +} +@if (GlobalFeatureManager.Instance.IsEnabled()) +{ + @await Component.InvokeAsync(typeof(CommentingViewComponent), new { entityType = "quote", entityId = "1" }) +} +


    + + + +

    + "Writing code is very simple, but writing simple code is the hardest thing there is!"

    -
    - Halil ibrahim Kalkan (inspired from Johan Cruyff) -
    +

    - Halil ibrahim Kalkan Inspired from Johan Cruyff

    - - @if (GlobalFeatureManager.Instance.IsEnabled()) - { - @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new { entityType = "quote", entityId = "2" }) -
    - } - @if (GlobalFeatureManager.Instance.IsEnabled()) - { - @await Component.InvokeAsync(typeof(CommentingViewComponent), new { entityType = "quote", entityId = "2" }) - } -
    + +@if (GlobalFeatureManager.Instance.IsEnabled()) +{ + @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new { entityType = "quote", entityId = "2" }) +} +@if (GlobalFeatureManager.Instance.IsEnabled()) +{ + @await Component.InvokeAsync(typeof(CommentingViewComponent), new { entityType = "quote", entityId = "2" }) +} +
    \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitCommonWebModule.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitCommonWebModule.cs index 54743b948f..53b4359ca7 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitCommonWebModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitCommonWebModule.cs @@ -18,14 +18,18 @@ namespace Volo.CmsKit.Web { Configure(options => { - options.ReactionIcons[StandardReactions.Smile] = new LocalizableIconDictionary("/cms-kit/icons/smile.png"); - options.ReactionIcons[StandardReactions.ThumbsUp] = new LocalizableIconDictionary("/cms-kit/icons/thumbsup.png"); - options.ReactionIcons[StandardReactions.Confused] = new LocalizableIconDictionary("/cms-kit/icons/confused.png"); - options.ReactionIcons[StandardReactions.Eyes] = new LocalizableIconDictionary("/cms-kit/icons/eyes.png"); - options.ReactionIcons[StandardReactions.Heart] = new LocalizableIconDictionary("/cms-kit/icons/heart.png"); - options.ReactionIcons[StandardReactions.Hooray] = new LocalizableIconDictionary("/cms-kit/icons/hooray.png"); - options.ReactionIcons[StandardReactions.Rocket] = new LocalizableIconDictionary("/cms-kit/icons/rocket.png"); - options.ReactionIcons[StandardReactions.ThumbsDown] = new LocalizableIconDictionary("/cms-kit/icons/thumbsdown.png"); + options.ReactionIcons[StandardReactions.Smile] = new LocalizableIconDictionary("fas fa-smile text-warning"); + options.ReactionIcons[StandardReactions.ThumbsUp] = new LocalizableIconDictionary("fa fa-thumbs-up text-primary"); + options.ReactionIcons[StandardReactions.Confused] = new LocalizableIconDictionary("fas fa-surprise text-warning"); + options.ReactionIcons[StandardReactions.Eyes] = new LocalizableIconDictionary("fas fa-meh-rolling-eyes text-warning"); + options.ReactionIcons[StandardReactions.Heart] = new LocalizableIconDictionary("fa fa-heart text-danger"); + options.ReactionIcons[StandardReactions.HeartBroken] = new LocalizableIconDictionary("fas fa-heart-broken text-danger"); + options.ReactionIcons[StandardReactions.Wink] = new LocalizableIconDictionary("fas fa-grin-wink text-warning"); + options.ReactionIcons[StandardReactions.Pray] = new LocalizableIconDictionary("fas fa-praying-hands text-info"); + options.ReactionIcons[StandardReactions.Rocket] = new LocalizableIconDictionary("fa fa-rocket text-success"); + options.ReactionIcons[StandardReactions.ThumbsDown] = new LocalizableIconDictionary("fa fa-thumbs-down text-secondary"); + options.ReactionIcons[StandardReactions.Victory] = new LocalizableIconDictionary("fas fa-hand-peace text-warning"); + options.ReactionIcons[StandardReactions.Rock] = new LocalizableIconDictionary("fas fa-hand-rock text-warning"); }); Configure(options => @@ -35,3 +39,4 @@ namespace Volo.CmsKit.Web } } } + diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Reactions/StandardReactions.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Reactions/StandardReactions.cs index 69a2d4c73a..532971502d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Reactions/StandardReactions.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Reactions/StandardReactions.cs @@ -8,7 +8,11 @@ public const string Confused = "_CF"; public const string Eyes = "_EY"; public const string Heart = "_HE"; - public const string Hooray = "_HO"; + public const string HeartBroken = "_HB"; + public const string Wink = "_WI"; + public const string Pray = "_PR"; public const string Rocket = "_RO"; + public const string Victory = "_VI"; + public const string Rock = "_RC"; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs index 7659c40126..b1937dd6e0 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs @@ -16,14 +16,18 @@ namespace Volo.CmsKit { Configure(options => { - options.Reactions.AddOrReplace(StandardReactions.Smile); options.Reactions.AddOrReplace(StandardReactions.ThumbsUp); options.Reactions.AddOrReplace(StandardReactions.ThumbsDown); + options.Reactions.AddOrReplace(StandardReactions.Smile); + options.Reactions.AddOrReplace(StandardReactions.Wink); options.Reactions.AddOrReplace(StandardReactions.Confused); + options.Reactions.AddOrReplace(StandardReactions.Victory); + options.Reactions.AddOrReplace(StandardReactions.Rock); options.Reactions.AddOrReplace(StandardReactions.Eyes); options.Reactions.AddOrReplace(StandardReactions.Heart); - options.Reactions.AddOrReplace(StandardReactions.Hooray); + options.Reactions.AddOrReplace(StandardReactions.HeartBroken); options.Reactions.AddOrReplace(StandardReactions.Rocket); + options.Reactions.AddOrReplace(StandardReactions.Pray); }); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml index 790a66fcd4..e8a26db102 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml @@ -15,101 +15,107 @@ @{ Func GetCommentTitle(CmsUserDto author, DateTime creationTime) => - @ - - @((string.IsNullOrWhiteSpace(author.Name) + @ + + @((string.IsNullOrWhiteSpace(author.Name) ? author.UserName : author.Name + " " + author.Surname).Trim()) - @creationTime.ToString() - ; + @creationTime.ToString() + ; } @{ Func GetCommentArea(Guid? repliedCommentId, bool cancelButton = false) => - @
    -
    - -
    - - + @
    + + +
    +
    +
    + +
    - @if (cancelButton) - { - @L["Cancel"] - } - @L["Send"] - -
    ; +
    +
    + @if (cancelButton) + { + @L["Cancel"] + } + @L["Send"] +
    +
    +
    + +
    ; } @{ Func GetCommentContentArea(Guid id, string text) => - @
    -
    -

    - @text -

    -
    -
    ; + @
    +
    +

    + @text +

    +
    +
    ; } @{ Func GetCommentActionArea(Guid id, Guid authorId, bool isReply, string text) => - @
    -
    - @if (!isReply) + @
    +
    + @if (!isReply) + { + @if (CurrentUser.IsAuthenticated) { - @if (CurrentUser.IsAuthenticated) - { - - @L["Reply"] - - } - else - { - @L["LoginToReply"] - } + + @L["Reply"] + } - @if (authorId == CurrentUser.Id) + else { - @if (!isReply) - { - | - } + @L["LoginToReply"] + } + } + @if (authorId == CurrentUser.Id) + { - - @L["Delete"] - + + @L["Delete"] + - | - - @L["Edit"] - - } -
    - + ; +
    +
    ; }
    - -
    -

    - @L["Comments"] -

    +
    +
    + @L["Comments"] +
    @foreach (var comment in Model.Comments) { -
    -
    +
    +
    @GetCommentTitle(comment.Author, comment.CreationTime).Invoke(null)
    @@ -119,7 +125,7 @@ @if (cmsKitUiOptions.Value.CommentsOptions.IsReactionsEnabled && GlobalFeatureManager.Instance.IsEnabled()) { @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), - new {entityType = "comment", entityId = comment.Id.ToString()}) + new { entityType = "comment", entityId = comment.Id.ToString() }) } @GetCommentActionArea(comment.Id, comment.Author.Id, false, comment.Text).Invoke(null) @@ -131,28 +137,28 @@ @if (comment.Replies.Any()) { -
    - @foreach (var reply in comment.Replies) - { -
    -
    + @foreach (var reply in comment.Replies) + { +
    +
    +
    -
    +
    @GetCommentTitle(reply.Author, reply.CreationTime).Invoke(null) -
    + @GetCommentContentArea(reply.Id, reply.Text).Invoke(null) @if (cmsKitUiOptions.Value.CommentsOptions.IsReactionsEnabled && GlobalFeatureManager.Instance.IsEnabled()) { @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), - new {entityType = "comment", entityId = reply.Id.ToString()}) + new { entityType = "comment", entityId = reply.Id.ToString() }) } @GetCommentActionArea(reply.Id, reply.Author.Id, true, reply.Text).Invoke(null)
    - } -
    +
    + } }
    @@ -166,7 +172,7 @@ } else if (!string.IsNullOrWhiteSpace(Model.LoginUrl)) { -
    + } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/Default.cshtml index 9096f8f154..cc9f29af27 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/Default.cshtml @@ -1,25 +1,29 @@ @inject ICurrentUser CurrentUser @using Volo.Abp.Users @model Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.ReactionSelection.ReactionSelectionViewComponent.ReactionSelectionViewModel - +
    +
    + - @if (CurrentUser.IsAuthenticated) - { - - - } - @foreach (var reaction in Model.Reactions.Where(r => r.Count > 0)) - { - - - @(reaction.Count) - - } - +
    \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.css b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.css index 8e27846c5c..7ce8d0fc02 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.css +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.css @@ -1,13 +1,8 @@ -.cms-reaction-select-icon -{ +.cms-reaction-select-icon, .cms-reaction-icon { cursor: pointer; } -.cms-reaction-icon -{ - cursor: pointer; - padding: 3px 5px 5px; -} -.cms-reaction-icon-selected -{ - background-color: #eef; -} +.cms-reaction-selection-popover-content i.fa-2x{ + width: 25%; + display: inline-block; + float: left; +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.js b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.js index 3214d3af6b..7107fd5a81 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.js +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.js @@ -47,7 +47,7 @@ function init() { $selectIcon.popover({ - placement: 'right', + placement: 'left', html: true, trigger: 'focus', title: l('PickYourReaction'), From 9228e72650fc99f4a11dca67fe52915e815b35ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 30 Aug 2020 17:09:16 +0300 Subject: [PATCH 137/474] Use codebehind class for the the user management component. --- .../Pages/UserManagement.razor | 12 ----------- .../Pages/UserManagement.razor.cs | 20 +++++++++++++++++++ 2 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor index d0cc6dd67d..1de28d16e6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor @@ -17,16 +17,4 @@ }

    Total user count: @_totalUserCount

    -} - -@code { - private long _totalUserCount = 0; - private IReadOnlyList _users; - - private async Task GetUsersAsync() - { - var result = await UserAppService.GetListAsync(new GetIdentityUsersInput()); - _totalUserCount = result.TotalCount; - _users = result.Items; - } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor.cs new file mode 100644 index 0000000000..3b8552987f --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; +using Volo.Abp.Identity; + +namespace MyCompanyName.MyProjectName.Blazor.Pages +{ + public partial class UserManagement : ComponentBase + { + private long _totalUserCount; + private IReadOnlyList _users; + + private async Task GetUsersAsync() + { + var result = await UserAppService.GetListAsync(new GetIdentityUsersInput()); + _totalUserCount = result.TotalCount; + _users = result.Items; + } + } +} From bd7915cbad6346397b762a2016e6257386134432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 30 Aug 2020 19:33:47 +0300 Subject: [PATCH 138/474] Created Volo.Abp.Identity.Blazor package. Moved usermanagement to this package. --- modules/identity/.gitignore | 4 +++ modules/identity/Volo.Abp.Identity.sln | 15 +++++++--- .../AbpIdentityBlazorModule.cs | 12 ++++++++ .../Volo.Abp.Identity.Blazor/FodyWeavers.xml | 3 ++ .../Volo.Abp.Identity.Blazor/FodyWeavers.xsd | 30 +++++++++++++++++++ .../Pages/UserManagement.razor | 2 +- .../Pages/UserManagement.razor.cs | 3 +- .../Volo.Abp.Identity.Blazor.csproj | 20 +++++++++++++ .../Volo.Abp.Identity.Blazor/_Imports.razor | 1 + nupkg/common.ps1 | 1 + .../App.razor | 4 ++- .../MyCompanyName.MyProjectName.Blazor.csproj | 4 +++ .../MyProjectNameBlazorModule.cs | 4 ++- .../_Imports.razor | 1 + 14 files changed, 95 insertions(+), 9 deletions(-) create mode 100644 modules/identity/.gitignore create mode 100644 modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs create mode 100644 modules/identity/src/Volo.Abp.Identity.Blazor/FodyWeavers.xml create mode 100644 modules/identity/src/Volo.Abp.Identity.Blazor/FodyWeavers.xsd rename {templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor => modules/identity/src/Volo.Abp.Identity.Blazor}/Pages/UserManagement.razor (90%) rename {templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor => modules/identity/src/Volo.Abp.Identity.Blazor}/Pages/UserManagement.razor.cs (87%) create mode 100644 modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj create mode 100644 modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor diff --git a/modules/identity/.gitignore b/modules/identity/.gitignore new file mode 100644 index 0000000000..dcd876a3c7 --- /dev/null +++ b/modules/identity/.gitignore @@ -0,0 +1,4 @@ +src/Volo.Abp.Identity.HttpApi/Properties/launchSettings.json +src/Volo.Abp.Identity.Web/Properties/launchSettings.json +test/Volo.Abp.Identity.AspNetCore.Tests/Properties/launchSettings.json +src/Volo.Abp.Identity.AspNetCore/Properties/launchSettings.json diff --git a/modules/identity/Volo.Abp.Identity.sln b/modules/identity/Volo.Abp.Identity.sln index 388cd0c555..23336bdc02 100644 --- a/modules/identity/Volo.Abp.Identity.sln +++ b/modules/identity/Volo.Abp.Identity.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27428.1 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30413.136 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{AADC5A0A-F100-4511-87DE-B74E55F5B69B}" EndProject @@ -37,9 +37,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Identity.Domain.Te EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Identity.AspNetCore", "src\Volo.Abp.Identity.AspNetCore\Volo.Abp.Identity.AspNetCore.csproj", "{D5EFC912-75A0-4856-9B8D-DFDD4CD66BAB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.Domain.Identity", "src\Volo.Abp.PermissionManagement.Domain.Identity\Volo.Abp.PermissionManagement.Domain.Identity.csproj", "{736F91E7-8A70-441B-89DE-0E29A348E718}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.PermissionManagement.Domain.Identity", "src\Volo.Abp.PermissionManagement.Domain.Identity\Volo.Abp.PermissionManagement.Domain.Identity.csproj", "{736F91E7-8A70-441B-89DE-0E29A348E718}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Identity.AspNetCore.Tests", "test\Volo.Abp.Identity.AspNetCore.Tests\Volo.Abp.Identity.AspNetCore.Tests.csproj", "{89C094EB-D80A-4976-9C10-7CE3EBEEE877}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Identity.AspNetCore.Tests", "test\Volo.Abp.Identity.AspNetCore.Tests\Volo.Abp.Identity.AspNetCore.Tests.csproj", "{89C094EB-D80A-4976-9C10-7CE3EBEEE877}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Identity.Blazor", "src\Volo.Abp.Identity.Blazor\Volo.Abp.Identity.Blazor.csproj", "{3F7BB653-3F3A-4889-B73C-E463F239099A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -115,6 +117,10 @@ Global {89C094EB-D80A-4976-9C10-7CE3EBEEE877}.Debug|Any CPU.Build.0 = Debug|Any CPU {89C094EB-D80A-4976-9C10-7CE3EBEEE877}.Release|Any CPU.ActiveCfg = Release|Any CPU {89C094EB-D80A-4976-9C10-7CE3EBEEE877}.Release|Any CPU.Build.0 = Release|Any CPU + {3F7BB653-3F3A-4889-B73C-E463F239099A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F7BB653-3F3A-4889-B73C-E463F239099A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F7BB653-3F3A-4889-B73C-E463F239099A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F7BB653-3F3A-4889-B73C-E463F239099A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -137,6 +143,7 @@ Global {D5EFC912-75A0-4856-9B8D-DFDD4CD66BAB} = {AADC5A0A-F100-4511-87DE-B74E55F5B69B} {736F91E7-8A70-441B-89DE-0E29A348E718} = {AADC5A0A-F100-4511-87DE-B74E55F5B69B} {89C094EB-D80A-4976-9C10-7CE3EBEEE877} = {9FACAF96-A681-4B36-A938-A37DCA0B7EC1} + {3F7BB653-3F3A-4889-B73C-E463F239099A} = {AADC5A0A-F100-4511-87DE-B74E55F5B69B} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {05740D37-83CF-4041-9C2A-D89F1B3DB5A4} diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs new file mode 100644 index 0000000000..7a74bc8673 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Modularity; + +namespace Volo.Abp.Identity.Blazor +{ + [DependsOn( + typeof(AbpIdentityHttpApiClientModule) + )] + public class AbpIdentityBlazorModule : AbpModule + { + + } +} diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/FodyWeavers.xml b/modules/identity/src/Volo.Abp.Identity.Blazor/FodyWeavers.xml new file mode 100644 index 0000000000..be0de3a908 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/FodyWeavers.xsd b/modules/identity/src/Volo.Abp.Identity.Blazor/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor similarity index 90% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor rename to modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor index 1de28d16e6..a18b56022f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor @@ -4,7 +4,7 @@ @using Microsoft.AspNetCore.Authorization @inject IIdentityUserAppService UserAppService -

    UserManagement

    +

    UserManagement (in the Identity Module)

    diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor.cs similarity index 87% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor.cs rename to modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor.cs index 3b8552987f..b663b1b6be 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/UserManagement.razor.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor.cs @@ -1,9 +1,8 @@ using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Components; -using Volo.Abp.Identity; -namespace MyCompanyName.MyProjectName.Blazor.Pages +namespace Volo.Abp.Identity.Blazor.Pages { public partial class UserManagement : ComponentBase { diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj b/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj new file mode 100644 index 0000000000..85bbf1a77c --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj @@ -0,0 +1,20 @@ + + + + + + + netstandard2.0 + 3.0 + + + + + + + + + + + + diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor b/modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor new file mode 100644 index 0000000000..77285129da --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor @@ -0,0 +1 @@ +@using Microsoft.AspNetCore.Components.Web diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index b1c5e1abd3..e39f02c919 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -208,6 +208,7 @@ $projects = ( "modules/identity/src/Volo.Abp.Identity.HttpApi", "modules/identity/src/Volo.Abp.Identity.MongoDB", "modules/identity/src/Volo.Abp.Identity.Web", + "modules/identity/src/Volo.Abp.Identity.Blazor", "modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity", # modules/identityserver diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor index f96456573f..aca2f1c23c 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor @@ -1,7 +1,9 @@ @using Volo.Abp.AspNetCore.Mvc.Client @inject ICachedApplicationConfigurationClient ConfigurationClient - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj index 7a20d1005e..268bd4a062 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj @@ -16,6 +16,10 @@ + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs index cde615b593..459fede935 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs @@ -6,6 +6,7 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Components.WebAssembly; using Volo.Abp.Autofac; using Volo.Abp.Http.Client.IdentityModel.WebAssembly; +using Volo.Abp.Identity.Blazor; using Volo.Abp.Modularity; namespace MyCompanyName.MyProjectName.Blazor @@ -14,7 +15,8 @@ namespace MyCompanyName.MyProjectName.Blazor typeof(AbpAutofacModule), typeof(MyProjectNameHttpApiClientModule), typeof(AbpHttpClientIdentityModelWebAssemblyModule), - typeof(AbpAspNetCoreComponentsWebAssemblyModule) + typeof(AbpAspNetCoreComponentsWebAssemblyModule), + typeof(AbpIdentityBlazorModule) )] public class MyProjectNameBlazorModule : AbpModule { diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor index d65eae16bc..4ca212ca43 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor @@ -7,3 +7,4 @@ @using Microsoft.JSInterop @using MyCompanyName.MyProjectName.Blazor @using MyCompanyName.MyProjectName.Blazor.Shared +@using Volo.Abp.Identity.Blazor.Pages \ No newline at end of file From 7ac2a350f61a812585fa35aaa0bf5369110aab33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 30 Aug 2020 19:46:59 +0300 Subject: [PATCH 139/474] Clean unnecessary code! --- .../Pages/Index.razor | 21 +-------------- .../Shared/NavMenu.razor | 2 +- .../Shared/SurveyPrompt.razor | 16 ----------- .../wwwroot/sample-data/weather.json | 27 ------------------- 4 files changed, 2 insertions(+), 64 deletions(-) delete mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/SurveyPrompt.razor delete mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/sample-data/weather.json diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor index 50a83512f5..244a32668f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor @@ -1,22 +1,3 @@ @page "/" -@using Volo.Abp.Identity -@inject IProfileAppService ProfileAppService - -

    Profile Application Service Test

    - -

    Current user name: @_userName

    - - - -@code -{ - private string _userName = "?"; - - private async Task GetUserNameAsync() - { - // It calls the remote service via ABP Dynamic C# Proxies! - - _userName = (await ProfileAppService.GetAsync()).UserName; - } -} +

    Welcome to MyProjectName!

    \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor index 8f2dc1908b..d131258431 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor @@ -1,5 +1,5 @@  +} From 97027b170163876a550af3bcba105fdadeda26ec Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 15:39:42 +0300 Subject: [PATCH 144/474] fix: remove source param overwrite in createApisGenerator --- npm/ng-packs/packages/schematics/src/utils/api.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/api.ts b/npm/ng-packs/packages/schematics/src/utils/api.ts index f772666b4b..39483c2aa9 100644 --- a/npm/ng-packs/packages/schematics/src/utils/api.ts +++ b/npm/ng-packs/packages/schematics/src/utils/api.ts @@ -2,10 +2,5 @@ import { chain, schematic } from '@angular-devkit/schematics'; import { GenerateProxySchema } from '../models'; export function createApisGenerator(schema: GenerateProxySchema, generated: string[]) { - return chain( - generated.map(m => { - const apiSchema = { ...schema, source: schema.target, module: m }; - return schematic('api', apiSchema); - }), - ); + return chain(generated.map(m => schematic('api', { ...schema, module: m }))); } From 737e08c3362e98ac8739d305ff8f679dbf6571da Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Mon, 31 Aug 2020 15:50:16 +0300 Subject: [PATCH 145/474] adding user navigation in Suite --- .../POST.md | 31 ++++++++++++++++++ .../add-simple-property.jpg | Bin 0 -> 86112 bytes .../add-user-navigation.jpg | Bin 0 -> 228015 bytes .../create-appuserdto.jpg | Bin 0 -> 184536 bytes .../create-mapping.jpg | Bin 0 -> 309087 bytes .../create-note-entity.jpg | Bin 0 -> 156350 bytes .../final-page.jpg | Bin 0 -> 94289 bytes 7 files changed, 31 insertions(+) create mode 100644 docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md create mode 100644 docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/add-simple-property.jpg create mode 100644 docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/add-user-navigation.jpg create mode 100644 docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/create-appuserdto.jpg create mode 100644 docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/create-mapping.jpg create mode 100644 docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/create-note-entity.jpg create mode 100644 docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/final-page.jpg diff --git a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md new file mode 100644 index 0000000000..b0c743b36f --- /dev/null +++ b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md @@ -0,0 +1,31 @@ +# How to add the user entity as a navigation property? + +In this post, I'll show you how to add the user as a navigation property in your new entity. + +To do this, open the ABP Suite. Create a new entity called `Note`. + +![create-note-entity](create-note-entity.jpg) + +Then add a string property called `Title`. + +![add-simple-property](add-simple-property.jpg) + +To be able to add a user navigation, we need to create a user DTO to map from entity. To do this, create a new folder called "Users" in `*.Application.Contracts` then add a new class called `AppUserDto` inherited from `IdentityUserDto`. + +![create-appuserdto](create-appuserdto.jpg) + +Create the mapping for `AppUserDto`. To do this, open `YourProjectApplicationAutoMapperProfile.cs` and add the below line: + +```csharp +CreateMap().Ignore(x => x.ExtraProperties); +``` + +![create-mapping](create-mapping.jpg) + +Get back to ABP Suite, go to **Navigation Properties** tab. Click **Add Navigation Property** button. Browse `AppUser.cs` in `*.Domain\Users` folder. Then choose the `Name` item as display property. Browse `AppUserDto.cs` in `*.Contracts\Users` folder. Choose `Users` from Collection Names dropdown. + +![add-user-navigation](add-user-navigation.jpg) + +That's it! Click **Save and generate** button to create your page. You'll see the following page if there's everything goes well. + +![final-page](final-page.jpg) \ No newline at end of file diff --git a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/add-simple-property.jpg b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/add-simple-property.jpg new file mode 100644 index 0000000000000000000000000000000000000000..346335d2f411458cce0aa0a87101b6ceff7d999c GIT binary patch literal 86112 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�H}i2yvA(Basf%-Kmz)S+JsR*UTM78Uxd7o|7o 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�z?@3L}H$<$j4E|wt*El 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�-ht`8H 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

      Ke&)ES)vT$3f1Ne->_vmm^QH@a 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¡!#=9gXFuF%Ca`?mkM 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 literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/create-note-entity.jpg b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/create-note-entity.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3d452e65cdacdcd99e0f32576c1f99c49b3b64d GIT binary patch literal 156350 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 literal 0 HcmV?d00001 From e332be263bf2991b96101b449c1811ac34dd6b94 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Mon, 31 Aug 2020 15:56:56 +0300 Subject: [PATCH 146/474] Update POST.md --- .../POST.md | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md index b0c743b36f..039491e10f 100644 --- a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md +++ b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md @@ -28,4 +28,22 @@ Get back to ABP Suite, go to **Navigation Properties** tab. Click **Add Navigati That's it! Click **Save and generate** button to create your page. You'll see the following page if there's everything goes well. -![final-page](final-page.jpg) \ No newline at end of file +![final-page](final-page.jpg) + + + +Note this example is implemented with ABP Commercial 3.1.0-rc.3. This is a RC version. If you want to install the CLI and Suite RC version follow the next steps: + +1- Uninstall the current version of the CLI and install the specific RC version: + +```bash +dotnet tool uninstall --global Volo.Abp.Cli && dotnet tool install --global Volo.Abp.Cli --version 3.1.0-rc.3 +``` + +2- Uninstall the current version of the Suite and install the specific RC version: + +```bash +dotnet tool uninstall --global Volo.Abp.Suite && dotnet tool install -g Volo.Abp.Suite --version 3.1.0-rc.3 --add-source https://nuget.abp.io//v3/index.json +``` + +Don't forget to replace the `` with your own key! \ No newline at end of file From 7ea2e47c7fd816dde1c391dc79196915f287348b Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 31 Aug 2020 16:09:15 +0300 Subject: [PATCH 147/474] Cmskit comments order --- .../Shared/Components/Commenting/CommentingViewComponent.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/CommentingViewComponent.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/CommentingViewComponent.cs index e8d6e73e9a..47944d71c8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/CommentingViewComponent.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/CommentingViewComponent.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; @@ -44,7 +45,7 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Commenting EntityId = entityId, EntityType = entityType, LoginUrl = loginUrl, - Comments = result.Items + Comments = result.Items.OrderByDescending(i=> i.CreationTime).ToList() }; return View("~/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml", viewModel); From f53630a9a1485d50ddff84a9b9e4729fb4fff9d7 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 31 Aug 2020 16:10:50 +0300 Subject: [PATCH 148/474] Cmskit comments new comment box placement --- .../Components/Commenting/Default.cshtml | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml index e8a26db102..ffedf136d9 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml @@ -110,8 +110,22 @@
      - @L["Comments"] + @L["Comments"]
      +
      @foreach (var comment in Model.Comments) {
      @@ -154,6 +168,7 @@ @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new { entityType = "comment", entityId = reply.Id.ToString() }) } + @GetCommentActionArea(reply.Id, reply.Author.Id, true, reply.Text).Invoke(null)
      @@ -163,19 +178,5 @@
    } -
    - @if (CurrentUser.IsAuthenticated) - { -
    - @GetCommentArea(null).Invoke(null) -
    - } - else if (!string.IsNullOrWhiteSpace(Model.LoginUrl)) - { - - } -
    From 1b86dba8d6b8ca8f9aa6c3f96d47666fe0798a8e Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 31 Aug 2020 16:29:38 +0300 Subject: [PATCH 149/474] cmskit comments reply button and textbox placement --- .../Components/Commenting/Default.cshtml | 187 +++++++++--------- .../Shared/Components/Commenting/default.js | 7 +- 2 files changed, 99 insertions(+), 95 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml index ffedf136d9..8cf2878d16 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml @@ -15,96 +15,99 @@ @{ Func GetCommentTitle(CmsUserDto author, DateTime creationTime) => - @ - - @((string.IsNullOrWhiteSpace(author.Name) + @ + + @((string.IsNullOrWhiteSpace(author.Name) ? author.UserName : author.Name + " " + author.Surname).Trim()) - @creationTime.ToString() - ; + @creationTime.ToString() + ; } @{ Func GetCommentArea(Guid? repliedCommentId, bool cancelButton = false) => - @
    -
    - -
    -
    -
    - + @
    + + +
    +
    +
    + +
    -
    -
    -
    - @if (cancelButton) - { - @L["Cancel"] - } - @L["Send"] +
    +
    + @if (cancelButton) + { + + @L["Cancel"] + + } + + @L["Send"] + +
    -
    - -
    ; + +
    ; } @{ Func GetCommentContentArea(Guid id, string text) => - @
    -
    -

    - @text -

    -
    -
    ; + @
    +
    +

    + @text +

    +
    +
    ; } @{ Func GetCommentActionArea(Guid id, Guid authorId, bool isReply, string text) => - @
    -
    - @if (!isReply) - { - @if (CurrentUser.IsAuthenticated) + @
    +
    + @if (!isReply) { - - @L["Reply"] - + @if (CurrentUser.IsAuthenticated) + { + + @L["Reply"] + + } + else + { + @L["LoginToReply"] + } } - else + @if (authorId == CurrentUser.Id) { - @L["LoginToReply"] - } - } - @if (authorId == CurrentUser.Id) - { - - - @L["Delete"] - + + @L["Delete"] + - - @L["Edit"] - - } -
    - + -
    ; +
    ; }
    @@ -112,20 +115,7 @@
    @L["Comments"]
    -
    - @if (CurrentUser.IsAuthenticated) - { -
    - @GetCommentArea(null).Invoke(null) -
    - } - else if (!string.IsNullOrWhiteSpace(Model.LoginUrl)) - { - - } -
    + @foreach (var comment in Model.Comments) {
    @@ -138,17 +128,11 @@ @if (cmsKitUiOptions.Value.CommentsOptions.IsReactionsEnabled && GlobalFeatureManager.Instance.IsEnabled()) { - @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), - new { entityType = "comment", entityId = comment.Id.ToString() }) + @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new {entityType = "comment", entityId = comment.Id.ToString()}) } @GetCommentActionArea(comment.Id, comment.Author.Id, false, comment.Text).Invoke(null) - @if (CurrentUser.IsAuthenticated) - { - @GetCommentArea(comment.Id, true).Invoke(null) - } - @if (comment.Replies.Any()) { @foreach (var reply in comment.Replies) @@ -165,8 +149,7 @@ @if (cmsKitUiOptions.Value.CommentsOptions.IsReactionsEnabled && GlobalFeatureManager.Instance.IsEnabled()) { - @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), - new { entityType = "comment", entityId = reply.Id.ToString() }) + @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new {entityType = "comment", entityId = reply.Id.ToString()}) } @GetCommentActionArea(reply.Id, reply.Author.Id, true, reply.Text).Invoke(null) @@ -174,7 +157,27 @@
    } + @if (comment.Replies.Count >= 5) + { +
    + @if (CurrentUser.IsAuthenticated) + { + + @L["Reply"] + + } + else + { + @L["LoginToReply"] + } +
    + } } + @if (CurrentUser.IsAuthenticated) + { + @GetCommentArea(comment.Id, true).Invoke(null) + } +
    } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/default.js b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/default.js index 2e6c8e0dac..99e6167b49 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/default.js +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/default.js @@ -58,10 +58,11 @@ var replyCommentId = $link.data('reply-id'); var $relatedCommentArea = $container.find('.cms-comment-form-area[data-reply-id=' + replyCommentId + ']'); + var $links = $container.find('.comment-reply-link[data-reply-id=' + replyCommentId + ']'); $relatedCommentArea.show(); $relatedCommentArea.find('textarea').focus(); - $link.removeAttr('href'); + $links.addClass('disabled'); }); }); $container.find('.reply-cancel-button').each(function () { @@ -72,10 +73,10 @@ var replyCommentId = $button.data('reply-id'); var $relatedCommentArea = $container.find('.cms-comment-form-area[data-reply-id=' + replyCommentId + ']'); - var $replyLink = $container.find('.comment-reply-link[data-reply-id=' + replyCommentId + ']'); + var $links = $container.find('.comment-reply-link[data-reply-id=' + replyCommentId + ']'); $relatedCommentArea.hide(); - $replyLink.attr('href', '#'); + $links.removeClass('disabled'); }); }); } From 420bf222998ae72242981e8bac589fc5058191df Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 31 Aug 2020 16:54:37 +0300 Subject: [PATCH 150/474] cmskit comment page refactor --- .../Components/Commenting/Default.cshtml | 98 +++++++++++-------- 1 file changed, 58 insertions(+), 40 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml index 8cf2878d16..ab7fc9805b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml @@ -64,34 +64,37 @@
    ; } @{ - Func GetCommentActionArea(Guid id, Guid authorId, bool isReply, string text) => - @
    -
    - @if (!isReply) + Func GetCommentActionArea(Guid id, Guid authorId, bool isReply) => + @
    + @if (!isReply) + { + @if (CurrentUser.IsAuthenticated) { - @if (CurrentUser.IsAuthenticated) - { - - @L["Reply"] - - } - else - { - @L["LoginToReply"] - } + + @L["Reply"] + } - @if (authorId == CurrentUser.Id) + else { - - @L["Delete"] - + @L["LoginToReply"] + } + } + @if (authorId == CurrentUser.Id) + { + + @L["Delete"] + - - @L["Edit"] - - } -
    + + @L["Edit"] + + } +
    ; +} +@{ + Func GetEditArea(Guid id, string text) => + @
    @@ -160,23 +178,23 @@ @if (comment.Replies.Count >= 5) {
    - @if (CurrentUser.IsAuthenticated) - { - - @L["Reply"] - - } - else - { - @L["LoginToReply"] - } + @if (CurrentUser.IsAuthenticated) + { + + @L["Reply"] + + } + else + { + @L["LoginToReply"] + }
    } } - @if (CurrentUser.IsAuthenticated) - { - @GetCommentArea(comment.Id, true).Invoke(null) - } + @if (CurrentUser.IsAuthenticated) + { + @GetCommentArea(comment.Id, true).Invoke(null) + }
    From e0c46f9434b13961570cd0a21285768005bb1643 Mon Sep 17 00:00:00 2001 From: EngincanV Date: Mon, 31 Aug 2020 17:59:52 +0300 Subject: [PATCH 151/474] CmsKit: enhancement after reviewing --- .../CmsKitWebUnifiedModule.cs | 1 + .../Volo/CmsKit/Ratings/RatingConsts.cs | 4 + .../Volo/CmsKit/Ratings/IRatingRepository.cs | 6 -- .../Volo/CmsKit/Ratings/Rating.cs | 2 +- .../CmsKitDbContextModelCreatingExtensions.cs | 2 +- .../CmsKit/Ratings/EfCoreRatingRepository.cs | 12 --- .../MongoDB/Ratings/MongoRatingRepository.cs | 12 --- ...ingInput.cs => CreateUpdateRatingInput.cs} | 4 +- .../Public/Ratings/IRatingPublicAppService.cs | 8 +- .../Public/Ratings/RatingWithStarCountDto.cs | 2 + .../Public/Ratings/UpdateRatingInput.cs | 10 -- .../PublicApplicationAutoMapperProfile.cs | 2 - .../Public/Ratings/RatingPublicAppService.cs | 69 ++++++------ .../Public/Ratings/RatingPublicController.cs | 26 +---- .../Shared/Components/Rating/Default.cshtml | 6 +- .../Components/Rating/RatingViewComponent.cs | 8 +- .../Shared/Components/Rating/default.js | 100 ++++++++++-------- .../Volo.CmsKit.Public.Web.csproj | 4 - .../Ratings/RatingPublicAppService_Tests.cs | 70 ++++++++---- .../Ratings/RatingRepository_Tests.cs | 8 -- 20 files changed, 168 insertions(+), 188 deletions(-) rename modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/{CreateRatingInput.cs => CreateUpdateRatingInput.cs} (63%) delete mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/UpdateRatingInput.cs diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs index 08dadb3dd6..e5d9f23c05 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs @@ -1,4 +1,5 @@ using System.IO; +using System.Linq; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs index 892b3cef45..27fa9d7584 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs @@ -7,5 +7,9 @@ namespace Volo.CmsKit.Ratings public static int MaxEntityTypeLength { get; set; } = CmsEntityConsts.MaxEntityTypeLength; public static int MaxEntityIdLength { get; set; } = CmsEntityConsts.MaxEntityIdLength; + + public static int MaxRating { get; set; } = 5; + + public static int MinRating { get; set; } = 0; } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs index 29ce07df63..a9f71b0dfb 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/IRatingRepository.cs @@ -9,12 +9,6 @@ namespace Volo.CmsKit.Ratings { public interface IRatingRepository : IBasicRepository { - Task> GetListAsync( - [NotNull] string entityType, - [NotNull] string entityId, - CancellationToken cancellationToken = default - ); - Task GetCurrentUserRatingAsync( [NotNull] string entityType, [NotNull] string entityId, diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs index 4567b5d275..75f0499db3 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs @@ -44,7 +44,7 @@ namespace Volo.CmsKit.Ratings public virtual void SetStarCount(short starCount) { - if(starCount <= 5 && starCount > 0) + if(starCount <= RatingConsts.MaxRating && starCount > RatingConsts.MinRating) { StarCount = starCount; } 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 d73f60967a..adda59c3e2 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 @@ -85,7 +85,7 @@ namespace Volo.CmsKit.EntityFrameworkCore r.Property(x => x.EntityType).IsRequired().HasMaxLength(RatingConsts.MaxEntityTypeLength); r.Property(x => x.EntityId).IsRequired().HasMaxLength(RatingConsts.MaxEntityIdLength); - r.HasIndex(x => new {x.TenantId, x.EntityType, x.EntityId}); + r.HasIndex(x => new {x.TenantId, x.EntityType, x.EntityId, x.CreatorId}); }); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs index 577f2e3a7d..810335b4d6 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Ratings/EfCoreRatingRepository.cs @@ -18,18 +18,6 @@ namespace Volo.CmsKit.Ratings { } - public async Task> GetListAsync(string entityType, string entityId, - CancellationToken cancellationToken = default) - { - Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); - Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); - - var query = DbSet.Where(r => r.EntityType == entityType && r.EntityId == entityId); - var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken)); - - return ratings; - } - public async Task GetCurrentUserRatingAsync(string entityType, string entityId, Guid userId, CancellationToken cancellationToken = default) { diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs index ecf389cde7..92f7f992da 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Ratings/MongoRatingRepository.cs @@ -19,18 +19,6 @@ namespace Volo.CmsKit.MongoDB.Ratings { } - public async Task> GetListAsync(string entityType, string entityId, - CancellationToken cancellationToken = default) - { - Check.NotNullOrWhiteSpace(entityType, nameof(entityType)); - Check.NotNullOrWhiteSpace(entityId, nameof(entityId)); - - var query = GetMongoQueryable().Where(r => r.EntityType == entityType && r.EntityId == entityId); - var ratings = await query.ToListAsync(GetCancellationToken(cancellationToken)); - - return ratings; - } - public async Task GetCurrentUserRatingAsync(string entityType, string entityId, Guid userId, CancellationToken cancellationToken = default) { diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateRatingInput.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs similarity index 63% rename from modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateRatingInput.cs rename to modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs index 88b53d5b0c..3018ed8b30 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateRatingInput.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs @@ -2,9 +2,9 @@ namespace Volo.CmsKit.Public.Ratings { - public class CreateRatingInput + public class CreateUpdateRatingInput { - [Required] + [Required, Range(1, 5)] public short StarCount { get; set; } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs index 9e4c8c1f11..aa0aba48b4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/IRatingPublicAppService.cs @@ -8,13 +8,9 @@ namespace Volo.CmsKit.Public.Ratings { public interface IRatingPublicAppService : IApplicationService { - Task> GetListAsync(string entityType, string entityId); - - Task CreateAsync(string entityType, string entityId, CreateRatingInput input); - - Task UpdateAsync(Guid id, UpdateRatingInput input); + Task CreateAsync(string entityType, string entityId, CreateUpdateRatingInput input); - Task DeleteAsync(Guid id); + Task DeleteAsync(string entityType, string entityId); Task GetCurrentUserRatingAsync(string entityType, string entityId); diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingWithStarCountDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingWithStarCountDto.cs index e8f60ea49b..981ef2bd6e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingWithStarCountDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/RatingWithStarCountDto.cs @@ -5,5 +5,7 @@ public short StarCount { get; set; } public int Count { get; set; } + + public bool IsSelectedByCurrentUser { get; set; } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/UpdateRatingInput.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/UpdateRatingInput.cs deleted file mode 100644 index e2f77122d4..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/UpdateRatingInput.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace Volo.CmsKit.Public.Ratings -{ - public class UpdateRatingInput - { - [Required] - public short StarCount { get; set; } - } -} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs index 0a0a5403b1..3ac2d1949b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs @@ -22,8 +22,6 @@ namespace Volo.CmsKit.Public .Ignore(x=> x.Author); CreateMap(); - - CreateMap(); } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs index 7621924727..848dbeda28 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Ratings/RatingPublicAppService.cs @@ -22,18 +22,22 @@ namespace Volo.CmsKit.Public.Ratings CmsUserLookupService = cmsUserLookupService; } - public virtual async Task> GetListAsync(string entityType, string entityId) + [Authorize] + public virtual async Task CreateAsync(string entityType, string entityId, + CreateUpdateRatingInput input) { - var ratings = await RatingRepository.GetListAsync(entityType, entityId); - var ratingDto = ObjectMapper.Map, List>(ratings); + var userId = CurrentUser.GetId(); + var user = await CmsUserLookupService.GetByIdAsync(userId); - return new ListResultDto(ratingDto); - } + var currentUserRating = await RatingRepository.GetCurrentUserRatingAsync(entityType, entityId, userId); - [Authorize] - public virtual async Task CreateAsync(string entityType, string entityId, CreateRatingInput input) - { - var user = await CmsUserLookupService.GetByIdAsync(CurrentUser.GetId()); + if (currentUserRating != null) + { + currentUserRating.SetStarCount(input.StarCount); + var updatedRating = await RatingRepository.UpdateAsync(currentUserRating); + + return ObjectMapper.Map(updatedRating); + } var rating = await RatingRepository.InsertAsync( new Rating( @@ -50,50 +54,51 @@ namespace Volo.CmsKit.Public.Ratings } [Authorize] - public virtual async Task UpdateAsync(Guid id, UpdateRatingInput input) - { - var rating = await RatingRepository.GetAsync(id); - - if (rating.CreatorId != CurrentUser.GetId()) - { - throw new AbpAuthorizationException(); - } - - rating.SetStarCount(input.StarCount); - - var updatedRating = await RatingRepository.UpdateAsync(rating); - - return ObjectMapper.Map(updatedRating); - } - - [Authorize] - public virtual async Task DeleteAsync(Guid id) + public virtual async Task DeleteAsync(string entityType, string entityId) { - var rating = await RatingRepository.GetAsync(id); + var rating = await RatingRepository.GetCurrentUserRatingAsync(entityType, entityId, CurrentUser.GetId()); if (rating.CreatorId != CurrentUser.GetId()) { throw new AbpAuthorizationException(); } - await RatingRepository.DeleteAsync(id); + await RatingRepository.DeleteAsync(rating.Id); } [Authorize] public virtual async Task GetCurrentUserRatingAsync(string entityType, string entityId) { var currentUserId = CurrentUser.GetId(); - + var rating = await RatingRepository.GetCurrentUserRatingAsync(entityType, entityId, currentUserId); return ObjectMapper.Map(rating); } - public virtual async Task> GetGroupedStarCountsAsync(string entityType, string entityId) + public virtual async Task> GetGroupedStarCountsAsync(string entityType, + string entityId) { var ratings = await RatingRepository.GetGroupedStarCountsAsync(entityType, entityId); - return ObjectMapper.Map, List>(ratings); + var userRatingOrNull = CurrentUser.IsAuthenticated + ? await RatingRepository.GetCurrentUserRatingAsync(entityType, entityId, CurrentUser.GetId()) + : null; + + var ratingWithStarCountDto = new List(); + + foreach (var rating in ratings) + { + ratingWithStarCountDto.Add( + new RatingWithStarCountDto + { + StarCount = rating.StarCount, + Count = rating.Count, + IsSelectedByCurrentUser = userRatingOrNull != null && userRatingOrNull.StarCount == rating.StarCount + }); + } + + return ratingWithStarCountDto; } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs index 25cc40ea5a..e136c4564d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Ratings/RatingPublicController.cs @@ -1,9 +1,7 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp; -using Volo.Abp.Application.Dtos; using Volo.Abp.GlobalFeatures; using Volo.CmsKit.GlobalFeatures; @@ -22,32 +20,18 @@ namespace Volo.CmsKit.Public.Ratings RatingPublicAppService = ratingPublicAppService; } - [HttpGet] - [Route("{entityType}/{entityId}")] - public virtual Task> GetListAsync(string entityType, string entityId) - { - return RatingPublicAppService.GetListAsync(entityType, entityId); - } - [HttpPut] [Route("{entityType}/{entityId}")] - public virtual Task CreateAsync(string entityType, string entityId, CreateRatingInput input) + public virtual Task CreateAsync(string entityType, string entityId, CreateUpdateRatingInput input) { return RatingPublicAppService.CreateAsync(entityType, entityId, input); } - [HttpPut] - [Route("{id}")] - public virtual Task UpdateAsync(Guid id, UpdateRatingInput input) - { - return RatingPublicAppService.UpdateAsync(id, input); - } - [HttpDelete] - [Route("{id}")] - public virtual Task DeleteAsync(Guid id) + [Route("{entityType}/{entityId}")] + public virtual Task DeleteAsync(string entityType, string entityId) { - return RatingPublicAppService.DeleteAsync(id); + return RatingPublicAppService.DeleteAsync(entityType, entityId); } [HttpGet] diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml index 51c47f93de..b5cfbbfaa9 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml @@ -9,11 +9,11 @@ @if (CurrentUser.IsAuthenticated) {
    - - @(Model.CurrentRating != null ? Model.CurrentRating.StarCount + " | " : 0 + "") + + @(Model.CurrentRating != null ? Model.CurrentRating + " | " : 0 + "") @if (Model.CurrentRating != null) { - + @L["Undo"] } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs index 7c458d033b..aabbd3c286 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs @@ -34,11 +34,11 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating { var ratings = await RatingPublicAppService.GetGroupedStarCountsAsync(entityType, entityId); var totalRating = ratings.Sum(x => x.Count); - - RatingDto currentUserRating = null; + + short? currentUserRating = null; if (CurrentUser.IsAuthenticated) { - currentUserRating = await RatingPublicAppService.GetCurrentUserRatingAsync(entityType, entityId); + currentUserRating = ratings.Find(x => x.IsSelectedByCurrentUser)?.StarCount; } var loginUrl = @@ -68,7 +68,7 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating public List Ratings { get; set; } - public RatingDto CurrentRating { get; set; } + public short? CurrentRating { get; set; } public int TotalRating { get; set; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js index 2835e57a3c..4416d7fb48 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js @@ -1,81 +1,89 @@ (function () { var l = abp.localization.getResource("CmsKit"); - + $(document).ready(function () { abp.widgets.CmsRating = function ($widget) { var widgetManager = $widget.data("abp-widget-manager"); var $ratingArea = $widget.find(".cms-rating-area"); - + function getFilters() { return { entityType: $ratingArea.attr("data-entity-type"), entityId: $ratingArea.attr("data-entity-id") }; } - + function registerCreateOfNewRating() { - var authenticated = $(".my-rating-5").attr("data-authenticated"); + $widget.find(".my-rating-5").each(function () { + var authenticated = $(this).attr("data-authenticated"); - $(".my-rating-5").starRating({ - initialRating: 0, - disableAfterRate: true, - useFullStars: true, - readOnly: authenticated === "True", - onHover: function(currentIndex, currentRating, $el) { - $(".live-rating").text(currentIndex); - }, - onLeave: function(currentIndex, currentRating, $el) { - $(".live-rating").text(currentRating); - }, - callback: function(currentRating, $el) { - volo.cmsKit.public.ratings.ratingPublic.create( - $ratingArea.attr("data-entity-type"), - $ratingArea.attr("data-entity-id"), - { - starCount: parseInt(currentRating) + $(this).starRating({ + initialRating: 0, + disableAfterRate: true, + useFullStars: true, + readOnly: authenticated === "True", + onHover: function (currentIndex, currentRating, $el) { + $widget.find(".live-rating").text(currentIndex); + }, + onLeave: function (currentIndex, currentRating, $el) { + $widget.find(".live-rating").text(currentRating); + }, + callback: function (currentRating, $el) { + volo.cmsKit.public.ratings.ratingPublic.create( + $ratingArea.attr("data-entity-type"), + $ratingArea.attr("data-entity-id"), + { + starCount: parseInt(currentRating) + } + ).then(function () { + widgetManager.refresh($widget); + }) } - ).then(function () { - widgetManager.refresh($widget); - }) + }); } - }); + ); } - + function registerUndoLink() { - $(".rating-undo-link").on('click', '', function (e) { - e.preventDefault(); - - abp.message.confirm(l("RatingUndoMessage"), function (ok) { - if(ok) { - var id = $(".rating-undo-link").attr("data-id"); - volo.cmsKit.public.ratings.ratingPublic.delete( - id - ).then(function () { - widgetManager.refresh($widget); - }); - } - }) + $widget.find(".rating-undo-link").each(function () { + $(this).on('click', '', function (e) { + e.preventDefault(); + + abp.message.confirm(l("RatingUndoMessage"), function (ok) { + if (ok) { + volo.cmsKit.public.ratings.ratingPublic.delete( + $ratingArea.attr("data-entity-type"), + $ratingArea.attr("data-entity-id") + ).then(function () { + widgetManager.refresh($widget); + }); + } + }) + }); }); } - + function init() { registerCreateOfNewRating(); registerUndoLink(); } - + return { init: init, getFilters: getFilters } - }; - + } + ; + $('.abp-widget-wrapper[data-widget-name="CmsRating"]') .each(function () { var widgetManager = new abp.WidgetManager({ wrapper: $(this), }); - + widgetManager.init($(this)); }); - }); -})(jQuery); \ No newline at end of file + }) + ; +}) +(jQuery); \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj index 3d52f544e0..6d2f8ff303 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj @@ -27,10 +27,6 @@ - - true - PreserveNewest - diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Ratings/RatingPublicAppService_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Ratings/RatingPublicAppService_Tests.cs index 1a21da8425..c8f2acd950 100644 --- a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Ratings/RatingPublicAppService_Tests.cs +++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Ratings/RatingPublicAppService_Tests.cs @@ -1,5 +1,6 @@ using System.Linq; using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using NSubstitute; using Shouldly; @@ -34,8 +35,8 @@ namespace Volo.CmsKit.Ratings var newRating = await _ratingAppService.CreateAsync( _cmsKitTestData.EntityType1, - _cmsKitTestData.EntityId1, - new CreateRatingInput + _cmsKitTestData.EntityId2, + new CreateUpdateRatingInput { StarCount = 4 }); @@ -44,53 +45,86 @@ namespace Volo.CmsKit.Ratings { var ratings = context.Set().Where(x => x.EntityId == _cmsKitTestData.EntityId1 && x.EntityType == _cmsKitTestData.EntityType1).ToList(); - + ratings - .Any(c => c.Id == newRating.Id && c.CreatorId == newRating.CreatorId && c.StarCount == newRating.StarCount) + .Any(c => c.Id == newRating.Id && c.CreatorId == newRating.CreatorId && + c.StarCount == newRating.StarCount) .ShouldBeTrue(); }); } [Fact] - public async Task UpdateAsync() + public async Task CreateAsync_Should_Update_If_Rating_Is_Exist() { _currentUser.Id.Returns(_cmsKitTestData.User1Id); - var rating = await _ratingAppService.CreateAsync( + var entity = + await _ratingAppService.GetCurrentUserRatingAsync(_cmsKitTestData.EntityType1, + _cmsKitTestData.EntityId1); + + var updatedEntity = await _ratingAppService.CreateAsync( _cmsKitTestData.EntityType1, _cmsKitTestData.EntityId1, - new CreateRatingInput + new CreateUpdateRatingInput { - StarCount = 4 + StarCount = 5 }); - await _ratingAppService.UpdateAsync(rating.Id, new UpdateRatingInput - { - StarCount = 5 - }); + entity.Id.ShouldBe(updatedEntity.Id); + entity.EntityId.ShouldBe(updatedEntity.EntityId); + entity.EntityType.ShouldBe(updatedEntity.EntityType); + entity.StarCount.ShouldBe(updatedEntity.StarCount); + } + + [Fact] + public async Task GetCurrentUserRatingAsync() + { + _currentUser.Id.Returns(_cmsKitTestData.User1Id); + + var rating = await _ratingAppService.GetCurrentUserRatingAsync( + _cmsKitTestData.EntityType1, + _cmsKitTestData.EntityId1 + ); UsingDbContext(context => { - var updatedRating = context.Set().Single(x => x.Id == rating.Id); - - updatedRating.StarCount.ShouldBe((short)5); + var ratings = context.Set().Where(x => + x.EntityId == _cmsKitTestData.EntityId1 && x.EntityType == _cmsKitTestData.EntityType1).ToList(); + + ratings + .Any(c => c.Id == rating.Id && c.EntityId == rating.EntityId && c.EntityType == rating.EntityType) + .ShouldBeTrue(); }); } + [Fact] + public async Task GetGroupedStarCountsAsync() + { + _currentUser.Id.Returns(_cmsKitTestData.User1Id); + + var ratings = await _ratingAppService.GetGroupedStarCountsAsync( + _cmsKitTestData.EntityType1, + _cmsKitTestData.EntityId1 + ); + + ratings.ShouldNotBeNull(); + ratings.Count.ShouldBeGreaterThan(0); + } + [Fact] public async Task DeleteAsync() { _currentUser.Id.Returns(_cmsKitTestData.User1Id); - + var rating = await _ratingAppService.CreateAsync( _cmsKitTestData.EntityType1, _cmsKitTestData.EntityId1, - new CreateRatingInput + new CreateUpdateRatingInput { StarCount = 4 }); - await _ratingAppService.DeleteAsync(rating.Id); + await _ratingAppService.DeleteAsync(_cmsKitTestData.EntityType1, _cmsKitTestData.EntityId1); UsingDbContext(context => { diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/Ratings/RatingRepository_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.TestBase/Ratings/RatingRepository_Tests.cs index b09b380f8e..19da73cf50 100644 --- a/modules/cms-kit/test/Volo.CmsKit.TestBase/Ratings/RatingRepository_Tests.cs +++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/Ratings/RatingRepository_Tests.cs @@ -17,14 +17,6 @@ namespace Volo.CmsKit.Ratings _ratingRepository = GetRequiredService(); } - [Fact] - public async Task GetListAsync() - { - var list = await _ratingRepository.GetListAsync(_cmsKitTestData.EntityType1, _cmsKitTestData.EntityId1); - - list.Count.ShouldBeGreaterThan(0); - } - [Fact] public async Task GetCurrentUserRatingAsync() { From 7fc3e560db76189aeba1a545e525c5b078ebacee Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Mon, 31 Aug 2020 18:01:07 +0300 Subject: [PATCH 152/474] MongoDb not updating user organization data bug fix --- .../Volo/Abp/Identity/IdentityUserManager.cs | 49 +++++++++------ .../OrganizationUnitRepository_Tests.cs | 63 ++++++++++++++++--- 2 files changed, 86 insertions(+), 26 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs index 24d3f92774..69376958b7 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs @@ -43,15 +43,15 @@ namespace Volo.Abp.Identity IOrganizationUnitRepository organizationUnitRepository, ISettingProvider settingProvider) : base( - store, - optionsAccessor, - passwordHasher, - userValidators, - passwordValidators, - keyNormalizer, - errors, - services, - logger) + store, + optionsAccessor, + passwordHasher, + userValidators, + passwordValidators, + keyNormalizer, + errors, + services, + logger) { OrganizationUnitRepository = organizationUnitRepository; SettingProvider = settingProvider; @@ -71,7 +71,8 @@ namespace Volo.Abp.Identity return user; } - public virtual async Task SetRolesAsync([NotNull] IdentityUser user, [NotNull] IEnumerable roleNames) + public virtual async Task SetRolesAsync([NotNull] IdentityUser user, + [NotNull] IEnumerable roleNames) { Check.NotNull(user, nameof(user)); Check.NotNull(roleNames, nameof(roleNames)); @@ -101,7 +102,8 @@ namespace Volo.Abp.Identity public virtual async Task IsInOrganizationUnitAsync(IdentityUser user, OrganizationUnit ou) { - await UserRepository.EnsureCollectionLoadedAsync(user, u => u.OrganizationUnits, CancellationTokenProvider.Token); + await UserRepository.EnsureCollectionLoadedAsync(user, u => u.OrganizationUnits, + CancellationTokenProvider.Token); return user.IsInOrganizationUnit(ou.Id); } @@ -110,12 +112,13 @@ namespace Volo.Abp.Identity await AddToOrganizationUnitAsync( await UserRepository.GetAsync(userId, cancellationToken: CancellationToken), await OrganizationUnitRepository.GetAsync(ouId, cancellationToken: CancellationToken) - ); + ); } public virtual async Task AddToOrganizationUnitAsync(IdentityUser user, OrganizationUnit ou) { - await UserRepository.EnsureCollectionLoadedAsync(user, u => u.OrganizationUnits, CancellationTokenProvider.Token); + await UserRepository.EnsureCollectionLoadedAsync(user, u => u.OrganizationUnits, + CancellationTokenProvider.Token); if (user.OrganizationUnits.Any(cou => cou.OrganizationUnitId == ou.Id)) { @@ -125,19 +128,23 @@ namespace Volo.Abp.Identity await CheckMaxUserOrganizationUnitMembershipCountAsync(user.OrganizationUnits.Count + 1); user.AddOrganizationUnit(ou.Id); + await UserRepository.UpdateAsync(user, cancellationToken: CancellationToken); } public virtual async Task RemoveFromOrganizationUnitAsync(Guid userId, Guid ouId) { var user = await UserRepository.GetAsync(userId, cancellationToken: CancellationToken); user.RemoveOrganizationUnit(ouId); + await UserRepository.UpdateAsync(user, cancellationToken: CancellationToken); } public virtual async Task RemoveFromOrganizationUnitAsync(IdentityUser user, OrganizationUnit ou) { - await UserRepository.EnsureCollectionLoadedAsync(user, u => u.OrganizationUnits, CancellationTokenProvider.Token); + await UserRepository.EnsureCollectionLoadedAsync(user, u => u.OrganizationUnits, + CancellationTokenProvider.Token); user.RemoveOrganizationUnit(ou.Id); + await UserRepository.UpdateAsync(user, cancellationToken: CancellationToken); } public virtual async Task SetOrganizationUnitsAsync(Guid userId, params Guid[] organizationUnitIds) @@ -155,7 +162,8 @@ namespace Volo.Abp.Identity await CheckMaxUserOrganizationUnitMembershipCountAsync(organizationUnitIds.Length); - await UserRepository.EnsureCollectionLoadedAsync(user, u => u.OrganizationUnits, CancellationTokenProvider.Token); + await UserRepository.EnsureCollectionLoadedAsync(user, u => u.OrganizationUnits, + CancellationTokenProvider.Token); //Remove from removed OUs foreach (var ouId in user.OrganizationUnits.Select(uou => uou.OrganizationUnitId).ToArray()) @@ -174,11 +182,14 @@ namespace Volo.Abp.Identity user.AddOrganizationUnit(organizationUnitId); } } + + await UserRepository.UpdateAsync(user, cancellationToken: CancellationToken); } private async Task CheckMaxUserOrganizationUnitMembershipCountAsync(int requestedCount) { - var maxCount = await SettingProvider.GetAsync(IdentitySettingNames.OrganizationUnit.MaxUserMembershipCount); + var maxCount = + await SettingProvider.GetAsync(IdentitySettingNames.OrganizationUnit.MaxUserMembershipCount); if (requestedCount > maxCount) { throw new BusinessException(IdentityErrorCodes.MaxAllowedOuMembership) @@ -187,9 +198,11 @@ namespace Volo.Abp.Identity } [UnitOfWork] - public virtual async Task> GetOrganizationUnitsAsync(IdentityUser user, bool includeDetails = false) + public virtual async Task> GetOrganizationUnitsAsync(IdentityUser user, + bool includeDetails = false) { - await UserRepository.EnsureCollectionLoadedAsync(user, u => u.OrganizationUnits, CancellationTokenProvider.Token); + await UserRepository.EnsureCollectionLoadedAsync(user, u => u.OrganizationUnits, + CancellationTokenProvider.Token); return await OrganizationUnitRepository.GetListAsync( user.OrganizationUnits.Select(t => t.OrganizationUnitId), diff --git a/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs b/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs index 0e6717f29c..f4a2d46528 100644 --- a/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs @@ -20,7 +20,7 @@ namespace Volo.Abp.Identity private readonly IdentityTestData _testData; private readonly IGuidGenerator _guidGenerator; private readonly OrganizationUnitManager _organizationUnitManager; - private readonly IIdentityRoleRepository _identityRoleRepository; + private readonly IdentityUserManager _identityUserManager; private readonly IUnitOfWorkManager _unitOfWorkManager; private readonly IIdentityUserRepository _identityUserRepository; @@ -31,7 +31,7 @@ namespace Volo.Abp.Identity _testData = GetRequiredService(); _guidGenerator = GetRequiredService(); _organizationUnitManager = GetRequiredService(); - _identityRoleRepository = GetRequiredService(); + _identityUserManager = GetRequiredService(); _unitOfWorkManager = GetRequiredService(); _identityUserRepository = GetRequiredService(); } @@ -45,19 +45,63 @@ namespace Volo.Abp.Identity [Fact] public async Task GetAllChildrenWithParentCodeAsync() { - (await _organizationUnitRepository.GetAllChildrenWithParentCodeAsync(OrganizationUnit.CreateCode(0), _guidGenerator.Create())).ShouldNotBeNull(); + (await _organizationUnitRepository.GetAllChildrenWithParentCodeAsync(OrganizationUnit.CreateCode(0), + _guidGenerator.Create())).ShouldNotBeNull(); } [Fact] public async Task GetListAsync() { var ouIds = (await _organizationUnitRepository.GetListAsync(includeDetails: true)) - .Select(ou => ou.Id).Take(2); + .Select(ou => ou.Id).Take(2); var ous = await _organizationUnitRepository.GetListAsync(ouIds); ous.Count.ShouldBe(2); ous.ShouldContain(ou => ou.Id == ouIds.First()); } + [Fact] + public async Task AddMemberToOrganizationUnit() + { + using (var uow = _unitOfWorkManager.Begin()) + { + var ou111 = await _organizationUnitRepository.GetAsync( + _lookupNormalizer.NormalizeName("OU111")); + var user = await _identityUserRepository.FindByNormalizedUserNameAsync( + _lookupNormalizer.NormalizeName("david")); + user.ShouldNotBeNull(); + + user.OrganizationUnits.Count.ShouldBe(1); + await _identityUserManager.AddToOrganizationUnitAsync(user.Id, ou111.Id); + + await uow.CompleteAsync(); + } + + var updatedUser = await _identityUserRepository.FindByNormalizedUserNameAsync( + _lookupNormalizer.NormalizeName("david")); + updatedUser.OrganizationUnits.Count.ShouldBe(2); + } + [Fact] + public async Task RemoveOrganizationUnitFromUser() + { + using (var uow = _unitOfWorkManager.Begin()) + { + var ou112 = await _organizationUnitRepository.GetAsync( + _lookupNormalizer.NormalizeName("OU112")); + var user = await _identityUserRepository.FindByNormalizedUserNameAsync( + _lookupNormalizer.NormalizeName("david")); + + user.OrganizationUnits.Count.ShouldBe(1); + user.OrganizationUnits.ShouldContain(q=>q.OrganizationUnitId == ou112.Id); + + await _identityUserManager.RemoveFromOrganizationUnitAsync(user.Id, ou112.Id); + await uow.CompleteAsync(); + } + + var updatedUser = await _identityUserRepository.FindByNormalizedUserNameAsync( + _lookupNormalizer.NormalizeName("david")); + updatedUser.OrganizationUnits.Count.ShouldBe(0); + } + [Fact] public async Task GetOrganizationUnitAsync() { @@ -79,6 +123,7 @@ namespace Volo.Abp.Identity ou.Roles.ShouldNotBeNull(); ou.Roles.Any().ShouldBeTrue(); } + [Fact] public async Task GetOrganizationUnitRolesAsync() { @@ -95,7 +140,8 @@ namespace Volo.Abp.Identity { OrganizationUnit ou = await _organizationUnitRepository.GetAsync("OU111", includeDetails: true); - var ou111Roles = await _organizationUnitRepository.GetRolesAsync(ou, sorting: "name desc", maxResultCount: 1, includeDetails: true); + var ou111Roles = await _organizationUnitRepository.GetRolesAsync(ou, sorting: "name desc", + maxResultCount: 1, includeDetails: true); ou111Roles.Count.ShouldBe(1); ou111Roles.ShouldContain(n => n.Name == "moderator"); } @@ -105,9 +151,10 @@ namespace Volo.Abp.Identity { OrganizationUnit ou1 = await _organizationUnitRepository.GetAsync("OU111", true); OrganizationUnit ou2 = await _organizationUnitRepository.GetAsync("OU112", true); - var users = await _identityUserRepository.GetUsersInOrganizationsListAsync(new List { ou1.Id, ou2.Id }); + var users = await _identityUserRepository.GetUsersInOrganizationsListAsync(new List {ou1.Id, ou2.Id}); users.Count.ShouldBeGreaterThan(0); } + [Fact] public async Task GetMembersInOrganizationUnitWithParamsAsync() { @@ -147,12 +194,12 @@ namespace Volo.Abp.Identity public async Task GetMembersCountOfOrganizationUnitWithParamsAsync() { OrganizationUnit ou = await _organizationUnitRepository.GetAsync("OU111", true); - var usersCount = await _organizationUnitRepository.GetMembersCountAsync(ou,"n"); + var usersCount = await _organizationUnitRepository.GetMembersCountAsync(ou, "n"); usersCount.ShouldBeGreaterThan(1); usersCount.ShouldBeLessThanOrEqualTo(5); - usersCount = await _organizationUnitRepository.GetMembersCountAsync(ou,"undefined-username"); + usersCount = await _organizationUnitRepository.GetMembersCountAsync(ou, "undefined-username"); usersCount.ShouldBe(0); } From 55209702f14be32df43d9da86e9ad18b87dc9bbe Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Mon, 31 Aug 2020 18:26:51 +0300 Subject: [PATCH 153/474] Fixed OrganizationUnit where user is not updated when roles are added/removed --- .../Abp/Identity/OrganizationUnitManager.cs | 8 ++-- .../OrganizationUnitRepository_Tests.cs | 43 ++++++++++++++++++- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs index 9db3ff4581..4706f92428 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs @@ -54,8 +54,8 @@ namespace Volo.Abp.Identity return OrganizationUnit.CalculateNextCode(lastChild.Code); } - var parentCode = parentId != null - ? await GetCodeOrDefaultAsync(parentId.Value) + var parentCode = parentId != null + ? await GetCodeOrDefaultAsync(parentId.Value) : null; return OrganizationUnit.AppendCode( @@ -174,7 +174,7 @@ namespace Volo.Abp.Identity return Task.FromResult(0); } ou.AddRole(role.Id); - return Task.FromResult(0); + return OrganizationUnitRepository.UpdateAsync(ou); } public virtual async Task RemoveRoleFromOrganizationUnitAsync(Guid roleId, Guid ouId) @@ -188,7 +188,7 @@ namespace Volo.Abp.Identity public virtual Task RemoveRoleFromOrganizationUnitAsync(IdentityRole role, OrganizationUnit organizationUnit) { organizationUnit.RemoveRole(role.Id); - return Task.FromResult(0); + return OrganizationUnitRepository.UpdateAsync(organizationUnit); } } } diff --git a/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs b/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs index f4a2d46528..bb8300d449 100644 --- a/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs @@ -16,6 +16,7 @@ namespace Volo.Abp.Identity where TStartupModule : IAbpModule { private readonly IOrganizationUnitRepository _organizationUnitRepository; + private readonly IIdentityRoleRepository _identityRoleRepository; private readonly ILookupNormalizer _lookupNormalizer; private readonly IdentityTestData _testData; private readonly IGuidGenerator _guidGenerator; @@ -27,6 +28,7 @@ namespace Volo.Abp.Identity public OrganizationUnitRepository_Tests() { _organizationUnitRepository = ServiceProvider.GetRequiredService(); + _identityRoleRepository = ServiceProvider.GetRequiredService(); _lookupNormalizer = ServiceProvider.GetRequiredService(); _testData = GetRequiredService(); _guidGenerator = GetRequiredService(); @@ -80,6 +82,45 @@ namespace Volo.Abp.Identity _lookupNormalizer.NormalizeName("david")); updatedUser.OrganizationUnits.Count.ShouldBe(2); } + + [Fact] + public async Task AddRoleToOrganizationUnit() + { + using (var uow = _unitOfWorkManager.Begin()) + { + var ou111 = await _organizationUnitRepository.GetAsync( + _lookupNormalizer.NormalizeName("OU111")); + ou111.Roles.Count.ShouldBe(2); + var roleSupporter = await _identityRoleRepository.FindByNormalizedNameAsync( + _lookupNormalizer.NormalizeName("supporter")); + + await _organizationUnitManager.AddRoleToOrganizationUnitAsync(roleSupporter.Id, ou111.Id); + await uow.CompleteAsync(); + } + + var ou111Updated = await _organizationUnitRepository.GetAsync( + _lookupNormalizer.NormalizeName("OU111")); + ou111Updated.Roles.Count.ShouldBeGreaterThan(2); + } + + [Fact] + public async Task RemoveRoleFromOrganizationUnit() + { + using (var uow = _unitOfWorkManager.Begin()) + { + var ou111 = await _organizationUnitRepository.GetAsync( + _lookupNormalizer.NormalizeName("OU111")); + ou111.Roles.ShouldContain(q => q.RoleId == _testData.RoleModeratorId); + + await _organizationUnitManager.RemoveRoleFromOrganizationUnitAsync(_testData.RoleModeratorId, ou111.Id); + await uow.CompleteAsync(); + } + + var ou111Updated = await _organizationUnitRepository.GetAsync( + _lookupNormalizer.NormalizeName("OU111")); + ou111Updated.Roles.ShouldNotContain(q => q.RoleId == _testData.RoleModeratorId); + } + [Fact] public async Task RemoveOrganizationUnitFromUser() { @@ -91,7 +132,7 @@ namespace Volo.Abp.Identity _lookupNormalizer.NormalizeName("david")); user.OrganizationUnits.Count.ShouldBe(1); - user.OrganizationUnits.ShouldContain(q=>q.OrganizationUnitId == ou112.Id); + user.OrganizationUnits.ShouldContain(q => q.OrganizationUnitId == ou112.Id); await _identityUserManager.RemoveFromOrganizationUnitAsync(user.Id, ou112.Id); await uow.CompleteAsync(); From 61ad5bee59d60dc1bd0954078fc6d37efea90da4 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 19:51:58 +0300 Subject: [PATCH 154/474] refactor: replace chainAndMerge with mergeAndAllowDelete --- .../schematics/src/commands/proxy-add/index.ts | 9 +++++++-- .../schematics/src/commands/proxy-refresh/index.ts | 6 +++--- .../schematics/src/commands/proxy-remove/index.ts | 6 +++--- npm/ng-packs/packages/schematics/src/utils/rule.ts | 13 ++++++------- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts index 1400cfca1c..a0ddba2276 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts @@ -3,13 +3,13 @@ import { chain, SchematicContext, Tree } from '@angular-devkit/schematics'; import { GenerateProxySchema } from '../../models'; import { buildDefaultPath, - chainAndMerge, createApiDefinitionGetter, createApisGenerator, createProxyClearer, createProxyConfigReader, createProxyConfigSaver, createProxyWarningSaver, + mergeAndAllowDelete, removeDefaultPlaceholders, resolveProject, } from '../../utils'; @@ -45,7 +45,12 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); - return chainAndMerge([clearProxy, saveProxyConfig, saveProxyWarning, generateApis])(host); + return chain([ + mergeAndAllowDelete(host, clearProxy), + saveProxyConfig, + saveProxyWarning, + generateApis, + ]); }, ]); } diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts index 2c4e20d7d2..4d3093edbb 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts @@ -1,13 +1,13 @@ -import { SchematicContext, Tree } from '@angular-devkit/schematics'; +import { chain, SchematicContext, Tree } from '@angular-devkit/schematics'; import { GenerateProxySchema } from '../../models'; import { buildDefaultPath, - chainAndMerge, createApiDefinitionGetter, createApisGenerator, createProxyClearer, createProxyConfigReader, createProxyConfigSaver, + mergeAndAllowDelete, removeDefaultPlaceholders, resolveProject, } from '../../utils'; @@ -32,6 +32,6 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); - return chainAndMerge([clearProxy, saveProxyConfig, generateApis])(host); + return chain([mergeAndAllowDelete(host, clearProxy), saveProxyConfig, generateApis]); }; } diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts index 83cc43c0b8..6b6852a383 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts @@ -1,14 +1,14 @@ import { strings } from '@angular-devkit/core'; -import { SchematicContext, Tree } from '@angular-devkit/schematics'; +import { chain, SchematicContext, Tree } from '@angular-devkit/schematics'; import { GenerateProxySchema } from '../../models'; import { buildDefaultPath, - chainAndMerge, createApiDefinitionGetter, createApisGenerator, createProxyClearer, createProxyConfigReader, createProxyConfigSaver, + mergeAndAllowDelete, removeDefaultPlaceholders, resolveProject, } from '../../utils'; @@ -38,6 +38,6 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); - return chainAndMerge([clearProxy, saveProxyConfig, generateApis])(host); + return chain([mergeAndAllowDelete(host, clearProxy), saveProxyConfig, generateApis]); }; } diff --git a/npm/ng-packs/packages/schematics/src/utils/rule.ts b/npm/ng-packs/packages/schematics/src/utils/rule.ts index 39b14cec78..bd6acdd646 100644 --- a/npm/ng-packs/packages/schematics/src/utils/rule.ts +++ b/npm/ng-packs/packages/schematics/src/utils/rule.ts @@ -1,6 +1,6 @@ import { apply, - chain, + callRule, forEach, MergeStrategy, mergeWith, @@ -18,12 +18,11 @@ export function applyWithOverwrite(source: Source, rules: Rule[]): Rule { }; } -export function chainAndMerge(rules: Rule[]) { - return (host: Tree) => async (tree: Tree, context: SchematicContext) => - host.merge( - (await (chain(rules)(tree, context) as any).toPromise()) as Tree, - MergeStrategy.AllowDeleteConflict, - ); +export function mergeAndAllowDelete(host: Tree, rule: Rule) { + return async (tree: Tree, context: SchematicContext) => { + const nextTree = await callRule(rule, tree, context).toPromise(); + host.merge(nextTree, MergeStrategy.AllowDeleteConflict); + }; } export function overwriteFileIfExists(tree: Tree): Rule { From 841d66ba6b336691c04c993aa4c37255a4a2dac3 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 19:57:26 +0300 Subject: [PATCH 155/474] feat: add a common file saver utility fn --- npm/ng-packs/packages/schematics/src/utils/file.ts | 8 ++++++++ npm/ng-packs/packages/schematics/src/utils/index.ts | 1 + 2 files changed, 9 insertions(+) create mode 100644 npm/ng-packs/packages/schematics/src/utils/file.ts diff --git a/npm/ng-packs/packages/schematics/src/utils/file.ts b/npm/ng-packs/packages/schematics/src/utils/file.ts new file mode 100644 index 0000000000..cbfa9afcd2 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/utils/file.ts @@ -0,0 +1,8 @@ +import { Tree } from '@angular-devkit/schematics'; + +export function createFileSaver(tree: Tree) { + return (filePath: string, fileContent: string) => + tree.exists(filePath) + ? tree.overwrite(filePath, fileContent) + : tree.create(filePath, fileContent); +} diff --git a/npm/ng-packs/packages/schematics/src/utils/index.ts b/npm/ng-packs/packages/schematics/src/utils/index.ts index 304c2294b0..ea6bbad964 100644 --- a/npm/ng-packs/packages/schematics/src/utils/index.ts +++ b/npm/ng-packs/packages/schematics/src/utils/index.ts @@ -3,6 +3,7 @@ export * from './api'; export * from './ast'; export * from './common'; export * from './enum'; +export * from './file'; export * from './import'; export * from './model'; export * from './namespace'; From 07cc4477b5b468f458c861e1f32d93be9c01c0fa Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 19:57:49 +0300 Subject: [PATCH 156/474] feat: add barrel export generator utility fn --- .../packages/schematics/src/utils/barrel.ts | 43 +++++++++++++++++++ .../packages/schematics/src/utils/index.ts | 1 + 2 files changed, 44 insertions(+) create mode 100644 npm/ng-packs/packages/schematics/src/utils/barrel.ts diff --git a/npm/ng-packs/packages/schematics/src/utils/barrel.ts b/npm/ng-packs/packages/schematics/src/utils/barrel.ts new file mode 100644 index 0000000000..299876f875 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/utils/barrel.ts @@ -0,0 +1,43 @@ +import { strings } from '@angular-devkit/core'; +import { Tree } from '@angular-devkit/schematics'; +import { PROXY_PATH } from '../constants'; +import { createFileSaver } from './file'; + +export function createProxyIndexGenerator(targetPath: string) { + return createBarrelsGenerator(targetPath + PROXY_PATH); +} + +export function createBarrelsGenerator(rootPath: string) { + return (tree: Tree) => { + generateBarrelFromPath(tree, rootPath); + return tree; + }; +} + +export function generateBarrelFromPath(tree: Tree, indexPath: string) { + const saveFile = createFileSaver(tree); + const dir = tree.getDir(indexPath); + + let _exports = ''; + + dir.subfiles.forEach(fragment => { + if (!fragment.endsWith('.ts')) return; + + _exports += `export * from './${fragment.replace(/\.ts$/, '')}'; +`; + }); + + dir.subdirs.forEach(fragment => { + const subDirPath = indexPath + '/' + fragment; + const subDir = tree.getDir(subDirPath); + let hasFiles = false; + subDir.visit(() => (hasFiles = true)); + if (!hasFiles) return; + + _exports += `export * as ${strings.classify(fragment)} from './${fragment}'; +`; + generateBarrelFromPath(tree, subDirPath); + }); + + if (_exports) saveFile(indexPath + '/index.ts', _exports); +} diff --git a/npm/ng-packs/packages/schematics/src/utils/index.ts b/npm/ng-packs/packages/schematics/src/utils/index.ts index ea6bbad964..178920dccc 100644 --- a/npm/ng-packs/packages/schematics/src/utils/index.ts +++ b/npm/ng-packs/packages/schematics/src/utils/index.ts @@ -1,6 +1,7 @@ export * from './angular'; export * from './api'; export * from './ast'; +export * from './barrel'; export * from './common'; export * from './enum'; export * from './file'; From 155da7fdb0b10b5beb328389c64395baed41635a Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 19:58:35 +0300 Subject: [PATCH 157/474] fix: clear files as well as folders in proxy --- npm/ng-packs/packages/schematics/src/utils/source.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/source.ts b/npm/ng-packs/packages/schematics/src/utils/source.ts index b495e75c20..d555e2ec1f 100644 --- a/npm/ng-packs/packages/schematics/src/utils/source.ts +++ b/npm/ng-packs/packages/schematics/src/utils/source.ts @@ -106,15 +106,18 @@ export function createProxyConfigReader(targetPath: string) { export function createProxyClearer(targetPath: string) { targetPath += PROXY_PATH; + const proxyIndexPath = `${targetPath}/index.ts`; return (tree: Tree) => { try { tree.getDir(targetPath).subdirs.forEach(dirName => { - if (!['enums', 'models', 'services'].includes(dirName)) return; - - tree.delete(`${targetPath}/${dirName}`); + const dirPath = `${targetPath}/${dirName}`; + tree.getDir(dirPath).visit(filePath => tree.delete(filePath)); + tree.delete(dirPath); }); + if (tree.exists(proxyIndexPath)) tree.delete(proxyIndexPath); + return tree; } catch (_) { throw new SchematicsException(interpolate(Exception.DirRemoveFailed, targetPath)); From 880bcc73922ec82217417930f203c0c15028ae3b Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 19:59:48 +0300 Subject: [PATCH 158/474] fix: name model files as model.ts instead of index.ts --- .../__namespace@dir__/{index.ts.template => model.ts.template} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/{index.ts.template => model.ts.template} (100%) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/index.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/model.ts.template similarity index 100% rename from npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/index.ts.template rename to npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/model.ts.template From 19a676a56938b4a357d396664a80164c52308f17 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 20:00:15 +0300 Subject: [PATCH 159/474] feat: generate indexes for generated proxies --- .../schematics/src/commands/proxy-add/index.ts | 4 ++++ .../schematics/src/commands/proxy-refresh/index.ts | 10 +++++++++- .../schematics/src/commands/proxy-remove/index.ts | 10 +++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts index a0ddba2276..3177bedeaa 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts @@ -8,6 +8,7 @@ import { createProxyClearer, createProxyConfigReader, createProxyConfigSaver, + createProxyIndexGenerator, createProxyWarningSaver, mergeAndAllowDelete, removeDefaultPlaceholders, @@ -45,11 +46,14 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); + const generateIndex = createProxyIndexGenerator(targetPath); + return chain([ mergeAndAllowDelete(host, clearProxy), saveProxyConfig, saveProxyWarning, generateApis, + generateIndex, ]); }, ]); diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts index 4d3093edbb..1a0a5ea3be 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/index.ts @@ -7,6 +7,7 @@ import { createProxyClearer, createProxyConfigReader, createProxyConfigSaver, + createProxyIndexGenerator, mergeAndAllowDelete, removeDefaultPlaceholders, resolveProject, @@ -32,6 +33,13 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); - return chain([mergeAndAllowDelete(host, clearProxy), saveProxyConfig, generateApis]); + const generateIndex = createProxyIndexGenerator(targetPath); + + return chain([ + mergeAndAllowDelete(host, clearProxy), + saveProxyConfig, + generateApis, + generateIndex, + ]); }; } diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts index 6b6852a383..59004bff11 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts @@ -8,6 +8,7 @@ import { createProxyClearer, createProxyConfigReader, createProxyConfigSaver, + createProxyIndexGenerator, mergeAndAllowDelete, removeDefaultPlaceholders, resolveProject, @@ -38,6 +39,13 @@ export default function(schema: GenerateProxySchema) { const generateApis = createApisGenerator(schema, generated); - return chain([mergeAndAllowDelete(host, clearProxy), saveProxyConfig, generateApis]); + const generateIndex = createProxyIndexGenerator(targetPath); + + return chain([ + mergeAndAllowDelete(host, clearProxy), + saveProxyConfig, + generateApis, + generateIndex, + ]); }; } From ebaba63a88937702084090e713330b170087c17b Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 21:56:11 +0300 Subject: [PATCH 160/474] refactor: use namespace as blueprint for folder structure --- .../__name@kebab__.enum.ts.template} | 0 .../models.ts.template} | 0 .../__name@kebab__.service.ts.template | 0 .../packages/schematics/src/utils/barrel.ts | 17 ++++++---- .../packages/schematics/src/utils/enum.ts | 2 +- .../packages/schematics/src/utils/path.ts | 32 +++++++++++++++---- 6 files changed, 37 insertions(+), 14 deletions(-) rename npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/{enums/__namespace@dir__/__name@kebab__.ts.template => __namespace@dir__/__name@kebab__.enum.ts.template} (100%) rename npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/{models/__namespace@dir__/model.ts.template => __namespace@dir__/models.ts.template} (100%) rename npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/{services => }/__namespace@dir__/__name@kebab__.service.ts.template (100%) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/enums/__namespace@dir__/__name@kebab__.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/__namespace@dir__/__name@kebab__.enum.ts.template similarity index 100% rename from npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/enums/__namespace@dir__/__name@kebab__.ts.template rename to npm/ng-packs/packages/schematics/src/commands/api/files-enum/proxy/__namespace@dir__/__name@kebab__.enum.ts.template diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/model.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/__namespace@dir__/models.ts.template similarity index 100% rename from npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/models/__namespace@dir__/model.ts.template rename to npm/ng-packs/packages/schematics/src/commands/api/files-model/proxy/__namespace@dir__/models.ts.template diff --git a/npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/services/__namespace@dir__/__name@kebab__.service.ts.template b/npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/__namespace@dir__/__name@kebab__.service.ts.template similarity index 100% rename from npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/services/__namespace@dir__/__name@kebab__.service.ts.template rename to npm/ng-packs/packages/schematics/src/commands/api/files-service/proxy/__namespace@dir__/__name@kebab__.service.ts.template diff --git a/npm/ng-packs/packages/schematics/src/utils/barrel.ts b/npm/ng-packs/packages/schematics/src/utils/barrel.ts index 299876f875..b21acc77fa 100644 --- a/npm/ng-packs/packages/schematics/src/utils/barrel.ts +++ b/npm/ng-packs/packages/schematics/src/utils/barrel.ts @@ -18,13 +18,12 @@ export function generateBarrelFromPath(tree: Tree, indexPath: string) { const saveFile = createFileSaver(tree); const dir = tree.getDir(indexPath); - let _exports = ''; + const _exports: string[] = []; dir.subfiles.forEach(fragment => { if (!fragment.endsWith('.ts')) return; - _exports += `export * from './${fragment.replace(/\.ts$/, '')}'; -`; + _exports.push(`export * from './${fragment.replace(/\.ts$/, '')}';`); }); dir.subdirs.forEach(fragment => { @@ -34,10 +33,16 @@ export function generateBarrelFromPath(tree: Tree, indexPath: string) { subDir.visit(() => (hasFiles = true)); if (!hasFiles) return; - _exports += `export * as ${strings.classify(fragment)} from './${fragment}'; -`; + _exports.push(`export * as ${strings.classify(fragment)} from './${fragment}';`); generateBarrelFromPath(tree, subDirPath); }); - if (_exports) saveFile(indexPath + '/index.ts', _exports); + _exports.sort(); + + if (_exports.length) + saveFile( + indexPath + '/index.ts', + _exports.join(` +`), + ); } diff --git a/npm/ng-packs/packages/schematics/src/utils/enum.ts b/npm/ng-packs/packages/schematics/src/utils/enum.ts index 818a1a089b..c01b086ec5 100644 --- a/npm/ng-packs/packages/schematics/src/utils/enum.ts +++ b/npm/ng-packs/packages/schematics/src/utils/enum.ts @@ -13,7 +13,7 @@ export interface EnumGeneratorParams { } export function isEnumImport(path: string) { - return path.includes('/enums/'); + return path.endsWith('.enum'); } export function getEnumNamesFromImports(serviceImports: Record) { diff --git a/npm/ng-packs/packages/schematics/src/utils/path.ts b/npm/ng-packs/packages/schematics/src/utils/path.ts index cb1d499755..7ae89d19bc 100644 --- a/npm/ng-packs/packages/schematics/src/utils/path.ts +++ b/npm/ng-packs/packages/schematics/src/utils/path.ts @@ -1,15 +1,33 @@ -import { dir, kebab } from './text'; +import { strings } from '@angular-devkit/core'; +import { kebab } from './text'; export function relativePathToEnum(namespace: string, enumNamespace: string, enumName: string) { - const repeats = namespace ? namespace.split('.').length : 0; - const path = '..' + '/..'.repeat(repeats) + '/enums/' + dir(enumNamespace); - return removeDoubleSlash(path + '/' + kebab(enumName)); + const path = calculateRelativePath(namespace, enumNamespace); + return removeDoubleSlash(path + `/${kebab(enumName)}.enum`); } export function relativePathToModel(namespace: string, modelNamespace: string) { - const repeats = namespace ? namespace.split('.').length : 0; - const path = '..' + '/..'.repeat(repeats) + '/models/' + dir(modelNamespace); - return removeTrailingSlash(path); + const path = calculateRelativePath(namespace, modelNamespace); + return removeTrailingSlash(path + '/models'); +} + +function calculateRelativePath(ns1: string, ns2: string) { + if (ns1 === ns2) return '.'; + + const parts1 = ns1 ? ns1.split('.') : []; + const parts2 = ns2 ? ns2.split('.') : []; + + while (parts1.length && parts2.length) { + if (parts1[0] !== parts2[0]) break; + + parts1.shift(); + parts2.shift(); + } + + const up = '../'.repeat(parts1.length) || '.'; + const down = parts2.reduce((acc, p) => acc + '/' + strings.dasherize(p), ''); + + return removeTrailingSlash(removeDoubleSlash(up + down)); } function removeDoubleSlash(path: string) { From 49ccc4dbde3c47c22a66df749f14ab02aeaf5f95 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 31 Aug 2020 21:56:44 +0300 Subject: [PATCH 161/474] docs: update proxy folder warning --- .../packages/schematics/src/constants/proxy.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/constants/proxy.ts b/npm/ng-packs/packages/schematics/src/constants/proxy.ts index fbf7f127bd..847b373f75 100644 --- a/npm/ng-packs/packages/schematics/src/constants/proxy.ts +++ b/npm/ng-packs/packages/schematics/src/constants/proxy.ts @@ -5,14 +5,14 @@ export const PROXY_WARNING_PATH = `${PROXY_PATH}/README.md`; export const PROXY_WARNING = `# Proxy Generation Output This directory includes the output of the latest proxy generation. -The \`services\`, \`models\`, and \`enums\` folders will be overwritten when proxy generation is run again. -Therefore, please do not place your own content in those folders. +The files and folders in it will be overwritten when proxy generation is run again. +Therefore, please do not place your own content in this folder. In addition, \`generate-proxy.json\` works like a lock file. It includes information used by the proxy generator, so please do not delete or modify it. -Finally, the name of this folder should not be changed for two reasons: -- Proxy generator will keep creating this folder and you will have multiple copies of the same content. -- ABP Suite generates imports from this folder and uses the path \`/proxy\` when doing so. +Finally, the name of the files and folders should not be changed for two reasons: +- Proxy generator will keep creating them at those paths and you will have multiple copies of the same content. +- ABP Suite generates files which include imports from this folder. `; From 7e1e5ca1cc11a46b7079f797b70924171f1a30ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 31 Aug 2020 21:58:28 +0300 Subject: [PATCH 162/474] Added remove-proxy command. --- docs/en/CLI.md | 23 ++- .../Volo/Abp/Cli/AbpCliCoreModule.cs | 4 +- .../Abp/Cli/Commands/GenerateProxyCommand.cs | 137 +---------------- .../Volo/Abp/Cli/Commands/ProxyCommandBase.cs | 144 ++++++++++++++++++ .../Abp/Cli/Commands/RemoveProxyCommand.cs | 11 ++ 5 files changed, 184 insertions(+), 135 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/RemoveProxyCommand.cs diff --git a/docs/en/CLI.md b/docs/en/CLI.md index 91e7b6669d..e6e7fcccf8 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -32,6 +32,7 @@ Here, the list of all available commands before explaining their details: * **`add-package`**: Adds an ABP package to a project. * **`add-module`**: Adds a [multi-package application module](https://docs.abp.io/en/abp/latest/Modules/Index) to a solution. * **`generate-proxy`**: Generates client side proxies to use HTTP API endpoints. +* **`remove-proxy`**: Removes previously generated client side proxies. * **`switch-to-preview`**: Switches to the latest preview version of the ABP Framework. * **`switch-to-nightly`**: Switches to the latest [nightly builds](Nightly-Builds.md) of the ABP related packages on a solution. * **`switch-to-stable`**: Switches to the latest stable versions of the ABP related packages on a solution. @@ -179,7 +180,7 @@ abp add-module Volo.Blogging ### generate-proxy -Generates Angular service proxies for your HTTP APIs to make easy to consume your services from the client side. Before running `generate-proxy` command, your host must be up and running. +Generates Angular service proxies for your HTTP APIs to make easy to consume your services from the client side. Your host (server) application must be up and running before running this command. Usage: @@ -196,6 +197,26 @@ abp generate-proxy > See the [Angular Service Proxies document](UI/Angular/Service-Proxies.md) for more. +### remove-proxy + +Removes previously generated proxy code from the Angular application. Your host (server) application must be up and running before running this command. + +This can be especially useful when you generate proxies for multiple modules before and need to remove one of them later. + +Usage: + +````bash +abp remove-proxy +```` + +#### Options + +* `--module` or `-m`: Specifies the name of the backend module you wish to remove proxies for. Default value: `app`. +* `--source` or `-s`: Specifies the Angular project name to resolve the root namespace & API definition URL from. Default value: `defaultProject`. +* `--target` or `-t`: Specifies the Angular project name to place generated code in. Default value: `defaultProject`. +* `--prompt` or `-p`: Asks the options from the command line prompt (for the unspecified options). + +> See the [Angular Service Proxies document](UI/Angular/Service-Proxies.md) for more. ### switch-to-preview diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs index 0244d46c47..a79b52b4f2 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs @@ -20,6 +20,7 @@ namespace Volo.Abp.Cli Configure(options => { + //TODO: Define constants like done for GenerateProxyCommand.Name. options.Commands["help"] = typeof(HelpCommand); options.Commands["new"] = typeof(NewCommand); options.Commands["get-source"] = typeof(GetSourceCommand); @@ -28,7 +29,8 @@ namespace Volo.Abp.Cli options.Commands["add-module"] = typeof(AddModuleCommand); options.Commands["login"] = typeof(LoginCommand); options.Commands["logout"] = typeof(LogoutCommand); - options.Commands["generate-proxy"] = typeof(GenerateProxyCommand); + options.Commands[GenerateProxyCommand.Name] = typeof(GenerateProxyCommand); + options.Commands[RemoveProxyCommand.Name] = typeof(RemoveProxyCommand); options.Commands["suite"] = typeof(SuiteCommand); options.Commands["switch-to-preview"] = typeof(SwitchToPreviewCommand); options.Commands["switch-to-stable"] = typeof(SwitchToStableCommand); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs index 5e88417b4a..72aedc51de 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs @@ -1,140 +1,11 @@ -using System; -using System.IO; -using System.Text; -using System.Threading.Tasks; -using Newtonsoft.Json.Linq; -using Volo.Abp.Cli.Args; -using Volo.Abp.Cli.Utils; -using Volo.Abp.DependencyInjection; - namespace Volo.Abp.Cli.Commands { - public class GenerateProxyCommand : IConsoleCommand, ITransientDependency + public class GenerateProxyCommand : ProxyCommandBase { - public Task ExecuteAsync(CommandLineArgs commandLineArgs) - { - CheckAngularJsonFile(); - CheckNgSchematics(); - - var prompt = commandLineArgs.Options.ContainsKey("p") || commandLineArgs.Options.ContainsKey("prompt"); - var defaultValue = prompt ? null : "__default"; - - var module = commandLineArgs.Options.GetOrNull(Options.Module.Short, Options.Module.Long) ?? defaultValue; - var source = commandLineArgs.Options.GetOrNull(Options.Source.Short, Options.Source.Long) ?? defaultValue; - var target = commandLineArgs.Options.GetOrNull(Options.Target.Short, Options.Target.Long) ?? defaultValue; - - var commandBuilder = new StringBuilder("npx ng g @abp/ng.schematics:proxy"); - - if (module != null) - { - commandBuilder.Append($" --module {module}"); - } - - if (source != null) - { - commandBuilder.Append($" --source {source}"); - } - - if (target != null) - { - commandBuilder.Append($" --target {target}"); - } - - CmdHelper.RunCmd(commandBuilder.ToString()); - - return Task.CompletedTask; - } - - private void CheckNgSchematics() - { - var packageJsonPath = $"package.json"; - - if (!File.Exists(packageJsonPath)) - { - throw new CliUsageException( - "package.json file not found" + - Environment.NewLine + - GetUsageInfo() - ); - } - - var schematicsPackageNode = - (string) JObject.Parse(File.ReadAllText(packageJsonPath))["devDependencies"]?["@abp/ng.schematics"]; - - if (schematicsPackageNode == null) - { - throw new CliUsageException( - "\"@abp/ng.schematics\" NPM package should be installed to the devDependencies before running this command!" + - Environment.NewLine + - GetUsageInfo() - ); - } - } - - private void CheckAngularJsonFile() - { - var angularPath = $"angular.json"; - if (!File.Exists(angularPath)) - { - throw new CliUsageException( - "angular.json file not found. You must run this command in the angular folder." + - Environment.NewLine + Environment.NewLine + - GetUsageInfo() - ); - } - } - - public string GetUsageInfo() - { - var sb = new StringBuilder(); - - sb.AppendLine(""); - sb.AppendLine("Usage:"); - sb.AppendLine(""); - sb.AppendLine(" abp generate-proxy"); - sb.AppendLine(""); - sb.AppendLine("Options:"); - sb.AppendLine(""); - sb.AppendLine("-m|--module (default: 'app') The name of the backend module you wish to generate proxies for."); - sb.AppendLine("-s|--source (default: 'defaultProject') Angular project name to resolve the root namespace & API definition URL from."); - sb.AppendLine("-t|--target (default: 'defaultProject') Angular project name to place generated code in."); - sb.AppendLine("-p|--prompt Asks the options from the command line prompt (for the missing options)"); - sb.AppendLine(""); - sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); - - return sb.ToString(); - } - - public string GetShortDescription() - { - return "Generates Angular service proxies and DTOs to consume HTTP APIs."; - } - - public static class Options - { - public static class Module - { - public const string Short = "m"; - public const string Long = "module"; - } - - public static class Source - { - public const string Short = "s"; - public const string Long = "source"; - } + public const string Name = "generate-proxy"; - public static class Target - { - public const string Short = "t"; - public const string Long = "target"; - } + protected override string CommandName => Name; - public static class Prompt - { - public const string Short = "p"; - public const string Long = "prompt"; - } - } + protected override string SchematicsCommandName => "proxy-add"; } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs new file mode 100644 index 0000000000..0116c809cb --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs @@ -0,0 +1,144 @@ +using System; +using System.IO; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json.Linq; +using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.Utils; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.Commands +{ + public abstract class ProxyCommandBase : IConsoleCommand, ITransientDependency + { + protected abstract string CommandName { get; } + + protected abstract string SchematicsCommandName { get; } + + public Task ExecuteAsync(CommandLineArgs commandLineArgs) + { + CheckAngularJsonFile(); + CheckNgSchematics(); + + var prompt = commandLineArgs.Options.ContainsKey("p") || commandLineArgs.Options.ContainsKey("prompt"); + var defaultValue = prompt ? null : "__default"; + + var module = commandLineArgs.Options.GetOrNull(Options.Module.Short, Options.Module.Long) ?? defaultValue; + var source = commandLineArgs.Options.GetOrNull(Options.Source.Short, Options.Source.Long) ?? defaultValue; + var target = commandLineArgs.Options.GetOrNull(Options.Target.Short, Options.Target.Long) ?? defaultValue; + + var commandBuilder = new StringBuilder("npx ng g @abp/ng.schematics:" + SchematicsCommandName); + + if (module != null) + { + commandBuilder.Append($" --module {module}"); + } + + if (source != null) + { + commandBuilder.Append($" --source {source}"); + } + + if (target != null) + { + commandBuilder.Append($" --target {target}"); + } + + CmdHelper.RunCmd(commandBuilder.ToString()); + + return Task.CompletedTask; + } + + private void CheckNgSchematics() + { + var packageJsonPath = $"package.json"; + + if (!File.Exists(packageJsonPath)) + { + throw new CliUsageException( + "package.json file not found" + + Environment.NewLine + + GetUsageInfo() + ); + } + + var schematicsPackageNode = + (string) JObject.Parse(File.ReadAllText(packageJsonPath))["devDependencies"]?["@abp/ng.schematics"]; + + if (schematicsPackageNode == null) + { + throw new CliUsageException( + "\"@abp/ng.schematics\" NPM package should be installed to the devDependencies before running this command!" + + Environment.NewLine + + GetUsageInfo() + ); + } + } + + private void CheckAngularJsonFile() + { + var angularPath = $"angular.json"; + if (!File.Exists(angularPath)) + { + throw new CliUsageException( + "angular.json file not found. You must run this command in the angular folder." + + Environment.NewLine + Environment.NewLine + + GetUsageInfo() + ); + } + } + + public string GetUsageInfo() + { + var sb = new StringBuilder(); + + sb.AppendLine(""); + sb.AppendLine("Usage:"); + sb.AppendLine(""); + sb.AppendLine($" abp {CommandName}"); + sb.AppendLine(""); + sb.AppendLine("Options:"); + sb.AppendLine(""); + sb.AppendLine("-m|--module (default: 'app') The name of the backend module you wish to generate proxies for."); + sb.AppendLine("-s|--source (default: 'defaultProject') Angular project name to resolve the root namespace & API definition URL from."); + sb.AppendLine("-t|--target (default: 'defaultProject') Angular project name to place generated code in."); + sb.AppendLine("-p|--prompt Asks the options from the command line prompt (for the missing options)"); + sb.AppendLine(""); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); + + return sb.ToString(); + } + + public string GetShortDescription() + { + return "Generates Angular service proxies and DTOs to consume HTTP APIs."; + } + + public static class Options + { + public static class Module + { + public const string Short = "m"; + public const string Long = "module"; + } + + public static class Source + { + public const string Short = "s"; + public const string Long = "source"; + } + + public static class Target + { + public const string Short = "t"; + public const string Long = "target"; + } + + public static class Prompt + { + public const string Short = "p"; + public const string Long = "prompt"; + } + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/RemoveProxyCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/RemoveProxyCommand.cs new file mode 100644 index 0000000000..7d31d5387a --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/RemoveProxyCommand.cs @@ -0,0 +1,11 @@ +namespace Volo.Abp.Cli.Commands +{ + public class RemoveProxyCommand : ProxyCommandBase + { + public const string Name = "remove-proxy"; + + protected override string CommandName => Name; + + protected override string SchematicsCommandName => "proxy-remove"; + } +} \ No newline at end of file From 905ad6311b4b89651dea6689e77611140552d2cb Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 1 Sep 2020 13:04:53 +0800 Subject: [PATCH 163/474] Replace the obsolete AddIdentityServerAuthentication method. Resolve #5179 --- .../MyCompanyName.MyProjectName.HttpApi.Host.csproj | 2 +- .../MyProjectNameHttpApiHostModule.cs | 9 +++++---- ...yCompanyName.MyProjectName.HttpApi.HostWithIds.csproj | 1 - .../MyProjectNameHttpApiHostModule.cs | 6 +++--- .../MyCompanyName.MyProjectName.Web.csproj | 1 - .../MyProjectNameWebModule.cs | 4 ++-- .../src/MyCompanyName.MyProjectName.Web/appsettings.json | 2 +- 7 files changed, 12 insertions(+), 13 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index 71b248c32e..e497fa9a69 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -14,7 +14,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index 3771a1874d..e71450209f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Linq; +using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.DataProtection; @@ -88,12 +89,12 @@ namespace MyCompanyName.MyProjectName private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) { - context.Services.AddAuthentication("Bearer") - .AddIdentityServerAuthentication(options => + context.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddJwtBearer(options => { options.Authority = configuration["AuthServer:Authority"]; - options.RequireHttpsMetadata = true; - options.ApiName = "MyProjectName"; + options.RequireHttpsMetadata = false; + options.Audience = "MyProjectName"; }); } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj index 373d19dcfb..45b4e0517b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj @@ -14,7 +14,6 @@ - diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs index 95a26d9084..1cd8ea1c0b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -92,12 +92,12 @@ namespace MyCompanyName.MyProjectName private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) { context.Services.AddAuthentication() - .AddIdentityServerAuthentication(options => + .AddJwtBearer(options => { options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = false; - options.ApiName = "MyProjectName"; - options.JwtBackChannelHandler = new HttpClientHandler() + options.Audience = "MyProjectName"; + options.BackchannelHttpHandler = new HttpClientHandler() { ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator }; diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj index eb374cb80e..961e8e33d4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -36,7 +36,6 @@ - diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs index cf201f90cc..8f63e0768f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs @@ -94,11 +94,11 @@ namespace MyCompanyName.MyProjectName.Web private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) { context.Services.AddAuthentication() - .AddIdentityServerAuthentication(options => + .AddJwtBearer(options => { options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = false; - options.ApiName = "MyProjectName"; + options.Audience = "MyProjectName"; }); } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.json index 99a24b4a2d..6cfe8948fa 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/appsettings.json @@ -6,7 +6,7 @@ "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true" }, "AuthServer": { - "Authority": "https://localhost:44301" + "Authority": "https://localhost:44303" }, "IdentityServer": { "Clients": { From f0799b4d83f5a5f97dd275b694fae22918877510 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 1 Sep 2020 13:06:21 +0800 Subject: [PATCH 164/474] RequireHttpsMetadata true. --- .../MyProjectNameHttpApiHostModule.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index e71450209f..b217a0ada7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -93,7 +93,7 @@ namespace MyCompanyName.MyProjectName .AddJwtBearer(options => { options.Authority = configuration["AuthServer:Authority"]; - options.RequireHttpsMetadata = false; + options.RequireHttpsMetadata = true; options.Audience = "MyProjectName"; }); } From 1a6c14ee8b0f0e8c6bfa479a0519792d1affc7db Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 1 Sep 2020 13:15:33 +0800 Subject: [PATCH 165/474] Replace AddIdentityServerAuthentication in app module template. --- .../MyCompanyName.MyProjectName.HttpApi.Host.csproj | 3 ++- .../MyProjectNameHttpApiHostModule.cs | 9 +++++---- .../MyCompanyName.MyProjectName.IdentityServer.csproj | 1 - .../MyProjectNameIdentityServerModule.cs | 8 ++++---- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index 35e73d4868..8e5e31fcc6 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -13,7 +13,8 @@ - + + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index 6d5bf1a7c8..0145f8a41a 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using System.Security.Claims; using IdentityModel; +using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.DataProtection; @@ -103,12 +104,12 @@ namespace MyCompanyName.MyProjectName AbpClaimTypes.Role = JwtClaimTypes.Role; AbpClaimTypes.Email = JwtClaimTypes.Email; - context.Services.AddAuthentication("Bearer") - .AddIdentityServerAuthentication(options => + context.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddJwtBearer(options => { options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = false; - options.ApiName = "MyProjectName"; + options.Audience = "MyProjectName"; }); Configure(options => @@ -163,7 +164,7 @@ namespace MyCompanyName.MyProjectName app.UseCorrelationId(); app.UseVirtualFiles(); app.UseRouting(); - app.UseCors(DefaultCorsPolicyName); + app.UseCors(DefaultCorsPolicyName); app.UseAuthentication(); app.UseAbpClaimsMap(); if (MultiTenancyConsts.IsEnabled) diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj index c70808deed..3b18a90d7e 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj @@ -11,7 +11,6 @@ - diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs index cfda73627d..2eed1ad3cb 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs @@ -118,11 +118,11 @@ namespace MyCompanyName.MyProjectName }); context.Services.AddAuthentication() - .AddIdentityServerAuthentication(options => + .AddJwtBearer(options => { options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = false; - options.ApiName = configuration["AuthServer:ApiName"]; + options.Audience = configuration["AuthServer:ApiName"]; }); Configure(options => @@ -182,10 +182,10 @@ namespace MyCompanyName.MyProjectName app.UseCorrelationId(); app.UseVirtualFiles(); app.UseRouting(); - app.UseCors(DefaultCorsPolicyName); + app.UseCors(DefaultCorsPolicyName); app.UseAuthentication(); app.UseJwtTokenMiddleware(); - + if (MultiTenancyConsts.IsEnabled) { app.UseMultiTenancy(); From be0ac62f5cbf5a209ecb80450085d281fc35c40b Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 1 Sep 2020 13:33:18 +0800 Subject: [PATCH 166/474] Update cms-kit module. --- .../Volo.CmsKit.HttpApi.Host/CmsKitHttpApiHostModule.cs | 7 ++++--- .../Volo.CmsKit.HttpApi.Host.csproj | 3 ++- .../CmsKitIdentityServerModule.cs | 4 ++-- .../Volo.CmsKit.IdentityServer.csproj | 1 - 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/CmsKitHttpApiHostModule.cs b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/CmsKitHttpApiHostModule.cs index f1a9b8568f..fe9df5d7b6 100644 --- a/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/CmsKitHttpApiHostModule.cs +++ b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/CmsKitHttpApiHostModule.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using System.Security.Claims; using IdentityModel; +using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.DataProtection; @@ -108,12 +109,12 @@ namespace Volo.CmsKit AbpClaimTypes.Role = JwtClaimTypes.Role; AbpClaimTypes.Email = JwtClaimTypes.Email; - context.Services.AddAuthentication("Bearer") - .AddIdentityServerAuthentication(options => + context.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddJwtBearer(options => { options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = false; - options.ApiName = "CmsKit"; + options.Audience = "CmsKit"; }); Configure(options => diff --git a/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj index 9fa7c4be20..99b2d0f1c0 100644 --- a/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj +++ b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj @@ -13,7 +13,8 @@ - + + diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/CmsKitIdentityServerModule.cs b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/CmsKitIdentityServerModule.cs index b9afe934a3..5fbff7cfeb 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/CmsKitIdentityServerModule.cs +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/CmsKitIdentityServerModule.cs @@ -123,11 +123,11 @@ namespace Volo.CmsKit }); context.Services.AddAuthentication() - .AddIdentityServerAuthentication(options => + .AddJwtBearer(options => { options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = false; - options.ApiName = configuration["AuthServer:ApiName"]; + options.Audience = configuration["AuthServer:ApiName"]; }); Configure(options => diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj index b26c2bbe06..a32a6c2dc3 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj @@ -11,7 +11,6 @@ - From fc2f1ecfc6edcc2b8b8837d4f9e5ad8b435253f9 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Tue, 1 Sep 2020 09:31:03 +0300 Subject: [PATCH 167/474] refactor: remove unnecessary fn calls in path utils --- npm/ng-packs/packages/schematics/src/utils/path.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/path.ts b/npm/ng-packs/packages/schematics/src/utils/path.ts index 7ae89d19bc..c28951c8db 100644 --- a/npm/ng-packs/packages/schematics/src/utils/path.ts +++ b/npm/ng-packs/packages/schematics/src/utils/path.ts @@ -3,12 +3,12 @@ import { kebab } from './text'; export function relativePathToEnum(namespace: string, enumNamespace: string, enumName: string) { const path = calculateRelativePath(namespace, enumNamespace); - return removeDoubleSlash(path + `/${kebab(enumName)}.enum`); + return path + `/${kebab(enumName)}.enum`; } export function relativePathToModel(namespace: string, modelNamespace: string) { const path = calculateRelativePath(namespace, modelNamespace); - return removeTrailingSlash(path + '/models'); + return path + '/models'; } function calculateRelativePath(ns1: string, ns2: string) { From 4d0936edcf1c753dd57305c4ea7995d934f8d9d9 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 1 Sep 2020 09:34:58 +0300 Subject: [PATCH 168/474] chore: add proxy folder to tsconfig paths --- npm/ng-packs/tsconfig.base.json | 6 +++++- templates/app/angular/tsconfig.base.json | 8 +++++++- templates/module/angular/tsconfig.base.json | 8 ++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/tsconfig.base.json b/npm/ng-packs/tsconfig.base.json index d73d137f99..f76d32a75e 100644 --- a/npm/ng-packs/tsconfig.base.json +++ b/npm/ng-packs/tsconfig.base.json @@ -29,7 +29,11 @@ "@abp/ng.setting-management": ["packages/setting-management/src/public-api.ts"], "@abp/ng.setting-management/config": ["packages/setting-management/config/src/public-api.ts"], "@abp/ng.permission-management": ["packages/permission-management/src/public-api.ts"], - "@abp/ng.feature-management": ["packages/feature-management/src/public-api.ts"] + "@abp/ng.feature-management": ["packages/feature-management/src/public-api.ts"], + "@proxy": ["apps/dev-app/src/app/proxy/index.ts"], + "@proxy/enums": ["apps/dev-app/src/app/proxy/enums/index.ts"], + "@proxy/models": ["apps/dev-app/src/app/proxy/models/index.ts"], + "@proxy/services": ["apps/dev-app/src/app/proxy/services/index.ts"] } }, "angularCompilerOptions": { diff --git a/templates/app/angular/tsconfig.base.json b/templates/app/angular/tsconfig.base.json index 2f67131c75..0df99de0dd 100644 --- a/templates/app/angular/tsconfig.base.json +++ b/templates/app/angular/tsconfig.base.json @@ -12,7 +12,13 @@ "importHelpers": true, "target": "es2015", "typeRoots": ["node_modules/@types"], - "lib": ["es2018", "dom"] + "lib": ["es2018", "dom"], + "paths": { + "@proxy": ["src/app/proxy/index.ts"], + "@proxy/enums": ["src/app/proxy/enums/index.ts"], + "@proxy/models": ["src/app/proxy/models/index.ts"], + "@proxy/services": ["src/app/proxy/services/index.ts"] + } }, "angularCompilerOptions": { "fullTemplateTypeCheck": true, diff --git a/templates/module/angular/tsconfig.base.json b/templates/module/angular/tsconfig.base.json index e8a830851f..9ea1a5cf44 100644 --- a/templates/module/angular/tsconfig.base.json +++ b/templates/module/angular/tsconfig.base.json @@ -7,6 +7,14 @@ ], "@my-company-name/my-project-name/config": [ "projects/my-project-name/config/src/public-api.ts" + ], + "@proxy": ["projects/my-project-name/src/lib/proxy/index.ts"], + "@proxy/enums": ["projects/my-project-name/src/lib/proxy/enums/index.ts"], + "@proxy/models": [ + "projects/my-project-name/src/lib/proxy/models/index.ts" + ], + "@proxy/services": [ + "projects/my-project-name/src/lib/proxy/services/index.ts" ] } } From 12b7f16c0a1aa597b3b6144936f57a8bec7dee4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 1 Sep 2020 10:02:46 +0300 Subject: [PATCH 169/474] Revised article: How to Add the User Entity as a Navigation Property of Another Entity --- .../POST.md | 42 ++++++++++++++----- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md index 039491e10f..0952636174 100644 --- a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md +++ b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md @@ -1,20 +1,34 @@ -# How to add the user entity as a navigation property? +# ABP Suite: How to Add the User Entity as a Navigation Property of Another Entity -In this post, I'll show you how to add the user as a navigation property in your new entity. +## Introduction -To do this, open the ABP Suite. Create a new entity called `Note`. +[ABP Suite](https://commercial.abp.io/tools/suite), a part of the [ABP Commercial](https://commercial.abp.io/), is a productivity tool developed by the team behind the ABP Framework. The main functionality of the ABP Suite is to generate code for you. + +In this post, I'll show you how to add the user entity as a navigation property in your new entity, by the help of the ABP Suite. + +> This article uses the MVC UI, but the same steps are applicable to the Angular UI. + +## Code Generation + +### Create a New Entity + +Open the ABP Suite ([see how](https://docs.abp.io/en/commercial/latest/abp-suite/index)). Create a new entity called `Note`, as an example entity. ![create-note-entity](create-note-entity.jpg) -Then add a string property called `Title`. +Then add a string property called `Title`, as an example property. ![add-simple-property](add-simple-property.jpg) -To be able to add a user navigation, we need to create a user DTO to map from entity. To do this, create a new folder called "Users" in `*.Application.Contracts` then add a new class called `AppUserDto` inherited from `IdentityUserDto`. +### Create AppUserDto + +ABP Suite needs a DTO for the target entity (user, in this case) in order to define a navigation property. + +To do this, create a new folder called "Users" in `*.Application.Contracts` then add a new class called `AppUserDto` inherited from `IdentityUserDto`. ![create-appuserdto](create-appuserdto.jpg) -Create the mapping for `AppUserDto`. To do this, open `YourProjectApplicationAutoMapperProfile.cs` and add the below line: +We should define the [object mapping](https://docs.abp.io/en/abp/latest/Object-To-Object-Mapping) to be able to convert the `AppUser` objects to `AppUserDto` objects. To do this, open `YourProjectApplicationAutoMapperProfile.cs` and add the below line: ```csharp CreateMap().Ignore(x => x.ExtraProperties); @@ -22,17 +36,23 @@ CreateMap().Ignore(x => x.ExtraProperties); ![create-mapping](create-mapping.jpg) -Get back to ABP Suite, go to **Navigation Properties** tab. Click **Add Navigation Property** button. Browse `AppUser.cs` in `*.Domain\Users` folder. Then choose the `Name` item as display property. Browse `AppUserDto.cs` in `*.Contracts\Users` folder. Choose `Users` from Collection Names dropdown. +> Creating such a DTO class may not be needed for another entity than the `AppUser`, since it will probably be already available, especially if you had created the other entity using the ABP Suite. + +### Define the Navigation Property + +Get back to ABP Suite, open the **Navigation Properties** tab of the ABP Suite, click the **Add Navigation Property** button. Browse `AppUser.cs` in `*.Domain\Users` folder. Then choose the `Name` item as display property. Browse `AppUserDto.cs` in `*.Contracts\Users` folder. Choose `Users` from Collection Names dropdown. ![add-user-navigation](add-user-navigation.jpg) +### Generate the Code! + That's it! Click **Save and generate** button to create your page. You'll see the following page if there's everything goes well. ![final-page](final-page.jpg) +## About the ABP Commercial RC - -Note this example is implemented with ABP Commercial 3.1.0-rc.3. This is a RC version. If you want to install the CLI and Suite RC version follow the next steps: +This example has been implemented with **ABP Commercial 3.1.0-rc.3**. This is a RC version. If you want to install the CLI and Suite RC version follow the next steps: 1- Uninstall the current version of the CLI and install the specific RC version: @@ -46,4 +66,6 @@ dotnet tool uninstall --global Volo.Abp.Cli && dotnet tool install --global Volo dotnet tool uninstall --global Volo.Abp.Suite && dotnet tool install -g Volo.Abp.Suite --version 3.1.0-rc.3 --add-source https://nuget.abp.io//v3/index.json ``` -Don't forget to replace the `` with your own key! \ No newline at end of file +Don't forget to replace the `` with your own key! + +## Conclusion \ No newline at end of file From 4bc05a7fcbbdfa6a2f0f30fc0b4d08043ee6ead0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 1 Sep 2020 10:03:29 +0300 Subject: [PATCH 170/474] Update POST.md --- .../2020-08-31-Adding-User-Navigation-In-Suite/POST.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md index 0952636174..74bba8993b 100644 --- a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md +++ b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md @@ -67,5 +67,3 @@ dotnet tool uninstall --global Volo.Abp.Suite && dotnet tool install -g Volo.Abp ``` Don't forget to replace the `` with your own key! - -## Conclusion \ No newline at end of file From 58fc0f56a3065215e3df8392bffa92e019357939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 1 Sep 2020 10:07:14 +0300 Subject: [PATCH 171/474] Added explanation. --- .../2020-08-31-Adding-User-Navigation-In-Suite/POST.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md index 74bba8993b..2e663db6e0 100644 --- a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md +++ b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md @@ -50,6 +50,8 @@ That's it! Click **Save and generate** button to create your page. You'll see th ![final-page](final-page.jpg) +This is the new page that has been created by the ABP Suite. It can perform the fundamental CRUD operations. Also, it has the "App user" column that shows the related user name (you can easily change the automatically created "App user" title). + ## About the ABP Commercial RC This example has been implemented with **ABP Commercial 3.1.0-rc.3**. This is a RC version. If you want to install the CLI and Suite RC version follow the next steps: From b886014087f6a509c4fe0998fec2a7931a783f64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 1 Sep 2020 10:26:07 +0300 Subject: [PATCH 172/474] Resolved #5053: Improvement suggestion for the "Implementing Passwordless Authentication in ASP.NET Core Identity" article --- .../2020-08-07-Passwordless-Authentication/POST.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md b/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md index 1b7cef0867..077dd17466 100644 --- a/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md +++ b/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md @@ -2,7 +2,9 @@ ## Introduction -To allow a user login with a magic URL, you need to implement a custom token provider. In this tutorial, we will show you how to add a custom token provider to authenticate a user with a link, instead of entering a password. +In this tutorial, we will show you how to add a custom token provider to authenticate a user with a link, instead of entering a password. + +This can be especially useful if you want to make someone login to the application with your user, without sharing your secret password. The generated link will be for a single use. ### Source Code From 63a0851cf0246ee302e20c0f8e649c304dccfc9b Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 1 Sep 2020 10:26:16 +0300 Subject: [PATCH 173/474] fix: change @proxy paths --- npm/ng-packs/tsconfig.base.json | 4 +--- templates/app/angular/tsconfig.base.json | 4 +--- templates/module/angular/tsconfig.base.json | 8 +------- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/npm/ng-packs/tsconfig.base.json b/npm/ng-packs/tsconfig.base.json index f76d32a75e..87b45cb3a9 100644 --- a/npm/ng-packs/tsconfig.base.json +++ b/npm/ng-packs/tsconfig.base.json @@ -31,9 +31,7 @@ "@abp/ng.permission-management": ["packages/permission-management/src/public-api.ts"], "@abp/ng.feature-management": ["packages/feature-management/src/public-api.ts"], "@proxy": ["apps/dev-app/src/app/proxy/index.ts"], - "@proxy/enums": ["apps/dev-app/src/app/proxy/enums/index.ts"], - "@proxy/models": ["apps/dev-app/src/app/proxy/models/index.ts"], - "@proxy/services": ["apps/dev-app/src/app/proxy/services/index.ts"] + "@proxy/*": ["apps/dev-app/src/app/proxy/*"] } }, "angularCompilerOptions": { diff --git a/templates/app/angular/tsconfig.base.json b/templates/app/angular/tsconfig.base.json index 0df99de0dd..7a5bf82308 100644 --- a/templates/app/angular/tsconfig.base.json +++ b/templates/app/angular/tsconfig.base.json @@ -15,9 +15,7 @@ "lib": ["es2018", "dom"], "paths": { "@proxy": ["src/app/proxy/index.ts"], - "@proxy/enums": ["src/app/proxy/enums/index.ts"], - "@proxy/models": ["src/app/proxy/models/index.ts"], - "@proxy/services": ["src/app/proxy/services/index.ts"] + "@proxy/*": ["src/app/proxy/*"] } }, "angularCompilerOptions": { diff --git a/templates/module/angular/tsconfig.base.json b/templates/module/angular/tsconfig.base.json index 9ea1a5cf44..5879bfbc59 100644 --- a/templates/module/angular/tsconfig.base.json +++ b/templates/module/angular/tsconfig.base.json @@ -9,13 +9,7 @@ "projects/my-project-name/config/src/public-api.ts" ], "@proxy": ["projects/my-project-name/src/lib/proxy/index.ts"], - "@proxy/enums": ["projects/my-project-name/src/lib/proxy/enums/index.ts"], - "@proxy/models": [ - "projects/my-project-name/src/lib/proxy/models/index.ts" - ], - "@proxy/services": [ - "projects/my-project-name/src/lib/proxy/services/index.ts" - ] + "@proxy/*": ["projects/my-project-name/src/lib/proxy/*"] } } } From c8f52d42958bf3e9c67beef383d8c24b325b5724 Mon Sep 17 00:00:00 2001 From: Erol Arkat Date: Tue, 1 Sep 2020 10:38:49 +0300 Subject: [PATCH 174/474] version update --- common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.props b/common.props index f1a0cf5890..3e4d964cb7 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 3.1.0-rc.3 + 3.1.0-rc.4 $(NoWarn);CS1591 https://abp.io/assets/abp_nupkg.png https://abp.io/ From c638c3ddb4902e6f74ff44f0a7654dba10850825 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 1 Sep 2020 16:01:57 +0800 Subject: [PATCH 175/474] Update Part-10.md Resolve #5180 --- docs/en/Tutorials/Part-10.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/en/Tutorials/Part-10.md b/docs/en/Tutorials/Part-10.md index 0fa4892298..5feacf99f4 100644 --- a/docs/en/Tutorials/Part-10.md +++ b/docs/en/Tutorials/Part-10.md @@ -376,6 +376,8 @@ namespace Acme.BookStore.Books public override async Task GetAsync(Guid id) { + await CheckGetPolicyAsync(); + //Prepare a query to join books and authors var query = from book in Repository join author in _authorRepository on book.AuthorId equals author.Id @@ -397,6 +399,8 @@ namespace Acme.BookStore.Books public override async Task> GetListAsync(PagedAndSortedResultRequestDto input) { + await CheckGetListPolicyAsync(); + //Prepare a query to join books and authors var query = from book in Repository join author in _authorRepository on book.AuthorId equals author.Id @@ -495,6 +499,8 @@ namespace Acme.BookStore.Books public override async Task GetAsync(Guid id) { + await CheckGetPolicyAsync(); + var book = await Repository.GetAsync(id); var bookDto = ObjectMapper.Map(book); @@ -507,6 +513,8 @@ namespace Acme.BookStore.Books public override async Task> GetListAsync(PagedAndSortedResultRequestDto input) { + await CheckGetListPolicyAsync(); + //Set a default sorting, if not provided if (input.Sorting.IsNullOrWhiteSpace()) { From 40c821db1c7e7acf467d410822f179ce8a24cc06 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Tue, 1 Sep 2020 11:03:23 +0300 Subject: [PATCH 176/474] add user pick type modal --- .../POST.md | 16 +++++++++++++--- .../ui-pick-type-modal.jpg | Bin 0 -> 551727 bytes .../ui-pick-type-modal2.jpg | Bin 0 -> 178952 bytes 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/ui-pick-type-modal.jpg create mode 100644 docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/ui-pick-type-modal2.jpg diff --git a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md index 2e663db6e0..2cb53e92fd 100644 --- a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md +++ b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md @@ -6,7 +6,7 @@ In this post, I'll show you how to add the user entity as a navigation property in your new entity, by the help of the ABP Suite. -> This article uses the MVC UI, but the same steps are applicable to the Angular UI. +> In the sample project MVC UI is used, but the same steps are applicable to the Angular UI as well. ## Code Generation @@ -46,11 +46,21 @@ Get back to ABP Suite, open the **Navigation Properties** tab of the ABP Suite, ### Generate the Code! -That's it! Click **Save and generate** button to create your page. You'll see the following page if there's everything goes well. +That's it! Click **Save and generate** button to create your page. You'll see the following page if everything goes well. ![final-page](final-page.jpg) -This is the new page that has been created by the ABP Suite. It can perform the fundamental CRUD operations. Also, it has the "App user" column that shows the related user name (you can easily change the automatically created "App user" title). +This is the new page that has been created by the ABP Suite. It can perform the fundamental CRUD operations. Also, it has the "App user" column that shows the related user name (you can easily change the automatically created "App user" title from the **Entity Name** field of the navigation property creation screen). + +**Picking Users from Look Up Table** + +We used dropdown element to select a user from the user list. If you have a lot of users, then it's good to pick a user from a look up table. A look up table is a modal window that lets you filter data and pick one. To do this, get back to Suite and click **Edit** button of user navigation which is set as `AppUserId` name. Choose "Modal" from the "UI Pick Type" field. Then click **Save and generate** button to recreate your page. + +![ui-pick-type-modal](ui-pick-type-modal.jpg) + +After successful code generation, you'll see the the user can be picked from user table. + +![ui-pick-type-modal2](ui-pick-type-modal2.jpg) ## About the ABP Commercial RC diff --git a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/ui-pick-type-modal.jpg b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/ui-pick-type-modal.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dcff62e742f22519ed24308ee36f84d07923fec9 GIT binary patch literal 551727 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

    -#7dcpk7X!9qn6Nt3Gi?{oh@q1HdvZzJ>#F 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


    Hji}=0 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 literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/ui-pick-type-modal2.jpg b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/ui-pick-type-modal2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d04aec570be203d461f3d6649a39500ebe224add GIT binary patch literal 178952 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�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

    V?qr@5H*+2 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�@lGHs~o;X33omlD%1VdFFzPXP~q< zTJZ3wdG5_~>WgQSGBKA)LRmWW9k6zd8?IyNK@FLsH8|0{`=i3UT9?FDbsgV!n7+b; zMPPS;yvCs|9oK@yRZ{GXu|uORy@h*I`b&1X7+tIi^`~0{@q%@;0syd8~P(cViift)pQO`tLpZ%mxfN3`!GkhMLNEGcn{jA$+9QPph{hVTYdjb983-jnCuCN2q zZ(0h+KA^Vv1U0Y8LES!gL2SYvjJpQk(I+tyQkw}2oh3WFv}krwWnSm+_cV0tSV{?rGhcD?9~er#;t{e@GG_fp`evaRp6u z2Ikq>HJxAIO|iUYq^{*9d*m&&{d%Kg@ohMH*Win*B_gIbUEY`wXu<~hw-)B*g2WS= z*E@yG3ae1l?xeM?u1~aBzUlUQA7M4QT~7L70QlvD4Y|^jBEu`_63)ESX?5~C9kxyd zK|;LLWW(8PPBjr9F>%fAh3_PT_NtZV&U?OoWzoSo_@b6a?kUb(6>1c}T%?mjO{R$> zEh~!vaRqfmpBla9{$5Nj5+7?ou6R2I2@a7`C5F+IqC)&?>Wo(u6?X+TV@b-$Y&aQW zTw~T6z?rwho`oa3f+Cyv^IRIMe&g72JLV*xQTnB1i$WAX_w#uB0L4PkG|7`OL_UGUFp2bNsO$ ze0z;mk`!4b`1kPpZe*dCw&*a@Xl# ztGUMEknA7{e9;F~lEH8$-O+i*=r!eONSDGqaSru>F*os;!TE5JmCtCKj=H{kD}LbKv-X$ET0C6$)-~E-lU3i0y;twRUX#E}^&_Idgw99v zTNOW(@R|hX=`dYGsPz?2^6*;U2||{V=()#B9zgAht6Pb0KA_lOaYm@a(P|qBFV};( z!RmFFx7zjU$_O~+_!BVW?+q%6E3-x5lZ+RND`}V_C>fvF!7yDldBcIs>3l(5e4XvS z16hRF?O8X{YVIf^+j#CR&#%)j?0mL2bfcqymHxxfq;m&18wK~OjZYjcjcf}NJfz{G z!V@XBHzK57bMyMwb(iFD_#k(!yO1@hk+-8amA)1D|AN^|G!l%QRZRBLC5~1)K3Hk| zNT~gGY?9KQx0;Gn^NE-Wv++~-s|dMm4YeT`dLN`kAr#=e_YQSR_>6UBW>PEy%p#O6 zqnZmls@1Qjr5%;IY z7^gJYIndchj%Q_DZyK8CY#tD}`$f%#t5<1t2RB(MFbiakGq;Rqx({By57CkW9_-f& z7FlKmi;xuE;+vpu5g#a+xXXob$&y&Hr$3;28Yqc{b~FiIICQ5kNKr(lBY~z3!(d7p z!b2+q_DE;fbWs&Fd^iob{-sSYHjgwbAVGOMMN>soII4);Oe1b~F8Z6+PZnFp=AP=M zm$NcfEIC zvEKAV>ASR{W{O?i8uqlv|sNu~^MgMrN5+uX(S@xr%dm)z0N5A#to z-Y=d8_T+xhUkzx?izC~}xISD-J=S`xMfG&(G4?HSLyJG4 z9F^qJW=EnUk1tL=AKzv&P}x}OWWOQu#l}@a`rGrhbYmYbp&v2YlyvDbvy4l$W+*7h zO6+(;kV*mOow2!?%RzD*$3x4|mw?T|XO3jXU!0!N^eDF}jjngetK1MkKYZ&`azi#q5k@opjm$bi#Wm2W{y#0OnR zrc-Xm_w>{?HH!o-3f8~9pVWFRl^VBmQ1{7j>`p^U>FT z9+$Q;n?%&hywllhbynowsLO^6qkXk^i=$76UGY3xJ$32zGRm=|$6AiIY+9o}|GErn zs(ZP0Dz}2e3BfJ#J8q5^v=&=f?B1efuMy^B{&6`>pjeNsAlrDAh8bd(fAo^jLrnFa zf$d^}(FhYv@*kFe1cFHv5z+0x>p#Az!T*%k|J&+ZX5Djna|_FwldRPli#-NwwfNYc zJVy5obrNCDhR&J13O=&cbhZ%T==19q#x_Hj=#Iws$1kQeIG);7s3hoa16sShF1eXu zCN=_%c$Gs7k;7H4Or+!%>D|xFzee{7!!NZeLJU=B4F+yg4P;u~9=`w}7k^I@%n#3s%O-xIjOsTJ`G1E*3ngH#nl3Kr z-4~{D2LZVG#~IgPM~Xz(veYgt@B6$6W&4P<02{06`+b2X6Z^yt96A-SXMB%9_o)1N zTv##1UQ-VV! z?a%~2!m*jYgx1yNRlwjcROC$ZGVp6wGub*=GqNIQi}A+5Be(e$$FlY61InqNYiA5Dob#DIL)@7d*r_juK6}bBp@~6$kc}h6UX6>bPHk`}^!1S1iDce; zz$kt6`7nsU+t3B%Ij*MwVwcW5YOf{0y3LvEzKd|zg9XY9!?D9q=f+;*#3-><0y#8? znW_^u}~0>Cw7?O^oh^Y;BeQkh_$zhZALd#$hRJ@iy=)@%lg9Dun6aIB^AXDHe9R*b^`hXI}ezQz$!y%{fyio}Dr%8Yz zaI91(`XXFG^2;<)^^hQW9RFMHWkY<5EGTBZpMT4^3an*Lx54)iH!{4~q zUnSMI>s%qT0*or$jQCI@^?nrv)1zk8K`0#k z4GS&-$)lN0_|}#7fn-pY_EBMkV=2m{_d^B5WPPvBGWCMz`^+zOx`@x$SCc$csfr5e zwb*O0#X^4GIbJf)v>T4ip~r4&1#+aS-*lCiGU3cYwn~EsA=E;%`yHpQ#jn~_(vaj- zMUEpLK5rqQ;ajNf?CP^wv3Rl})*>KmL`hFqbc8#V8db62OX0jh{MTxFltawS=_dd% zkwxq92h?F3^>#9Rc?$grfW?9dp!oL!U|CoqnK}^#a}(M(hSOD%64Nadzq?zu4H`vk zd!2mf+^zL8E6Sf~E@NGl)|WQiP<8F(5plhP8hbhYB$qmvZI{Y3xV|o^U}3~-y^Pft zov@)A>Ii!gHRNFC9X>a{js4~9CI{bLon(v{FqJ%P2IPjM9lXj2Z~=p!MN^GxIcS*s zK(UVPi`FsdCx5F3ZGUU#|KpnZFEd^$p&U895IcM2p2j^0nQY!bYxoyPevno(B@A|H5Tpp@rHy;{QgHN$d(jKl@;&#bE zEBv&MmG-q;dw4o6TO99OytjLHLU>W(06m7RbyU()UswO+>bk@S$Gb3jI3H|UAI#;{ zc@39Byy^IeUzu>M3RaG78BCj5-lnudOHuz`VX<)RyvVn2=L@g~GjfAb13tY|B(I&W z`I!;khEv@J{{H6|ifoP*eR+~7nXIvsw2&l~xuwkJ_{KpUwN_)?0OqpgG>Vpm?fnOG z8*|n5Ja$kR{#J?35ozB@S_RTKqV~78|E=vu{%5s48rX1}V>gZBoA&Wujc8r_Mm)L+ zrAT_6*odWx@V;?ZopxXZz?(b7jSMYn9o|}83cS{{QZ4GvMeTEv+{Nh%)4i{CD>{UT zwwufrpYIoosh*4gWhqxt2411mi!wXISFiHq;T{`}dL2ASzUcDmDdb&Lb2xVW9j7X6 zT~doVhvwsRn-T-%r5@4Zncb&-bP8zutxd2~{xr2$?bl#pzPaRap{ocGUXO#Lz9NN7 z+yC<4zX8O*?XvoJ{QegLh?m;UE+2!K0OH4HK=gi-9@OB=MD=ahXD!t(SHVOW(`UVcZO%(p7p9#?^pY2O6(|Lwnf+NNi1Ngxh?F&K~yXI?r{h z{`Hp>-O0}_qhiHwD?S0!zP8RH=4`jEW|lhk*ML$-N{aRZ1t!k;chEMEVz%~|S-A;m z1PgvZeZjUF{AclK{^HMbo!)VVJ4Jim8Sa1W#TJa-+JuS_-tqr%jnDVC1p|7tnW&R& za=#K&2|=A|s!TQy2V-qKE909jhjTBJa;k&jdk?V2(jR{l-=Oe~uRRN*bCYooU={nnlBbzVVb{O31c)Vv8WMfKQ9aK(gjw2 z2ZrA0>0@&A33VV`knKg&W~-P9T}zAV+gZWQbBuyb9?@iD%tb>T>u8ApHt{IP9yx+v zRwq6Vd9zZy&8`f}y^HWn5#q=o^6QCmV}OPi-U4WDbp^r^57Fu{6n{71Ey`+vk7%Y^lOvNGBK@`Aa2!}|k!s~IMsI}h)OWT?X zBEd%{(XiMM<|s)T#G|ksIK#QJ*+k}Y$v@sf=Z7V@vx0BT71cA>N}w6kD<=#oZ6F5rv?`QnIkH2~K_j&v+bH0l9-*WX2?etrB{I&sp+d02& zxj!Vre}KIzw7H|zymLbfVP#||+ba*96wj3F>)4Xl&BMx$?oe187r#Q$biu{acDeQa zHF$GaRGH$K^s#Xm1VNTbg$G!qP=FZ+W#2>h4O% zg)giq#w#MOD!z0S#(FxrTg#+zIzC1V-Ob1HTPWN=wJ@?+<_kPd!+$AH|y{~-D|E%~}9m~@6+QQwb#j`WmB@6z8| zu#;vS$u51(-H@!tP6CTGA4v0oG#`FV=>G2WL9Ox#Hd_-P@k`WLVUH7sltP5G(+?Aw zfFO}(^oth^QT5QKFCV5H3Ff(YH}L#hCMYDrrAJ?b<+@k-zPGViV0j_=Q-XVX1IEmI zuM2?dcZ$BRel7aG8bxl>EB>XPa+{HhaBYu zR&~!ISR6b8jEeXIZw2GMkqy4*423hdK@aSjiEe;*TO^9XYb4D9#4#L=0qR4bNz2?U zB2$^@<~V?@D8>SyUFyL&JQ_d*_v0709^MV)2Pt#oOX7BEa{i2$`CXM-ziAJA#p3+OfA{wS z9)|0?_=5mF)z@n|(jVIZAHSock2GQ zdkXvRZWt&1A9!p(q8gjft@tqJZBPZ67;f16JplFv4L~oquKCKU=k_nN_vb~LaQ!zx zW@b6G8oWXqHX}&hiKhWjny!H2cH^dqZI8frbNFAnxZ7b4A^rUCo`LZFU4D1@yDbvT z^N)sX|9&t}o}>}YO>!i`1@hj;E>Cv%3~u|6k4XM(5!V0oevEnY08eUz*jm^Iee8Ar zZnKRNaGO7P)^s>AySvptX@$Ml2WV)+>HD6i+|lv@LgScYDh?Zh*L6^R8epk-Xa*qZh@x1P=q4QIKE~YWlTlmUXU;T?TJ;M5% zUOi|HNE*YNfZm4rJfgahbI7hK{MQctM~6?^{`Y=HBfpAOmVMZ@LDHz)=`8w#e||Rx zpL8rUQGOZdmx)?2?9bNRHGRJdTmI1z1nGRgU!xtA>er&)(5?+q|K=ZEhx&f`n&a`^ z;uiE6D7Hpj-O_({`!CwEUqhB(RM*RzULuTNh?(Ftp#{=&)`kBU6Yp-=lmzc zT7T~v-<>xjUg(9b158U#b60k6y`Y;1vW~ZNy;y)ea!c7-@iwTh5FqsWA&(65px?;= z0uiy08jyz4q5@LQE7AaK4ispOs4*%hy!yg^0{MpaPTD=P*;~KMj3uFNUWY@(VN7C_u&cm;e#O_QW z4f#VR*^<1?a)&`!CaOedr`y=~T<@;(4pi8aS81&IphAhC7o7!`qX=1WatFpBWl4S^ zw3XOa`ZI1}GzE8I{%4Rvps$!9(1^N7i`YRWL~=k#yOW*_=_Mdd50WJy*~mZ89sH0} zO#kMovRm1PjMYasW5)VkrM&M`LFa%h|FZ1K{`57~_%-wJt?cfp_e(8ai;9%4`2ErY z|8A+4T^R~-Qo7>*CPfix@ZhE|-^+~V%xv#D$l{ZA7P41Lx3@ue(lb(U=I50_R@w$B z2A9`aWu>D(xQUV3g<7kY>t=v{>uN|zjlZ{;C;jbfLTYy!g%vO~rI(U&C>$DglXW^VcdPgu6V02J8Bj?OlV}E+~%S2 z>@N!fLfykkf~5omKo%(R07694CXjoH1Tr`CnvIZ^)BW&XfZ3-l{^g5(kk7+wod7X2 zP%3LDL~MgJAn0LYh3QLQfH24m-l>TP)`2B*ag(42h0yLb-xWu`J7#8th3nHR;-5_5jRi?d zNs~q}M#u!MD8Uu7wXcnG{pZ||j!bY{{{9!vd?-OO%T%hPc|N>&<#stHH%?u&Xoxtq zQx2obg8@^M4~J5jB2xqQK2LeUAFok%SYjsAlnYHC7v=>q&zvo08nW7YLgQ#F3wN;` zR1{{sNiFX3@V9YnP1C9d{-t?}fuL!tjr3gz0BC2Sx~(a>$g4UwZAw8?cJhoH)$H8W zS%1q-LMyu$of<>z>}(hNT$$>QJv{O#O38R#uEzJo_x@1D)s;0M|C8*aS~@j@iAVmK zWL?p2djQ*+QdAm=89WwvG4?pi8R=8zcRlv2XzTnR!!V&5hCL>#3q4bVh@%R;ReY2e zb*pYx$jcSp{8lt%iac1JglR&r1B~a0FF|Acg|Dvk#6OQ2%~4xvah|7Z?`xW=ov8xX zRG7j_Oc{Z;b4mz0D2WBWpaV#sL>kUjy*i;GhM9srtz;E2q}hNy#bf5;b9zcLKDm23 zoF5!)e#-ycoi19fG3zXks$5!DyAoVKM@(hOPl-kM5cDm)8sft{521(LX$|a^mP>ZN zZjV>Fkv4vXFmm^UcK`ihstg1tLYWYSoLHs2SlqPKZfeRP|2Idq!S5t8lV7|Oaw&3|V1UZ@s^Ap8VCdm$O>Q^1erNeH*Kx+6XazCpHR)rI2j@$@ zHg)OH7rETujNf&-XhF5tq23)<)k;5r*CUh_!a{jCQP5yK{U{?=X;`&usz)rSeHyK_ zdIiCibo=3n)Qf&WKh2y)f)b%G5@NVbqD|I@ZdE*N*>Z;`O8AMPmydDR0x#2FDfa_ok zq9+TU!PPrc&+=`&d7GJ&CmZuqxhL6#eRYd4lt@!M%579N{5JP#x{aY}O3ED5oJV4W zjrSeQs!+wk$87B?Df7ekBNZsibB8geXn_W>KeE6+Q0ZAuP^R1cMmCPL`*JC^e5Xug zFAQDd+v``!?}k}2j;xGvbeh&tb1B@|oZB}m%&qITib*d*nYp!SP>nKw$%gb%RihJ@ z7d7)22PeYDh?;#8039lK!n=)}Pi&aBxCS|C?D33Qtv*p-ACWJn7kH-FjBw|brOIcL zManEcG)ljX5x94Y%fT2&9P~L|f;!U1JYrG*0Q*x9AghLBwj4(DtLKz?b-uR4ohuq_ zS?tei80fKxfZVp(BOzlwjl#-qQa}HP7Sy-cjGf>I%>JwL(!K* zsRWLuN6TDQl~|~>B3|hWz;TO)LGBECULd>^Ti#onHha%YhFS52wa04)yPWm1FxL|Q z{fc*(HmzSwstyXR$ZW9%`J9>O5hCQ2tB#Zz0W5^d<;P$2nG6jc`uuTYxx&f7#W-355|4gHc};p#n;c#g>Y#- z>h(XDyMdwWD9o{_dd`bp4k-|U)|wv0M&+nx8C!WIGSUwv?Kx`HUo$h1%v8sDh+q z*Zk6n@#>PbLKWBY(4jRN1IONV6=vBpSv!7Cb=hCdm)lmLUE+Q(bI(Jvz4%(zIy?Z> z_79&+VnCX;KJXFkkmUr2$?@ZDG$fj9UyJ7}W77Jk1&FT7~lO?PCkDa9TV`%+cvyI1(3RcfhQ4EA1o|t&ZIFY_k z1~9`@dtF2oFW$&>3mdx_mF*>mHmPZJe%Xg;9{n7|^!_&EIVIej=CV8AQZ+bt8&srH z2MI}{A<~&*qefi=3Zgh|46j&}wA)R_o?8~FI#$`DyR25>^;XW|VY&+|Qc4a8GOBAK z>^|qcbUJ0(M>YK`xx4YISp(kjLoLGdzSTiPCok0q`Kq72F1R-ulykk{b5O}v32J`q zWDwfEst*?8C7x+$W5`fwSF8^$LR1O|_a{^3%~4Ao_NU&*-v{M66r>)^_3nC{zfd@BhriaR3*+5^$Jm|M0ue9v)2&- z>gRymHbQ*P;gzu!=;FHP3|O7#44o%rY5DX^i4|kQo?+cK?~fkH$*Cwmb5Zr`t&@v~ z$=yKA`f>+++Mk~)MsI`?dGLyzPPA|iH%}Fg^~mIxPvQCEWfCWz->g4==ECgJMW>Us z4;6WaOvW?=UBLMki@a!B12nW&^8j|d2FxT*UDzxFlkb@9PVdO|`e`)2&(qCODEV|& zO6FVqM+V_c!t-)*&v7sZwzobOwl5h)6$n<8HVxiNi|-*G>*iXrGQ7BYsNVjeAFnyX z71c(yHFN5FmIZHdYpZy=+$D278Fm(T!KWLRFB&N8I-23b=5}xTYUjnNVS~85a_4>z$@?gY9R&)hs->>n5bPqQHkqS-=?E*E!+40Y$m+PvnVG8yrTrn7~Y zD(vObd#$Ty^j7VR{#x0=qD^jCu-qv;l0X}nd z#>$(Awb>4*`#as|jhE|@fBu^Pfu;4OLu*;VMdOg(61bgi$yyjSu-!o9s#9R45cP%Ly) zDHl7Uq4#<_73OVa*dhD3K~}BIhE{O;^5Y{B0tyw_5H#&2jzmQ*tD_wSp4Y}g(o15@ z2;)Z!fR!C~xVO9|#;`YV@ubtHQ}dLvWy%*&FC=?y1JG1Oc%5@dBRo+~ZHPU6 zc~;nXxp7&7MV`^PEm<=b(`mFd-$RUDVsn*lhC~dr`bc_dVnfof08#U3Ly#3}Lzmce zkYg#y+1oqw@=;Z~$adp8k(ahu#mS~i6ct&0a`bMk`dB|yr)szJ;-2}Mt?rMo**@dN zk{o^=J>NU@O_x3tozoGXT8=F80asv)$6#2)B+7N%e8vDHEw;95i+;VEF!)rV==jO( zkdoqeDg&qL&3LV-qJ=*rZ+e0`W{30bgT~M}Yx*&!Y3|an5Yh3%v*(J`WA_FoDozHS zoAhfvmz{M%?vtv!kIB|1hRdjAu1j0VA^w*&D$fm^=3Fm_en7H&v1E@NcY^Mv_2vZ0 zThYQdbGjc-T@@)f%^hKYqN+9F)#%N3Mo`SxJ1MKEHw!NFZ1rsLPMVAGy4x{2^uAj* zVXWH*aSphVs}xt72-)h?F4FS6xY4X?Mb=_Y%@Ri*?iWdOKCAgC5>;7&&Z^l!GSKIn zs@`49t$fO^Zf2=9-3r<}jIvLLEwYK^>H38&$6v-M+r6xLcK1nQqLjB{e*=s zfd(Fse>P){K`9c|BzUB zr3|Cb98}L?f3AFH5hr^(O?{lo^`o9c~R<&_?Km)5^Tg+*fY~jb~{;_^!gV~+?VP<E3oed-a+5IQn(&?Q>nZPg5}#;1a51x^J}%G!$#BKX@u*2tlP z^=dtX$TkXW7#dDwQjZYUY+oz!Qp~jpy_KIIY94S|eox1H-djiMBJX8vW_#q}DZV^@Mkhp{TdIGu*!IuA!<*wHi9Osl?E z^$%0s^9YzBYmuT*j&C=*GFGw}-}CrjMe4v8%_(!?5w3H{b$~kDO{sX4ntn6p;06^qBL~Lz^yFmr_0~Hsp(w z^F#>~iZWjl^TcQT0RyY}l=n;xKvzTSps5@oaitqk4$}&3w)x|DUATt8;WTR5a(` zL?noYd$im~SYdolqN>_#*R7Naa~6wU6u+T~8jMuT+jnr`u7d3CGS~sE$8dc-Ys)j& zY47+&3Drrpb~$O(2L-ADjurc0VD^heMPasJf%s#0`#!#%(=T>)bwNWOr7N<89kI9v zqH`HJ>Da1<@o2H`amnY9ZN^-U$f*R+xl9>_M7NqCi$c<3Ufm5jtw-@w^j*-r(J&M7 zIP!j>Iz8{@j;Y>qg-qf1w&q+}`?9SfI#hwzWsiId4IfIF8Djz zM1#p$6RS7Oai`oML-8&VT-M2{QCb?xABQ_vm(V?U^#Idb1-m-B?t*7f2PbhSa9H0n zMA(S}dsa73A`>nGdT(~M)}uJK_hbtHnbE6R<9vJ0RafWI*0#_42ochqJ#%zxq%{`e z4GonzTVK;$iD5c%G4FU3MgKC_^>8!(BD~`GC&+kXgxBdCqgI?(3)+~%NW3c-Rc>7V>1es2!Ji)W% z_IFWI=6j=_QcGbz-SGJ+d2bj`hAQZM&)4z(R`$|@!A}z_suR8Dx$vfgtHgH@qQ6ZD zAqF`yBztTdWJ-(wWVQ`DNrX?yy;?qq*Q_i++hZ7m3Sf(a`iEl27Mfi|Y_n7DEDrPc z97~|um+8hn7FV6ba?;tJS@Xqwyh7W0({X2Acs-Oe@fex5$9WMNH=mDm|I=4TFXW);+_DM+Tctc%7nKE9?ftRO;t}&X@HRxJ~LA8NGs|VIWX3N>F`7zH4$&W zc1h9Km31WdbYf%-9AgYf?VSg*<1knFmiDn5Sjo!?hN$#t2A zTbAjN8<1xoJt(a>NQ1D`_8D@qJH072w10*C6nlfiCr3#jG)p=}Y$6`+%+BSS;}8g< zuOJjWEWc;ibVNw+K3U7vwcL$5MR5MJUP2h)>{Ms01TuR@^dT%Fc;OK+ZDZ<;tphyQ zNLg%TZD>$avQG$l) zk{a(3DJiMLYoG3x<~}8a+(7l$OTzlhR65tp%)CW_TEUr*>Rd|ZGIF+0FH4X$C|lzz z`BA-fQLL68F8AfK#=$}unX(Y5R>DI3&Ge7QT&s1yRM8|RV$$F9)RgoL;kA1T?OEnI zTm#o=HMGU3uG#aKbw#Aj8jx=~WQ1(&&pvlEg})TC2U{ZRFq+`4WSe^@{&H$jFKvj( zgpS@r%t&O4|0$bKc>7E&OdT7PSybqr;l_NmFOXh`cB42*KU|dFUpCHM*4FvL#|ydyA>GApE1>#;N{9uG=rLt*B)sY!Xi0P5p9jHgDG* zc%FUQipf*u^=K}x*Hk5lizrx45`)*t&XY$`#0axjC*I>40%c|2aoL%zg6n#9qqS5q z0pFg{wpn;@Y>0?;WWPzN$RotH7CH$)^i9ck^2IHPrDQoEo|1^05O-kD9Kl zO0_|j)^=J_W+I~yugid*k0^QRWS`k%{;V8onM01J9j&A>he5} zmZp(I8)P+GAkSWAl*fh^_R;t!s#=bhm*JyOcVr&}o;D$dUs!hr?i#l>7RTqhh+M}~ ze3_NzuSiEW4(h)zP?xbajOM*GKM8)~m8pBKRW4EAJgHIi0JgKW92Mse zFA@{HWjR(^)~)j%5gL7{o?ZFaJ!-moN4>~I=cvB0`XaybeCJV4OGU=fL9ua2j=2{v zc77C)N`^2v0Wk`;bWD?R-iP~vK}9)c1)jE7%HW1j>Lsr05hdru?pZnIuCaFw`?McK zqF$$=#nY1R-YzIp=gg6tEPtAF`%Jc7q`V!}#cd?qqt|2{$qKJw8}Zh?w%L;c;gz zK?`6)P_1=ff1ktm<;$g?r^v;f@)QfHi%mK*aJz}{+09dx7 zMTrNLuTA4L3O{N-L$H)VW&NpzsMn_6!B_??V=MQdc(I{1E9b=wR3h$mOkLw^pIm`j zi5_Iv-lPbl7`a{GL+$p#+rBaWQ((dvZPGzE{hprVhr2AOr)d4_#P*nL9pjXjod{pK zVr|SO(m~7>Yt@chg5C$xKnlo-RyjeS+Vcts24=Ymmk$s=px{_RN&M64dN7Wq5JupQ zMTl;LJkp8BHlJP79Ix&6u~=$;bz6LJJxNx=0>H>Q=l+{AW!T!^#s*fsPHdheko+J!GEb^%}s%q3L!N>2WlBBo@NWuL<}znmPR~G z-W0ZxF(IQcEGq1473(Z2e>y_6k)yG8xlf=`y1TxsnCF0oPOnCnNXs=V+~WA@0fele zSzy)7mqnB5aAz9GXgZ#e#S!vly2F|67F33h_kG``8HdMFIl5TgR3ji)$}D&C^U#II zeS>rQs85{XLHhaO`)#67CXt9y(Y~Y_;-RisgGDE9Q7w}*gns^|c6?4~BM!YN=zTZ6 z!bL`MDsDz$W+REsxdL7n9})GS{OrL(`&2dCB?Lm8$=uF@t3Z29(t=ku5yZ&;+DS89 zvhorZ}F$#3qS{+(KZ7H23U;wDd?(TkILEA42)Sc^Dh*~c0chQHGzos;$`xZ}JUaZDuv z8YwPyE2K)O#5Rkt&{b+B!iHx`vt{f%&}!V_b*hgZfk{glb9bq~y|Src8A7a>l(~k8 zYvSc9qVkwWb)az}(gU%!Eu{Nv^dz3}60w;pZC0~Jc=2J)okkzUOlx6UhAU0~f0?OSWTabry6 zXiHDcM9nfwC*NDUsC%!;DxIa|3XStLGO}ibH_k_f3g(`v*#U$6fQTb?+5TR!z@O@S zb~V=iYr1Uj@tgw|Z;}1P5(M!<{Y_i3Bh4yG0N>lQP0NmD`@rQzG4=8J%mRt9+z zwh>iYJMLOze*i0~7r!!m8Lc1ZkUH3GIrq4c1zlj*9;>fab-G$e+2g*c6zl0B8*g4aibdx zS*X=fX#Fya+eYmWOGg3XAhy{aQ<*~N7Cp_C$PiNTru7ZuY2Vue$~G0h`6Z!Ii`v_u z)}2Qd0Je@IdI%8K1VKRKMwAs~5b~j@k_T8P!nT&+YpmIvSsBEZZIE=LKZr`a%?lFT zn4HHO6!X-(0YnV+mHZL#@ZB zu^g8ISs=KrEMM$-1huR>!~=XvZjOrqgauJr_M2y0Lm`;s*2pat5zo5&!lvRlTQ@aa z!!{_Nv5p(8;g{>o4Xurjc$O{PV{ohJ5tB-HFl)D8bR>U*r=#e{;e8!BlsLpkqEp7} zLT>5tOO>%bOEful*KbDGo?&tO>`a&b&^tmA*8O_;s?QAY^iBu-W?W%RxR0mL#4cm1 zunq@f%p5#=czE9+OHL=>*t>s#@9m|=7i3y1-a#ItA5&8vWF40|3EkxS{9dpv!P9`K zvUcuUn2{YtS3CK+k+^t=L3r~j{?yJZqpVf?C@JSJgY%6|g~XHgOJ1M!FVIE$x4Jxc zGo$^V@T9%l28Fh2ZXt=j-JQP)tE2E%R}a!JUYXWt?&1m1%*%d^T4^SFn81hCiL4b$ zpzDBAN;y!_eO?UP=l}#5!6?KDH5q)CXX-6-^oi5(=1Ac(|9&f3KY1R;Z4g~b8sH`=Qi$v- z8o=PunxZH6?fhv!#GLyq1ie()J0LS6q=;4RQdF30{$A20dZFH~}Yr|%%uI!V3vzxfb<>%sn+KKs33>Jkbu>DuyK z!@=BZVNHl=ux$U5jHK;g3~w%Dj)QdZB4^I*MiiG1{c5`=BO$#Q67$1(?h)^b*|#CROl94duw}eql&}7e-{7fTSKsMu~E7w+udmWtS&VZROPj!yvaGXT#mG8GI6w8)hHhgPot)s^#oE8xBGrjw#C z5T=MDC>6Z_*w#Lhu*#qLW%>t@&)w51`DdX}djL?s!rnuC2nR$5mu7y02>HCKQ`HOi@XVt*v*cD!zxcP%7`%q2#0Kqvp|ifQxAyhpHuJYUlTh1>*fl}8PW79(=N_Ao;{{Wd75 ziP!;I({3eFJGBy(Q;1+*+@)<$y9xw*q!Y5q5rqw4N8<768_fXaJY!Z9VFl;0)ef8= zQ8kS9iu&PFA)_mhf+zwDKy%^G4Im62Wspw(`#knFqwe$dmmX6gs{8<^n8$?FIHL8= zpi=_GF-_fDtiWhrCsdZ(;9yvz25Hx*leW$x(3*ThG3juZ_Wtu9UH90>bewt}bBae# zSuyHz@8f58Da~VV9E(5*N;ULO+HI9Nht9o^VOKIqa?`%-w~-@P$<-v>^iAy2qdbTt zcKP36NB>=5!vM}0G090!&$;)1be$R&XU%E~9793s9OWa3) z1onA;ED8Cb&>m<&s~7^P5dpjVGux94_7%YP6bpc<0JbMPBjScSUK`&wUJ7|GB={2f zruFjIH?EXkeH0Q}V9&sx=Q@hmZ#a7Z)a)(s?2OT=^VAP>hkObTB$}BE*!Z=!E3sbx zP7DL8jY5tThZ4o-*m^3N+r%OJjjdvHyj{7U@GIKyAhPxE*jQ)@bHnuh>0{RfkOH^?1rXZ(YYo5mVqd5-Vm-vjwFLu zEZ{82zi_H9Hp7Qz;h~UtE?1S+dZ3pT!#*1TyiQKhx^=P)hgHzfp z9{1B4Pc5CBcJe}Rm^b0ld00n=vBz8+mk;4D?{vu4yhY1Bz01#}0nacL|!6+O8694anyZt<0z-iLATm}OULoKuPu0LyI+CEA zq|{w#^kqb%s4u(9Hjw|K)+t@90nJZ`jVCxZr^g}q1Gw>Ucp*dKXfvD)8>VBTq8G1j zYb~QOz}mnY_Hb-Q>{7PsyMA#^<*Dl z_T@!Ho2I1}c{s|SY%dmR=~7xHTVgoFSm6W2?$v6OR!DnT=&PUd0Hlb&L$qU66>ICG zo9Hi3UhBRNexjRxT#}Q2xZsKYY`WeK5il4-U-AQ_G? zi(<6Cwvtj>x|#tk zcy-SkW`lW*o<-C|lY_;`26Cyvx?V=u!esm*Ld7=7+(fsIS;-=O$nA`V*r3{lSLKhD zLpV>LryQg7v_k|ztYBDvm4^PPeyX~7iKG!2lZ}?!edBkfc|EoZsooNn7Ee}qJgV1X0DrZJzM2{Lh$PYLrb4|wSBRoRdTmG9|fLcU4-Q=1*Q2k!caQ>%Ynor*yqUo>p2!R z2WHymq(e&;(qK&==F=zBAC=Iwu%8n;{kV}Eg#$PS8axqw5{=cvsP{?KV(R@SN(VHY zurgX4&e2)-F|SH+*CJx%2g;22!WrCNXC;o!edx&TGP`m{$N0@u#j-?NZco@CER(@v z0Ki`FeS@Vz_9v(}x-*wsoHjnv_g;u+?t=o@m`8zivl^C*%wMjP zSq?^`bdXUx)`rUfA(eM3meTf&Ct+WWy6|z+!^tt)Q%^&5)E-Z9#mLe@C-gjJ&zk1k zG56@MJbod}r6P9>H)kU0(!T;E!74v?39liD^Z;M!!{K^Z+M{hyarfqH*ef{7t{5Lk z6e5U45h@X3Xj-BwUWHJy4SH4gp}4BGN1bu~W_GvD&hOq;_A1s1IbgQ_EQnTNsz?$< z`{T7@|7chGj|I_ohZc%}ws+Ss6_86gn?pDZG%gg74YvQx00S49U9K&Hw60sQ?lybj8Gc12N`L4oR_l7}4v=jdh8 zTYg5&vo&;h|B};Sb_88Kp?y`aH0#->Gv=l|LipvItiTk#bp3rAwocCiZf)#an_upS zjuBstn2lydg$&6gTsS^im@w~3!69qb43Seai+HezL7aa1%=o-e5hhQks2BQ%+k1JD zVti2Dux*_)iW6Jvtys&nX(-+mUtg<{ng;5(o7}i?ii%oAZMs~2%v-&|W4$LU+nTK} z_ci=T{M5>d%X815^9F+$=@B&hVCXcqo|uler_Dt%{k3xTA^R=%zm7;x1s#cM!;!Mcsg z_1_(7_6J=b`7L(C6<9x26*LJFJ zgOc2UjFBes=#VJUZ+s(<9D*{(5DQUB|27 z&!zz>ZaFmZLKHU44Y@@XHB>tJHm;5#^O1FwvTke*0<$j%fLDQa%LW)Xc0wZF1Qn)&Zpk0>K8RBctGoBP(VSvI znKS4bMYZecBKE7BbCmKeoiIB^oXl+S7n~UUVQyzlC0$VMn}7&;@=$dC@_w{I+P-V- z9pP7VTylpZAfJv37`(qWP+*c5^-4oS>GSdK&Dmg*v-&TKf&VAYiWT*NBVlyUV$UyN zlgvLeKHz_HZ_)t&j@Sz^_Y2RIK$0I={#XBsDN_g@0w{WZM#StwrSPII-?I9-U|{bD znP33q%|35~j^&irp#<=L!^AT1L}BsYrVsfuB-8&J?&0qg3|N+!J$l7o&u_K*Ev1)s z930YrCQX zT%$uFh7mRf~bJQUogu3#!dil0_T`Lfm~L28{}II#(Pvy;TRZ~ zL?=}+T;Ks1z-EB^agV4UuMfN+1$l>z0e`*=cYp(w3Cln10QvE1v)bTqMu=m?t8mf{ zkw%F0$^mnnG>1q=fn>Hxe&{>LPcjN5qd+nWB%?qw3g0buNJfEV6#mnULdefca0YdG zZ2$P6`4DHn#=bANI4{QbtORK~lq!Q?Im_|9!Er~6zF@WHJ}KC8flOapVjpN;mbT%M g0Ko Date: Tue, 1 Sep 2020 11:03:50 +0300 Subject: [PATCH 177/474] fix index.cshtml code --- .../POST.md | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md b/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md index 1b7cef0867..f7c00ebee7 100644 --- a/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md +++ b/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md @@ -155,36 +155,33 @@ Open your **Index.cshtml** and set the content as below. We added a form that po ```html @page -@inject IHtmlLocalizer L -@using Microsoft.AspNetCore.Mvc.Localization -@using PasswordlessAuthentication.Localization -@using PasswordlessAuthentication.Web.Menus +@using MyBookStore.Web.Menus @using Volo.Abp.AspNetCore.Mvc.UI.Layout -@model PasswordlessAuthentication.Web.Pages.IndexModel - +@model MyBookStore.Web.Pages.IndexModel +@using Microsoft.AspNetCore.Mvc.Localization +@using MyBookStore.Localization +@inject IHtmlLocalizer L @{ ViewBag.PageTitle = "Home"; } -@inject IPageLayout PageLayout; +@inject IPageLayout PageLayout @{ PageLayout.Content.Title = L["Home"].Value; PageLayout.Content.BreadCrumb.Add(L["Menu:Home"].Value); - PageLayout.Content.MenuItemName = PasswordlessAuthenticationMenus.Home; + PageLayout.Content.MenuItemName = MyBookStoreMenus.Home; } -

    - + Generate passwordless token link @if (Model.PasswordlessLoginUrl != null) { - [@Model.PasswordlessLoginUrl](/en/commercial/latest/how-to/@Model.PasswordlessLoginUrl) + @Model.PasswordlessLoginUrl } - From d22cb0057a1ac37a614c761ea116f9eeae687712 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Tue, 1 Sep 2020 11:52:58 +0300 Subject: [PATCH 178/474] Update POST.md --- .../2020-08-07-Passwordless-Authentication/POST.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md b/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md index cc667a7abe..b31ea023f2 100644 --- a/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md +++ b/docs/en/Community-Articles/2020-08-07-Passwordless-Authentication/POST.md @@ -2,17 +2,17 @@ ## Introduction -In this tutorial, we will show you how to add a custom token provider to authenticate a user with a link, instead of entering a password. +In this tutorial, we will show you how to add a custom token provider to authenticate a user with a link, instead of entering the password. -This can be especially useful if you want to make someone login to the application with your user, without sharing your secret password. The generated link will be for a single use. +This can be useful especially if you want to make someone login to the application with your user, without sharing your secret password. The generated link will be for a single use. ### Source Code -The completed sample is available on [the GitHub repository](https://github.com/abpframework/abp-samples/tree/master/PasswordlessAuthentication). +The completed sample is available on [GitHub repository](https://github.com/abpframework/abp-samples/tree/master/PasswordlessAuthentication). ## Creating the Solution -Before starting to the development, create a new solution named `PasswordlessAuthentication` and run it by following the [getting started tutorial](https://docs.abp.io/en/abp/latest/Getting-Started?UI=MVC&DB=EF&Tiered=No). +Before starting the development, create a new solution named `PasswordlessAuthentication` and run it by following the [getting started tutorial](https://docs.abp.io/en/abp/latest/Getting-Started?UI=MVC&DB=EF&Tiered=No). ## Step-1 @@ -272,4 +272,4 @@ That's all! We created a passwordless login with 7 steps. ## Source Code -The completed sample is available on [the GitHub repository](https://github.com/abpframework/abp-samples/tree/master/PasswordlessAuthentication). \ No newline at end of file +The completed sample is available on [GitHub repository](https://github.com/abpframework/abp-samples/tree/master/PasswordlessAuthentication). \ No newline at end of file From a542a88a8047ebaea3aeaa81e302a6a2859f6b7b Mon Sep 17 00:00:00 2001 From: EngincanV Date: Tue, 1 Sep 2020 12:16:46 +0300 Subject: [PATCH 179/474] CmsKit: last changes after review --- .../Volo/CmsKit/Ratings/RatingConsts.cs | 4 ++-- .../src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs | 4 ++-- .../Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs | 3 ++- .../Pages/CmsKit/Shared/Components/Rating/Default.cshtml | 2 +- .../CmsKit/Shared/Components/Rating/RatingViewComponent.cs | 2 +- .../Pages/CmsKit/Shared/Components/Rating/default.js | 6 ++---- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs index 27fa9d7584..d52bec599b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs @@ -8,8 +8,8 @@ namespace Volo.CmsKit.Ratings public static int MaxEntityIdLength { get; set; } = CmsEntityConsts.MaxEntityIdLength; - public static int MaxRating { get; set; } = 5; + public const int MaxStarCount = 5; - public static int MinRating { get; set; } = 0; + public const int MinStarCount = 1; } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs index 75f0499db3..a3575cf0b4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Ratings/Rating.cs @@ -44,13 +44,13 @@ namespace Volo.CmsKit.Ratings public virtual void SetStarCount(short starCount) { - if(starCount <= RatingConsts.MaxRating && starCount > RatingConsts.MinRating) + if(starCount <= RatingConsts.MaxStarCount && starCount >= RatingConsts.MinStarCount) { StarCount = starCount; } else { - throw new ArgumentOutOfRangeException("Choosen star must between 1 and 5"); + throw new ArgumentOutOfRangeException($"Choosen star must between {RatingConsts.MinStarCount} and {RatingConsts.MaxStarCount}"); } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs index 3018ed8b30..c6fa01b7d4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs @@ -1,10 +1,11 @@ using System.ComponentModel.DataAnnotations; +using Volo.CmsKit.Ratings; namespace Volo.CmsKit.Public.Ratings { public class CreateUpdateRatingInput { - [Required, Range(1, 5)] + [Required, Range(RatingConsts.MinStarCount, RatingConsts.MaxStarCount)] public short StarCount { get; set; } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml index b5cfbbfaa9..82397e49c4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/Default.cshtml @@ -5,7 +5,7 @@ @model Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating.RatingViewModel @inject IHtmlLocalizer L -
    +
    @if (CurrentUser.IsAuthenticated) {
    diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs index aabbd3c286..cae050ea40 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/RatingViewComponent.cs @@ -42,7 +42,7 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating } var loginUrl = - $"{AbpMvcUiOptions.LoginUrl}?returnUrl={HttpContext.Request.Path.ToString()}&returnUrlHash=#cms-comment_{entityType}_{entityId}"; + $"{AbpMvcUiOptions.LoginUrl}?returnUrl={HttpContext.Request.Path.ToString()}&returnUrlHash=#cms-rating_{entityType}_{entityId}"; var viewModel = new RatingViewModel { diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js index 4416d7fb48..431fd7884b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Rating/default.js @@ -72,8 +72,7 @@ init: init, getFilters: getFilters } - } - ; + }; $('.abp-widget-wrapper[data-widget-name="CmsRating"]') .each(function () { @@ -83,7 +82,6 @@ widgetManager.init($(this)); }); - }) - ; + }); }) (jQuery); \ No newline at end of file From 625cd089a1ffc9471584af068080ef2cea53f0f8 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 1 Sep 2020 12:25:50 +0300 Subject: [PATCH 180/474] fix: change configuration of setupAutomaticSilentRefresh method --- .../core/src/lib/strategies/auth-flow.strategy.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts b/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts index 19fa4f509c..eb8dd5b3a2 100644 --- a/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts +++ b/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts @@ -25,7 +25,7 @@ export abstract class AuthFlowStrategy { constructor(protected injector: Injector) { this.store = injector.get(Store); this.oAuthService = injector.get(OAuthService); - this.oAuthConfig = injector.get(Store).selectSnapshot(ConfigState.getDeep('environment.oAuthConfig')); + this.oAuthConfig = this.store.selectSnapshot(ConfigState.getDeep('environment.oAuthConfig')); } async init(): Promise { @@ -41,7 +41,14 @@ export class AuthCodeFlowStrategy extends AuthFlowStrategy { return super .init() .then(() => this.oAuthService.tryLogin()) - .then(() => this.oAuthService.setupAutomaticSilentRefresh()); + .then(() => { + if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) { + return Promise.resolve(); + } + + return this.oAuthService.refreshToken() as Promise; + }) + .then(() => this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token')); } login() { @@ -88,7 +95,7 @@ export class AuthPasswordFlowStrategy extends AuthFlowStrategy { ) .pipe( tap(() => this.oAuthService.logOut()), - switchMap(() => this.store.dispatch(new GetAppConfiguration())), + switchMap(() => this.store.dispatch(new GetAppConfiguration())), ); } From 3e83faf40538a54a642af862c49875c879d320f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 1 Sep 2020 12:43:15 +0300 Subject: [PATCH 181/474] Update en.json --- .../Community/Localization/Resources/en.json | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json index 9451e616ff..ff68d1d6eb 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json @@ -64,15 +64,12 @@ "CoverImage": "Cover Image", "ShareYourExperiencesWithTheABPFramework": "Share your experiences with the ABP Framework!", "Optional": "Optional", - "UpdateUserNameInfo": "Name", - "UpdateUserSurnameInfo": "Surname", - "UpdateUserWebSiteInfo": "Example: https://abp.io", - "UpdateUserTwitterInfo": "Example: abpframework", - "UpdateUserGithubInfo": "Example: volosoft", - "UpdateUserLinkedinInfo": "Example: https://www.linkedin.com/company/volosoft", - "UpdateUserCompanyInfo": "Example: Volosoft Computer & Technology", - "UpdateUserJobTitleInfo": "Example: Software Engineer Intern", - "UpdateUserBiographyInfo": "About you", + "UpdateUserWebSiteInfo": "Example: https://johndoe.com", + "UpdateUserTwitterInfo": "Example: johndoe", + "UpdateUserGithubInfo": "Example: johndoe", + "UpdateUserLinkedinInfo": "Example: https://www.linkedin.com/...", + "UpdateUserCompanyInfo": "Example: Volosoft", + "UpdateUserJobTitleInfo": "Example: Software Developer", "UserName": "UserName", "Company": "Company", "PersonalWebsite": "Personal Website", From 2f611a582eee1a180797ada39617fb0dbf603604 Mon Sep 17 00:00:00 2001 From: erolarkat Date: Tue, 1 Sep 2020 13:55:51 +0300 Subject: [PATCH 182/474] npm packages 3.1.0-rc.4 --- .../package.json | 2 +- .../yarn.lock | 222 ++++++------ .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../app/Volo.BloggingTestApp/package.json | 4 +- .../app/Volo.BloggingTestApp/yarn.lock | 330 +++++++++--------- .../Volo.ClientSimulation.Demo/package.json | 2 +- .../demo/Volo.ClientSimulation.Demo/yarn.lock | 236 ++++++------- modules/cms-kit/angular/package.json | 10 +- .../angular/projects/cms-kit/package.json | 4 +- .../Volo.CmsKit.IdentityServer/package.json | 2 +- .../host/Volo.CmsKit.IdentityServer/yarn.lock | 236 ++++++------- .../host/Volo.CmsKit.Web.Host/package.json | 2 +- .../host/Volo.CmsKit.Web.Host/yarn.lock | 236 ++++++------- .../host/Volo.CmsKit.Web.Unified/package.json | 2 +- .../host/Volo.CmsKit.Web.Unified/yarn.lock | 236 ++++++------- modules/docs/app/VoloDocs.Web/package.json | 4 +- modules/docs/app/VoloDocs.Web/yarn.lock | 296 ++++++++-------- npm/lerna.json | 2 +- npm/ng-packs/lerna.version.json | 2 +- npm/ng-packs/package.json | 20 +- npm/ng-packs/packages/account/package.json | 4 +- npm/ng-packs/packages/components/package.json | 4 +- npm/ng-packs/packages/core/package.json | 4 +- .../packages/feature-management/package.json | 4 +- npm/ng-packs/packages/identity/package.json | 6 +- .../permission-management/package.json | 4 +- npm/ng-packs/packages/schematics/package.json | 2 +- .../packages/setting-management/package.json | 4 +- .../packages/tenant-management/package.json | 6 +- .../packages/theme-basic/package.json | 4 +- .../packages/theme-shared/package.json | 4 +- npm/ng-packs/yarn.lock | 108 +++--- npm/packs/anchor-js/package.json | 4 +- .../package.json | 4 +- .../package.json | 30 +- npm/packs/aspnetcore.mvc.ui/package.json | 2 +- npm/packs/blogging/package.json | 10 +- npm/packs/bootstrap-datepicker/package.json | 2 +- npm/packs/bootstrap/package.json | 4 +- npm/packs/chart.js/package.json | 2 +- npm/packs/clipboard/package.json | 4 +- npm/packs/codemirror/package.json | 4 +- npm/packs/core/package.json | 4 +- npm/packs/datatables.net-bs4/package.json | 4 +- npm/packs/datatables.net/package.json | 4 +- npm/packs/docs/package.json | 12 +- npm/packs/flag-icon-css/package.json | 2 +- npm/packs/font-awesome/package.json | 4 +- npm/packs/highlight.js/package.json | 4 +- npm/packs/jquery-form/package.json | 4 +- .../package.json | 4 +- npm/packs/jquery-validation/package.json | 4 +- npm/packs/jquery/package.json | 4 +- npm/packs/jstree/package.json | 4 +- npm/packs/lodash/package.json | 4 +- npm/packs/luxon/package.json | 2 +- .../package.json | 4 +- npm/packs/markdown-it/package.json | 4 +- npm/packs/owl.carousel/package.json | 4 +- npm/packs/popper.js/package.json | 4 +- npm/packs/prismjs/package.json | 6 +- npm/packs/select2/package.json | 4 +- npm/packs/signalr/package.json | 4 +- npm/packs/sweetalert/package.json | 4 +- npm/packs/timeago/package.json | 4 +- npm/packs/toastr/package.json | 4 +- npm/packs/tui-editor/package.json | 10 +- npm/packs/uppy/package.json | 4 +- npm/packs/utils/package.json | 2 +- npm/packs/virtual-file-explorer/package.json | 6 +- templates/app/angular/package.json | 12 +- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../MyCompanyName.MyProjectName.Web/yarn.lock | 236 ++++++------- templates/module/angular/package.json | 12 +- .../projects/my-project-name/package.json | 4 +- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../yarn.lock | 236 ++++++------- 88 files changed, 2062 insertions(+), 2062 deletions(-) diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index 00021c8fb2..5612b903d9 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^3.1.0-rc.3", + "@abp/aspnetcore.mvc.ui.theme.shared": "^3.1.0-rc.4", "highlight.js": "^9.13.1" }, "devDependencies": {} diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock index 664291812e..b2074439f9 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock @@ -2,30 +2,30 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.shared@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.shared@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -34,144 +34,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index b2bc192cea..8b8e4f79a3 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" }, "devDependencies": {} } \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index 0c2e9764b1..43d478b732 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index f608db303b..8778c68d64 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3", - "@abp/blogging": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4", + "@abp/blogging": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index c69f117723..94737cbcff 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,213 +41,213 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/blogging@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.1.0-rc.3.tgz#5c21c1dc57d832de35e89621fd81653599e676ad" - integrity sha512-8iAe29fzdCH4YAp3+8JSMrT0E0/OfUSQ9sIxGXrlV4GyEX2iGZrszRyKsKA+bgQmBOQdnT36RrmSOl0K/A+Mxw== +"@abp/blogging@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.1.0-rc.4.tgz#9287964c12eab38f3c28f41a60e87e155f028849" + integrity sha512-e3jyPeb6op8sRXrovOuVsBoPH3oYSBgPqhfya0pIQ2Dr78IPLSPsEQekxaUKFcaCf1L/jWZgxnNPHjqF04BdLQ== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - "@abp/owl.carousel" "~3.1.0-rc.3" - "@abp/prismjs" "~3.1.0-rc.3" - "@abp/tui-editor" "~3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + "@abp/owl.carousel" "~3.1.0-rc.4" + "@abp/prismjs" "~3.1.0-rc.4" + "@abp/tui-editor" "~3.1.0-rc.4" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/clipboard@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.3.tgz#40f0a95298cf9d7097d8e7f96e42c181e5a9907b" - integrity sha512-efCjrAHN3d7zmq4eVzlT4H/s6K11I9K7hv4fIJP6fbZKDoXi5hzTv2+dt9JRDWAra+s87PdBJq7AEWNs6ONiGg== +"@abp/clipboard@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.4.tgz#b095bab123d9035cdfb32599a64b9381f6feba86" + integrity sha512-Q5UrZXIcXIfkuh1iVv23da2aVsOew/Fz32NlPQKhHczQfC2+/x1XlWHxbc5CyvVVxXusZJt/wqjSlM7oQGLqFg== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" clipboard "^2.0.6" -"@abp/codemirror@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.1.0-rc.3.tgz#db68462bc6618734daa30f928feb65e0cca8cf53" - integrity sha512-TJz21MreoVePouWjnQKQ6gD9cXWQkS7xTl4V93i69C6m9f/ozoaoJvm3Va3GGGZMKf6u2B8G+XX7d6QGz406hg== +"@abp/codemirror@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.1.0-rc.4.tgz#afc97b7a06e05ab90e942e35b1f8addc4e3b29c3" + integrity sha512-DOsd2S+zkEopKiWRT2O7B9s2dZJIup2zD51wIsYoytzH2aESQ8HRg9aEoBWXdfVeuC3/9AcYFfVAv9rDI2PzqA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" codemirror "^5.54.0" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/highlight.js@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.1.0-rc.3.tgz#d1e92b44ebd6cc6fc49a18cf350bf24b12be2792" - integrity sha512-rb9/ryoEK2krMh3DLYQcqTyvSaI7BYlOd6+awDYl5iWXu8TK+M1NP9zSM8ZoYr0kkLoD1dGHsF4ondCfCYjxPQ== +"@abp/highlight.js@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.1.0-rc.4.tgz#d7e2840c84e3ed056a4f9ecf4f753a6d42245d50" + integrity sha512-dqTCK7ibMztqBJuJD/+4M5bXGWKkYP08azaA52d8+rMac61+90ZQtcsWe2UdKoa7fb7n4nNqEouXogoQXt1g7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/markdown-it@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.1.0-rc.3.tgz#74a1e2c20654988159f332a01790a74d7ffb6b92" - integrity sha512-6k5e+WRfE4I0vp4KmV44FLQXvT8u+UUtdzPJOotWERWePuCVLJqM0u0hht0s5uEoTOhfCONIYwqQoGjzfP/8lg== +"@abp/markdown-it@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.1.0-rc.4.tgz#62ba80c3925442a4da0888ab2d757ea63939c365" + integrity sha512-N10nqweim8oBDTs9JIa+CLHltz4r5YWl0tLAkwOSWWbmh57AH4aht4g7toOuD2qOkLNq1TD/bmoVuE51aqsxfA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" markdown-it "^11.0.0" -"@abp/owl.carousel@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.1.0-rc.3.tgz#c419eccaeb18150dab5b7fdd2da102a26a6d6013" - integrity sha512-lLJuhCJ5/879juIHqLPrNos+zOyBb7cuvpzAF+IE+6/Jb9yP5Xn9O8004F2ELXRag0bHZVzCgCbtPmDDF+LkNQ== +"@abp/owl.carousel@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.1.0-rc.4.tgz#44186b95061ad046976a380e4eb63c7ceebdcad0" + integrity sha512-rgF0/1xnkQMmZInmmJew6pIzwEaJH2CTt4e/p1h9YTQeIB0o+iclgYydFGSwbowBFP9LgSFNx+xWWUiH4iGmGA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" owl.carousel "^2.3.4" -"@abp/prismjs@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.3.tgz#d13885bf613871f6cd003f58ae01ee4587ad15ad" - integrity sha512-gaKxJ3d78oR1wGZhnPzM5EJIAsibh3VT9MFithFt/YAQdrMMOqS1fEdGsm1zO/A7Veyho9Ba/144RmPkFXH5gQ== +"@abp/prismjs@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.4.tgz#8fe68b4b96f7938e09aecfcd56bf9c2fa5f2fe4d" + integrity sha512-8WO9nk4Jw6kKGkMaXTO3DqljVxKVz55kMFrKcdxtpLRZ0LOlqQn7VlV8tmFRn0K85xXD0lWU4g/C2+G+wiBoqw== dependencies: - "@abp/clipboard" "~3.1.0-rc.3" - "@abp/core" "~3.1.0-rc.3" + "@abp/clipboard" "~3.1.0-rc.4" + "@abp/core" "~3.1.0-rc.4" prismjs "^1.20.0" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/tui-editor@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.1.0-rc.3.tgz#31c66f06b938ec416276907e539f51da389be01c" - integrity sha512-V3drpSK2l+WwfHWnK+9BFB33Ww+ruo6GFuOhyzDXjmXhOOMeiM2c/r205v+Bm/uEB0GaCW1m/r3yfogFfMipIw== +"@abp/tui-editor@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.1.0-rc.4.tgz#2b925274131e207e6a91dc0e7484a70aa848a100" + integrity sha512-rsEDeV+x2rUchoJ6i7dTLPnTIdj8yxiZKzLaAQzJ7XJpcbBolub/0aT1sX1+b+d7Hnj+NCIcidBKHqbCpfoRAw== dependencies: - "@abp/codemirror" "~3.1.0-rc.3" - "@abp/highlight.js" "~3.1.0-rc.3" - "@abp/jquery" "~3.1.0-rc.3" - "@abp/markdown-it" "~3.1.0-rc.3" + "@abp/codemirror" "~3.1.0-rc.4" + "@abp/highlight.js" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0-rc.4" + "@abp/markdown-it" "~3.1.0-rc.4" tui-editor "^1.4.10" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index ba93a68173..ee50269e26 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index c2b1f9abfe..10be35ad9b 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index 85a81a84fe..7aa56281fc 100644 --- a/modules/cms-kit/angular/package.json +++ b/modules/cms-kit/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.1.0-rc.3", - "@abp/ng.identity": "~3.1.0-rc.3", - "@abp/ng.setting-management": "~3.1.0-rc.3", - "@abp/ng.tenant-management": "~3.1.0-rc.3", - "@abp/ng.theme.basic": "~3.1.0-rc.3", + "@abp/ng.account": "~3.1.0-rc.4", + "@abp/ng.identity": "~3.1.0-rc.4", + "@abp/ng.setting-management": "~3.1.0-rc.4", + "@abp/ng.tenant-management": "~3.1.0-rc.4", + "@abp/ng.theme.basic": "~3.1.0-rc.4", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index ea7a45336c..bf096ffaaa 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=3.1.0-rc.3", - "@abp/ng.theme.shared": ">=3.1.0-rc.3" + "@abp/ng.core": ">=3.1.0-rc.4", + "@abp/ng.theme.shared": ">=3.1.0-rc.4" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index 726d61c566..4b220b0935 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index 46ec79f40e..b4b0ecc72f 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json index f53cfbaa36..b8f8dc11d4 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index 56e0030b46..66538d80b8 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index f53cfbaa36..b8f8dc11d4 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index 27339975b7..a771f5d7c2 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index b3e3660c63..2ece95d962 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3", - "@abp/docs": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4", + "@abp/docs": "^3.1.0-rc.4" } } diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index 66321e210a..19dc607f8a 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,45 +2,45 @@ # yarn lockfile v1 -"@abp/anchor-js@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.1.0-rc.3.tgz#839562d155fe9d026328da64a14e354c00090856" - integrity sha512-5NhcK1wZQlfE9gJ679DD3KsnYOigCHCqSGdwOQZn7gzGWNKnhCnzsnjAyh32lL9tNHTHMKkydVr6kJ5LU6Yr1Q== +"@abp/anchor-js@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.1.0-rc.4.tgz#29bd7c04c7f71c4e3caf8e7ea4215d765bcb3301" + integrity sha512-mAQMbKWDM8l8JLElITn+sYBkuAVOGsAhZXyL7B5wjBJEmsn4p+8tx060PnciUmSV3FL9TSD3UJkVL0CBdrYENg== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" anchor-js "^4.2.2" -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -49,180 +49,180 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/clipboard@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.3.tgz#40f0a95298cf9d7097d8e7f96e42c181e5a9907b" - integrity sha512-efCjrAHN3d7zmq4eVzlT4H/s6K11I9K7hv4fIJP6fbZKDoXi5hzTv2+dt9JRDWAra+s87PdBJq7AEWNs6ONiGg== +"@abp/clipboard@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.4.tgz#b095bab123d9035cdfb32599a64b9381f6feba86" + integrity sha512-Q5UrZXIcXIfkuh1iVv23da2aVsOew/Fz32NlPQKhHczQfC2+/x1XlWHxbc5CyvVVxXusZJt/wqjSlM7oQGLqFg== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" clipboard "^2.0.6" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/docs@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.1.0-rc.3.tgz#b5bab272c4094de8f38c04015cf7219f0931c8c5" - integrity sha512-o1R9Kvw2VKqyjHYmNXYGUhiJue1FaqgRIJmmR6z0ncND7swsz4Qb/2gQvws4bHo/dIl28yrzJeKNzXbE74hHgQ== +"@abp/docs@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.1.0-rc.4.tgz#34281484ffd633c97f465b4b0e1ac49c8c39d0d4" + integrity sha512-DdOl4GiXR6JbIgVae0tlgQQQoUosnNS7WK28BTM9662IMyPh1I4TYc/WLfoANXWDKA024Hqx9b6aIS5YHFj/uQ== dependencies: - "@abp/anchor-js" "~3.1.0-rc.3" - "@abp/clipboard" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/popper.js" "~3.1.0-rc.3" - "@abp/prismjs" "~3.1.0-rc.3" + "@abp/anchor-js" "~3.1.0-rc.4" + "@abp/clipboard" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/popper.js" "~3.1.0-rc.4" + "@abp/prismjs" "~3.1.0-rc.4" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/popper.js@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.1.0-rc.3.tgz#7b12694e65866edeaa8e8543a23ef238682f34cb" - integrity sha512-QyoRm8y4bjemPGwqTHHO30H5/g+uJ4vsX6eB+lxiqPYBW/2OCTccjWkRwPl1YXKdMMyS2IMARDtYDtrNoQ8Z5g== +"@abp/popper.js@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.1.0-rc.4.tgz#44be628f539b0d2a8a4d0c16eba9a977301931ae" + integrity sha512-SinHKulmRZLwl4UVQuz0TrFp6f4aBMFBPmCNlztKTkTsDESGnoa4UaQ84xj5gbyoPa7ytHRTQIxa6dDEI2CCow== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" popper.js "^1.16.0" -"@abp/prismjs@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.3.tgz#d13885bf613871f6cd003f58ae01ee4587ad15ad" - integrity sha512-gaKxJ3d78oR1wGZhnPzM5EJIAsibh3VT9MFithFt/YAQdrMMOqS1fEdGsm1zO/A7Veyho9Ba/144RmPkFXH5gQ== +"@abp/prismjs@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.4.tgz#8fe68b4b96f7938e09aecfcd56bf9c2fa5f2fe4d" + integrity sha512-8WO9nk4Jw6kKGkMaXTO3DqljVxKVz55kMFrKcdxtpLRZ0LOlqQn7VlV8tmFRn0K85xXD0lWU4g/C2+G+wiBoqw== dependencies: - "@abp/clipboard" "~3.1.0-rc.3" - "@abp/core" "~3.1.0-rc.3" + "@abp/clipboard" "~3.1.0-rc.4" + "@abp/core" "~3.1.0-rc.4" prismjs "^1.20.0" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/npm/lerna.json b/npm/lerna.json index c7e316ca8b..96089bbbad 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "packages": [ "packs/*" ], diff --git a/npm/ng-packs/lerna.version.json b/npm/ng-packs/lerna.version.json index c872eedc50..a0103e95c8 100644 --- a/npm/ng-packs/lerna.version.json +++ b/npm/ng-packs/lerna.version.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "packages": [ "packages/*" ], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index afee0f022a..26ea07313c 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -25,16 +25,16 @@ "postinstall": "npm run compile:ivy" }, "devDependencies": { - "@abp/ng.account": "~3.1.0-rc.3", - "@abp/ng.core": "~3.1.0-rc.3", - "@abp/ng.feature-management": "~3.1.0-rc.3", - "@abp/ng.identity": "~3.1.0-rc.3", - "@abp/ng.permission-management": "~3.1.0-rc.3", - "@abp/ng.setting-management": "~3.1.0-rc.3", - "@abp/ng.tenant-management": "~3.1.0-rc.3", - "@abp/ng.theme.basic": "~3.1.0-rc.3", - "@abp/ng.theme.shared": "~3.1.0-rc.3", - "@abp/utils": "^3.1.0-rc.3", + "@abp/ng.account": "~3.1.0-rc.4", + "@abp/ng.core": "~3.1.0-rc.4", + "@abp/ng.feature-management": "~3.1.0-rc.4", + "@abp/ng.identity": "~3.1.0-rc.4", + "@abp/ng.permission-management": "~3.1.0-rc.4", + "@abp/ng.setting-management": "~3.1.0-rc.4", + "@abp/ng.tenant-management": "~3.1.0-rc.4", + "@abp/ng.theme.basic": "~3.1.0-rc.4", + "@abp/ng.theme.shared": "~3.1.0-rc.4", + "@abp/utils": "^3.1.0-rc.4", "@angular-builders/jest": "^10.0.0", "@angular-devkit/build-angular": "~0.1000.6", "@angular-devkit/build-ng-packagr": "~0.1000.6", diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json index f1b35ab34c..c3c2a96d18 100644 --- a/npm/ng-packs/packages/account/package.json +++ b/npm/ng-packs/packages/account/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.account", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.3", + "@abp/ng.theme.shared": "~3.1.0-rc.4", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json index f28f0bdccc..219b696685 100644 --- a/npm/ng-packs/packages/components/package.json +++ b/npm/ng-packs/packages/components/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.components", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": ">=3.1.0-rc.3", + "@abp/ng.core": ">=3.1.0-rc.4", "@ng-bootstrap/ng-bootstrap": ">=6.0.0" }, "dependencies": { diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index 13a5835319..5e425c5994 100644 --- a/npm/ng-packs/packages/core/package.json +++ b/npm/ng-packs/packages/core/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.core", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/utils": "^3.1.0-rc.3", + "@abp/utils": "^3.1.0-rc.4", "@angular/localize": "~10.0.10", "@ngxs/router-plugin": "^3.6.2", "@ngxs/storage-plugin": "^3.6.2", diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index 1dd7f4f92a..c7b90fb0bb 100644 --- a/npm/ng-packs/packages/feature-management/package.json +++ b/npm/ng-packs/packages/feature-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.feature-management", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.3", + "@abp/ng.theme.shared": "~3.1.0-rc.4", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index 77586f3536..3cc0e1c4c0 100644 --- a/npm/ng-packs/packages/identity/package.json +++ b/npm/ng-packs/packages/identity/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.identity", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.permission-management": "~3.1.0-rc.3", - "@abp/ng.theme.shared": "~3.1.0-rc.3", + "@abp/ng.permission-management": "~3.1.0-rc.4", + "@abp/ng.theme.shared": "~3.1.0-rc.4", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index 42d7f8ef9b..791835d527 100644 --- a/npm/ng-packs/packages/permission-management/package.json +++ b/npm/ng-packs/packages/permission-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.permission-management", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.3", + "@abp/ng.theme.shared": "~3.1.0-rc.4", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index 075a987af7..350a041118 100644 --- a/npm/ng-packs/packages/schematics/package.json +++ b/npm/ng-packs/packages/schematics/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.schematics", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "description": "Schematics that works with ABP Backend", "keywords": [ "schematics" diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index 30716290e8..fc9b83ff67 100644 --- a/npm/ng-packs/packages/setting-management/package.json +++ b/npm/ng-packs/packages/setting-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.setting-management", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.3", + "@abp/ng.theme.shared": "~3.1.0-rc.4", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index 5aa95e42dd..9b7257ffec 100644 --- a/npm/ng-packs/packages/tenant-management/package.json +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.tenant-management", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.feature-management": "~3.1.0-rc.3", - "@abp/ng.theme.shared": "~3.1.0-rc.3", + "@abp/ng.feature-management": "~3.1.0-rc.4", + "@abp/ng.theme.shared": "~3.1.0-rc.4", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json index 24215426c8..73c3f7de4d 100644 --- a/npm/ng-packs/packages/theme-basic/package.json +++ b/npm/ng-packs/packages/theme-basic/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.basic", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.3", + "@abp/ng.theme.shared": "~3.1.0-rc.4", "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 e50100e544..a648985334 100644 --- a/npm/ng-packs/packages/theme-shared/package.json +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.shared", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~3.1.0-rc.3", + "@abp/ng.core": "~3.1.0-rc.4", "@fortawesome/fontawesome-free": "^5.14.0", "@ng-bootstrap/ng-bootstrap": "^7.0.0", "@ngx-validate/core": "^0.0.11", diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index eff77be002..2a9cd4b404 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -2,20 +2,20 @@ # yarn lockfile v1 -"@abp/ng.account@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-3.1.0-rc.2.tgz#bcd93452e0ccae43d8387863a3249aa32e3f5826" - integrity sha512-eMu9W4fuvFd1Vk6KY3hLQDTcAhlH6FJkVs7joO3ks4andv4S+SuqBU44R6eNyGSTrB3NphZ05kOSLwmP+oDbJw== +"@abp/ng.account@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-3.1.0-rc.3.tgz#098a559e83d505b51f54343d6cd5be3e70b11869" + integrity sha512-hFFWa0tBPlpVtLuZo7MRc+s0ODHEtJ8eQJc8H+TyFqTItk158XOjgHdKX0RYqt+Tn+0Iy/TJ1vKfupzuDqUBkg== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.2" + "@abp/ng.theme.shared" "~3.1.0-rc.3" tslib "^2.0.0" -"@abp/ng.core@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-3.1.0-rc.2.tgz#fee3bff9c2505b25d88d9daf999a9ca0ed9ce45e" - integrity sha512-uOMqMCghYspKCUmmdF89e/rcl/peREY4owH9ld0jSrsyhXpTAYpZ2U402yCGjk8jidQvDN26DEtiwNvfjOfpcA== +"@abp/ng.core@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-3.1.0-rc.3.tgz#aefa4a2f7b418087f7a3c6c6faa9a936ce9011cb" + integrity sha512-zU2jx9gTCwz26OW/umxGqSBluq1vnazYHqunnGFvH7wLcAoKHikpQv4kx4tR1dMn+7BZ1/MFwCYVxDYLtxWxdw== dependencies: - "@abp/utils" "^3.0.5" + "@abp/utils" "^3.1.0-rc.2" "@angular/localize" "~10.0.10" "@ngxs/router-plugin" "^3.6.2" "@ngxs/storage-plugin" "^3.6.2" @@ -27,62 +27,62 @@ ts-toolbelt "6.15.4" tslib "^2.0.0" -"@abp/ng.feature-management@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-3.1.0-rc.2.tgz#79967fa06370dd8893a8a75f99e72653eff61a46" - integrity sha512-vB9Kf1DziR8mfG1HTDY6C0UrK54QujLulNf0s7hV5XmAm7Vw4zyor8996LRuEmls3BcySZgGTab2pM4Z3wnI6w== +"@abp/ng.feature-management@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-3.1.0-rc.3.tgz#ed8a8e69d2ee69d07341c33e44e504b0638ad673" + integrity sha512-KGykQd3AclkLTyQuSpVm3R6U2YD0pptF1A/rrdeA7BT5kQ3d/JgXboEkVrCyRnT4dTKWVjiweoXz1AaKj7HpzA== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.2" + "@abp/ng.theme.shared" "~3.1.0-rc.3" tslib "^2.0.0" -"@abp/ng.identity@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-3.1.0-rc.2.tgz#fcc529dcb0296cd8d65db69b678ddd443166363e" - integrity sha512-lNuCVgrtw5NRVYCN8SRNVGT05yi1BzCKF1Db2rNPDHqKneDknDuTGn3fikYSID5dHFn4Ms+L46oDEYMggMBu8A== +"@abp/ng.identity@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-3.1.0-rc.3.tgz#d32730f1968224f3d0e48bb44efafa6d01dfb330" + integrity sha512-YkPN4oYRhQ70N+LL890Yt99SIs874nn4MNWZbfm3JRlndT9gsvDLAZwqDtVbsqKanz7ymT4yCoa5t7Sakts2Tw== dependencies: - "@abp/ng.permission-management" "~3.1.0-rc.2" - "@abp/ng.theme.shared" "~3.1.0-rc.2" + "@abp/ng.permission-management" "~3.1.0-rc.3" + "@abp/ng.theme.shared" "~3.1.0-rc.3" tslib "^2.0.0" -"@abp/ng.permission-management@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-3.1.0-rc.2.tgz#1a6d8751bac0eb848261fb020b121a37e95a76bd" - integrity sha512-vP62H3vWtIDWmgvn9ATwSz6hxsMc8qT8Qb37XlXC47ZXySxhaQ05EQWWreSiEvzMwNl4fVZ1n+BkMfsFJji8kA== +"@abp/ng.permission-management@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-3.1.0-rc.3.tgz#211c5ff854a62c924307dfbb8bdbb501479f1a86" + integrity sha512-nir4rYN2cWhwNPzLVT4TMhpVDkVJQJpp6B13YwjQ7O0B8rty/ongO343YcvbmkwwLqK9pBEjYTtXbuOnSLnvew== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.2" + "@abp/ng.theme.shared" "~3.1.0-rc.3" tslib "^2.0.0" -"@abp/ng.setting-management@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-3.1.0-rc.2.tgz#720cdca35d33115148ef845c441f386d4e45db3c" - integrity sha512-atQFPlYiTja2edf3pzIlzg2Z08TKoOOmCJ3XmYcO0hoofySoJE2j5YvxaKyRnLFRKPvSj2aTquAbkK8jvOQOMg== +"@abp/ng.setting-management@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-3.1.0-rc.3.tgz#539226e81f1d15a294ca7cdbb0b40cf94bc3d073" + integrity sha512-kkumvT81zUUy44XLxX9qII2DXFoPl9gzXmJlAeCoh2cCofU5Ja4AxNkunZfzTTqLm6y/UDPjkzgYBa4KMOspdQ== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.2" + "@abp/ng.theme.shared" "~3.1.0-rc.3" tslib "^2.0.0" -"@abp/ng.tenant-management@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-3.1.0-rc.2.tgz#cf4519091ab58b5db188ae64440713ea8149759f" - integrity sha512-TktojUpQXIDwBthngjySRNQkmS8v3ZbFT/7TJHKc9W1AAnySHGpPm8qOACtNsYZ2fPMlLVVahBjjQdYOQEgwCg== +"@abp/ng.tenant-management@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-3.1.0-rc.3.tgz#1678bae916387c99baa371d35a692197f719f278" + integrity sha512-icvhvzSYjLH8dlrKL0HBtACkA0Q5JozILgYGEnUtPLuO4xpU3oiGGBA8AxB5gSkQ0C3/QiPRawQ9mhiTcnYoAQ== dependencies: - "@abp/ng.feature-management" "~3.1.0-rc.2" - "@abp/ng.theme.shared" "~3.1.0-rc.2" + "@abp/ng.feature-management" "~3.1.0-rc.3" + "@abp/ng.theme.shared" "~3.1.0-rc.3" tslib "^2.0.0" -"@abp/ng.theme.basic@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-3.1.0-rc.2.tgz#d6ebdabfe7617f85bffecdb0a08b62a9ade8be91" - integrity sha512-/Y2eBc9HyYiTTsbfDk8ZnB+F32IfuvtAdLohNAIhq+oCR1an9Yl48gIRfd64FNM0Ay8uhibQuLhSi0PewbWXcw== +"@abp/ng.theme.basic@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-3.1.0-rc.3.tgz#25654f6c55245645a4495c314cf575d159dd98d1" + integrity sha512-ibfycWkE+7CnT/IafgoC89/w/kojp0ylw00kAm6toXTgRVE4eI2KmO1Wdc6Qyu5n/4SF3UnbH546odgUsjHvGA== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.2" + "@abp/ng.theme.shared" "~3.1.0-rc.3" tslib "^2.0.0" -"@abp/ng.theme.shared@~3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-3.1.0-rc.2.tgz#f970614d80fb4f96b9ca30bd6abc905d047b4d34" - integrity sha512-6oykIW27Es53Sn4cAuVWdL6g8L2buvi/nn5IoJ/XtD1pylkkD4FWKF/2VtPRHBhGH+5T81bwQM0KWTOfv49cIg== +"@abp/ng.theme.shared@~3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-3.1.0-rc.3.tgz#2fe6821f5aff7066d2a0a74296aeef205506d553" + integrity sha512-Z7QbckMhc1j00iVYDUBqeCliTs0I1TxW1c6pgYdNXHKB4Djp9BBxw517Elj14zIhCQbnHUIcXDu2ZUTdx2hbMg== dependencies: - "@abp/ng.core" "~3.1.0-rc.2" + "@abp/ng.core" "~3.1.0-rc.3" "@fortawesome/fontawesome-free" "^5.14.0" "@ng-bootstrap/ng-bootstrap" "^7.0.0" "@ngx-validate/core" "^0.0.11" @@ -91,13 +91,6 @@ chart.js "^2.9.3" tslib "^2.0.0" -"@abp/utils@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.5.tgz#66b3da953500e73ff1f23d1b41168cde8216ce49" - integrity sha512-X9V1xLIEazItaf93nFSA4p94WT6QK3yA4eIyvU7GyyEkkOQdaakNwPbRwy930sd+I+/oXnIqM1vDsJu9QDhgvg== - dependencies: - just-compare "^1.3.0" - "@abp/utils@^3.1.0-rc.2": version "3.1.0-rc.2" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" @@ -105,6 +98,13 @@ dependencies: just-compare "^1.3.0" +"@abp/utils@^3.1.0-rc.3": + version "3.1.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" + integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== + dependencies: + just-compare "^1.3.0" + "@angular-builders/jest@^10.0.0": version "10.0.0" resolved "https://registry.yarnpkg.com/@angular-builders/jest/-/jest-10.0.0.tgz#1d4f80c15544a2a13de9e335b0d2d8f076026388" diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index 726da38362..f077d92e0a 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "anchor-js": "^4.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index 78755293bb..990ba37ef5 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index 5d47164fc1..6e9daec192 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json @@ -1,24 +1,24 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "~3.1.0-rc.3", - "@abp/bootstrap": "~3.1.0-rc.3", - "@abp/bootstrap-datepicker": "~3.1.0-rc.3", - "@abp/datatables.net-bs4": "~3.1.0-rc.3", - "@abp/font-awesome": "~3.1.0-rc.3", - "@abp/jquery-form": "~3.1.0-rc.3", - "@abp/jquery-validation-unobtrusive": "~3.1.0-rc.3", - "@abp/lodash": "~3.1.0-rc.3", - "@abp/luxon": "~3.1.0-rc.3", - "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.3", - "@abp/select2": "~3.1.0-rc.3", - "@abp/sweetalert": "~3.1.0-rc.3", - "@abp/timeago": "~3.1.0-rc.3", - "@abp/toastr": "~3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui": "~3.1.0-rc.4", + "@abp/bootstrap": "~3.1.0-rc.4", + "@abp/bootstrap-datepicker": "~3.1.0-rc.4", + "@abp/datatables.net-bs4": "~3.1.0-rc.4", + "@abp/font-awesome": "~3.1.0-rc.4", + "@abp/jquery-form": "~3.1.0-rc.4", + "@abp/jquery-validation-unobtrusive": "~3.1.0-rc.4", + "@abp/lodash": "~3.1.0-rc.4", + "@abp/luxon": "~3.1.0-rc.4", + "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.4", + "@abp/select2": "~3.1.0-rc.4", + "@abp/sweetalert": "~3.1.0-rc.4", + "@abp/timeago": "~3.1.0-rc.4", + "@abp/toastr": "~3.1.0-rc.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index 7aacb6b184..220ad17a69 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/aspnetcore.mvc.ui", "publishConfig": { "access": "public" diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index 6054e72f85..a2a48e5ba2 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,14 +1,14 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.3", - "@abp/owl.carousel": "~3.1.0-rc.3", - "@abp/prismjs": "~3.1.0-rc.3", - "@abp/tui-editor": "~3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.4", + "@abp/owl.carousel": "~3.1.0-rc.4", + "@abp/prismjs": "~3.1.0-rc.4", + "@abp/tui-editor": "~3.1.0-rc.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index 1b72d96b5d..b3ea4aad9a 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/bootstrap-datepicker", "publishConfig": { "access": "public" diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index d4d3415e70..f5a03c226e 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/bootstrap", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "bootstrap": "^4.5.0", "bootstrap-v4-rtl": "4.4.1-2" }, diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index 7529deb7f4..8e8f966d96 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/chart.js", "publishConfig": { "access": "public" diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index 8a8dd891c0..41cd460dfe 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "clipboard": "^2.0.6" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index 83cee9677a..7dc04efcc3 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "codemirror": "^5.54.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index 682bbb8592..e32507abd0 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/core", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/utils": "^3.1.0-rc.3" + "@abp/utils": "^3.1.0-rc.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index ede20a11bb..6647bfc145 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/datatables.net-bs4", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "~3.1.0-rc.3", + "@abp/datatables.net": "~3.1.0-rc.4", "datatables.net-bs4": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index d0f8693c31..0685f73e6f 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/datatables.net", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.3", + "@abp/jquery": "~3.1.0-rc.4", "datatables.net": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index 6ba9c58bca..1eb3628ea3 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "~3.1.0-rc.3", - "@abp/clipboard": "~3.1.0-rc.3", - "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.3", - "@abp/popper.js": "~3.1.0-rc.3", - "@abp/prismjs": "~3.1.0-rc.3" + "@abp/anchor-js": "~3.1.0-rc.4", + "@abp/clipboard": "~3.1.0-rc.4", + "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.4", + "@abp/popper.js": "~3.1.0-rc.4", + "@abp/prismjs": "~3.1.0-rc.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index a3f47c0227..828061f321 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index 57f8de0ebf..3f2679411a 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/font-awesome", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "@fortawesome/fontawesome-free": "^5.13.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index 31448744ad..46db4e6a44 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3" + "@abp/core": "~3.1.0-rc.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index c388597cbe..6a7226cbb8 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/jquery-form", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.3", + "@abp/jquery": "~3.1.0-rc.4", "jquery-form": "^4.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index 388d02041c..bff4e0176f 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/jquery-validation-unobtrusive", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery-validation": "~3.1.0-rc.3", + "@abp/jquery-validation": "~3.1.0-rc.4", "jquery-validation-unobtrusive": "^3.2.11" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index 47239f0c38..dca7ce8b37 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/jquery-validation", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.3", + "@abp/jquery": "~3.1.0-rc.4", "jquery-validation": "^1.19.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index a7f343f88c..98256daabc 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/jquery", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "jquery": "~3.5.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json index 00992c0a2d..d4033f7055 100644 --- a/npm/packs/jstree/package.json +++ b/npm/packs/jstree/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/jstree", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.3", + "@abp/jquery": "~3.1.0-rc.4", "jstree": "^3.3.9" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index 8594527be2..31a8074d96 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/lodash", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "lodash": "^4.17.15" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index 26e8cc80f8..6e12bad596 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/luxon", "publishConfig": { "access": "public" diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index 9e64887184..6cbc36c53f 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/malihu-custom-scrollbar-plugin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "malihu-custom-scrollbar-plugin": "^3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index 0191e7ba18..88a68b8208 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "markdown-it": "^11.0.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index 02f179f6b3..34ac09e8bc 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "owl.carousel": "^2.3.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index 6569164983..0b5eb26c7e 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "popper.js": "^1.16.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 94bb705499..5e886e9287 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~3.1.0-rc.3", - "@abp/core": "~3.1.0-rc.3", + "@abp/clipboard": "~3.1.0-rc.4", + "@abp/core": "~3.1.0-rc.4", "prismjs": "^1.20.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index 8c0ab85b2a..daa561e1e2 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/select2", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "select2": "^4.0.13" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json index 630afb38bf..6b4850bc2b 100644 --- a/npm/packs/signalr/package.json +++ b/npm/packs/signalr/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/signalr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "@microsoft/signalr": "~3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/sweetalert/package.json b/npm/packs/sweetalert/package.json index 2164a04e96..98dab0f5e1 100644 --- a/npm/packs/sweetalert/package.json +++ b/npm/packs/sweetalert/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/sweetalert", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "sweetalert": "^2.1.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index b7dc927a58..1d4017f307 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/timeago", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.3", + "@abp/jquery": "~3.1.0-rc.4", "timeago": "^1.6.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index a6033b7f57..93f6f78422 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/toastr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.3", + "@abp/jquery": "~3.1.0-rc.4", "toastr": "^2.1.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index c537e0c9b2..1792b8e950 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,14 +1,14 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/codemirror": "~3.1.0-rc.3", - "@abp/highlight.js": "~3.1.0-rc.3", - "@abp/jquery": "~3.1.0-rc.3", - "@abp/markdown-it": "~3.1.0-rc.3", + "@abp/codemirror": "~3.1.0-rc.4", + "@abp/highlight.js": "~3.1.0-rc.4", + "@abp/jquery": "~3.1.0-rc.4", + "@abp/markdown-it": "~3.1.0-rc.4", "tui-editor": "^1.4.10" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json index 9c49680aba..88c5700eef 100644 --- a/npm/packs/uppy/package.json +++ b/npm/packs/uppy/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/uppy", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.3", + "@abp/core": "~3.1.0-rc.4", "uppy": "^1.16.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json index c22be374d7..605e443a6b 100644 --- a/npm/packs/utils/package.json +++ b/npm/packs/utils/package.json @@ -1,6 +1,6 @@ { "name": "@abp/utils", - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "scripts": { "prepublish": "yarn install --ignore-scripts && node prepublish.js", "ng": "ng", diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json index a565102771..432d990088 100644 --- a/npm/packs/virtual-file-explorer/package.json +++ b/npm/packs/virtual-file-explorer/package.json @@ -1,12 +1,12 @@ { - "version": "3.1.0-rc.3", + "version": "3.1.0-rc.4", "name": "@abp/virtual-file-explorer", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~3.1.0-rc.3", - "@abp/prismjs": "~3.1.0-rc.3" + "@abp/clipboard": "~3.1.0-rc.4", + "@abp/prismjs": "~3.1.0-rc.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json index c6c71dc7ad..1edefcdddb 100644 --- a/templates/app/angular/package.json +++ b/templates/app/angular/package.json @@ -12,11 +12,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.1.0-rc.3", - "@abp/ng.identity": "~3.1.0-rc.3", - "@abp/ng.setting-management": "~3.1.0-rc.3", - "@abp/ng.tenant-management": "~3.1.0-rc.3", - "@abp/ng.theme.basic": "~3.1.0-rc.3", + "@abp/ng.account": "~3.1.0-rc.4", + "@abp/ng.identity": "~3.1.0-rc.4", + "@abp/ng.setting-management": "~3.1.0-rc.4", + "@abp/ng.tenant-management": "~3.1.0-rc.4", + "@abp/ng.theme.basic": "~3.1.0-rc.4", "@angular/animations": "~10.0.10", "@angular/common": "~10.0.10", "@angular/compiler": "~10.0.10", @@ -30,7 +30,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~3.1.0-rc.3", + "@abp/ng.schematics": "~3.1.0-rc.4", "@angular-devkit/build-angular": "~0.1000.6", "@angular-devkit/build-ng-packagr": "~0.1000.6", "@angular/cli": "~10.0.6", diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json index f53cfbaa36..b8f8dc11d4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock index 98e42393f6..9551cc1509 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json index 726d61c566..4b220b0935 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index 46ec79f40e..b4b0ecc72f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json index f53cfbaa36..b8f8dc11d4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock index 46ec79f40e..b4b0ecc72f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json index f53cfbaa36..b8f8dc11d4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock index 98e42393f6..9551cc1509 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json index b4b79f49a0..730e289961 100644 --- a/templates/module/angular/package.json +++ b/templates/module/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.1.0-rc.3", - "@abp/ng.identity": "~3.1.0-rc.3", - "@abp/ng.setting-management": "~3.1.0-rc.3", - "@abp/ng.tenant-management": "~3.1.0-rc.3", - "@abp/ng.theme.basic": "~3.1.0-rc.3", + "@abp/ng.account": "~3.1.0-rc.4", + "@abp/ng.identity": "~3.1.0-rc.4", + "@abp/ng.setting-management": "~3.1.0-rc.4", + "@abp/ng.tenant-management": "~3.1.0-rc.4", + "@abp/ng.theme.basic": "~3.1.0-rc.4", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", @@ -33,7 +33,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~3.1.0-rc.3", + "@abp/ng.schematics": "~3.1.0-rc.4", "@angular-devkit/build-angular": "~0.1000.0", "@angular-devkit/build-ng-packagr": "~0.1000.0", "@angular/cli": "~10.0.0", diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json index e28ea10a59..a1c82a3672 100644 --- a/templates/module/angular/projects/my-project-name/package.json +++ b/templates/module/angular/projects/my-project-name/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=3.1.0-rc.3", - "@abp/ng.theme.shared": ">=3.1.0-rc.3" + "@abp/ng.core": ">=3.1.0-rc.4", + "@abp/ng.theme.shared": ">=3.1.0-rc.4" }, "dependencies": { "tslib": "^2.0.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json index 726d61c566..4b220b0935 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index 46ec79f40e..b4b0ecc72f 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json index f53cfbaa36..b8f8dc11d4 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock index 46ec79f40e..b4b0ecc72f 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json index f53cfbaa36..b8f8dc11d4 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.3" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock index 27339975b7..a771f5d7c2 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.3.tgz#d7e3ad928a72efb7c76a585ef051fce860efb7bf" - integrity sha512-cc2Wp/6hr1j89Ap/474HlH54WhAIgCya1buuXxrxXSMdYqDKNxK61aMYC/mnYGMiyPqoz6TWWUJB2h2dZeTgzQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.3.tgz#54a92d673f5158ee222d0d95ebfbca6c63b20a4f" - integrity sha512-czS+8+wuNxuNIogI3FI/T72dCumpbsXp9Fke9pwQEzkCZZCG11cJdOCr1pLJKT1G54x+zfgwVVFIL36sFcq50A== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.3" - "@abp/bootstrap" "~3.1.0-rc.3" - "@abp/bootstrap-datepicker" "~3.1.0-rc.3" - "@abp/datatables.net-bs4" "~3.1.0-rc.3" - "@abp/font-awesome" "~3.1.0-rc.3" - "@abp/jquery-form" "~3.1.0-rc.3" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.3" - "@abp/lodash" "~3.1.0-rc.3" - "@abp/luxon" "~3.1.0-rc.3" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.3" - "@abp/select2" "~3.1.0-rc.3" - "@abp/sweetalert" "~3.1.0-rc.3" - "@abp/timeago" "~3.1.0-rc.3" - "@abp/toastr" "~3.1.0-rc.3" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.3.tgz#e26f8ff9d7beaedf2050b9d6319e6368c990c373" - integrity sha512-qglA2lW0eQFzZlGeAev+vGuWsHNFmDeSCGAHPhd4Z07zjnphPnIOXSa+rXhb+4y6DevQP7OY/KSMQdX6ZMU3RQ== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" + integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" + integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" + "@abp/bootstrap" "~3.1.0-rc.4" + "@abp/bootstrap-datepicker" "~3.1.0-rc.4" + "@abp/datatables.net-bs4" "~3.1.0-rc.4" + "@abp/font-awesome" "~3.1.0-rc.4" + "@abp/jquery-form" "~3.1.0-rc.4" + "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" + "@abp/lodash" "~3.1.0-rc.4" + "@abp/luxon" "~3.1.0-rc.4" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" + "@abp/select2" "~3.1.0-rc.4" + "@abp/sweetalert" "~3.1.0-rc.4" + "@abp/timeago" "~3.1.0-rc.4" + "@abp/toastr" "~3.1.0-rc.4" + +"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" + integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.3.tgz#279d9603cd916a884bac125cb525ee44fb809762" - integrity sha512-qZolOk2Pw+IvXh6Ko7wJddzMVPbS8silGecBZMYe0DVRNovg0515Px8zR3GJ16wcVQuvG6ByBn4fdeKFmYfokQ== +"@abp/bootstrap-datepicker@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" + integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.3.tgz#a1368df757995f52c19dd76ef1846d19a067def6" - integrity sha512-r8XRTYJBEa33FVxF+Mg0ALYNhmTjVBw1NQIQY8Ub5ZR+HIZoaDqA0X5zfAKvGQlmfXLiZJDkvCV5EIQWsIgnrA== +"@abp/bootstrap@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" + integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.3.tgz#7e1bd9ac9aaecfc66863e8e319975358885a3ca2" - integrity sha512-wIvm4l8ZDQ+eiNN1a+v07EjUhngrxwPWvfDf9bPQpepfnIKiAktJziihh0oBJAbqXNqmI7f6FGN76spvNop/EA== +"@abp/core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" + integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" -"@abp/datatables.net-bs4@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.3.tgz#f46c4474635918c16ca7edbe4930c07317930592" - integrity sha512-FeN53p5U2hIyYyM3G3AuGSwBZFBGbx4yHb/ymW/DEGtJ6XtynHlsFPz00/PktLe0OKOjUxOUf2LQLqKJi83WQQ== +"@abp/datatables.net-bs4@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" + integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== dependencies: - "@abp/datatables.net" "~3.1.0-rc.3" + "@abp/datatables.net" "~3.1.0-rc.4" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.3.tgz#c3a8f81d5ee571445b01d2db0e05ed555b1459b8" - integrity sha512-sOWuVwvSoQlXqC9CC9HGH6HzdHb5vVX8CbqzIUYBJEzY4NBRUqeclFJQrA/thjMNtefdLD2AiVwPFmAdGBeDSg== +"@abp/datatables.net@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" + integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.3.tgz#38f63ad4fadc4986a73116fa29d5ef56812c483c" - integrity sha512-BnrI9XaKxEvI0d6Fa9tbw1J/VAsVUqTyAHva4WTUUa+neB9gaK62ZUjgDdF8Eo6gj7UOO8DYvsXehzpVpZKlPQ== +"@abp/font-awesome@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" + integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.3.tgz#7b74828f32a641c0b1ef1fd8b0389bf994a09e16" - integrity sha512-G+YRnDRZe5Mw81NAEnnr8scGjupndcu9xZ1dw+hCFGg30yypiUIfHtrMR4iR94y7M198fAgQP+0k7RvDqnALiw== +"@abp/jquery-form@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" + integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.3.tgz#aef83e8f11791ae7be449eab6655a73075f98b45" - integrity sha512-uWu6qdZasSZEFJC1IhEtj8NZq5kXX8W/zlK2tVpFhjxE/QYiJlPj8pVy2I7cuEIBghzAO2omwI+5En8TSagrGA== +"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" + integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.3" + "@abp/jquery-validation" "~3.1.0-rc.4" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.3.tgz#40dcb28ce5a3a87fc69972053e48a456c84e3225" - integrity sha512-uaL+ZS/NTf103Hq3ehayFT1qvq/Y2T5PAFY9ijBvX+7phCtPwGiIPfUvyuwYnKbdTa15odC275e7pY2CssHWIA== +"@abp/jquery-validation@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" + integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.3.tgz#8c35b9e7de888516e2acc5227092ca2fed991475" - integrity sha512-DT2uBNfW3+Xc1Bz62WHdIC3JfAb2Qcc4p86LyDG5pNRAd3FpImA1VnRPsMRX9Mig7HYRjMYiuYXTeovM6YS0fg== +"@abp/jquery@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" + integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.3.tgz#a312975824fa3bebc00f5eca35cededc5ec3af4b" - integrity sha512-siv5cMWlUHEX2RtvKCGoX2cEh4h1hniluKlFgmVmYY4hdGYdAG4T2d9QQAbPODwdzrJ8jzI36hXT/P4IrzhWZw== +"@abp/lodash@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" + integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.3.tgz#9b9d5c9827a0c661458094134cafd80f35537a69" - integrity sha512-cKj/irXJhTJ6WiSyjzcZcsDjKFji1Q/0nV7IYhY9e2wzpg3qEB8Z8k8fDLPDAUriUKxBoI6mQ/CVC0ah7eg/LA== +"@abp/luxon@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" + integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.3.tgz#218eb620532af8bdde6a46388a3d5349974fab44" - integrity sha512-z3IzgSYtpZ2FlWNmM2A1wbP3CHB3P5a8k/JR0JSWwtl+D/LiYC348VQIXen+pIJoEjMlY48iSi5XNyBIz4X9hw== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" + integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.3.tgz#493afc27f29da1c9926ee02e8f7b641e8ee4b67e" - integrity sha512-fym9GmQbl34CyTCVzfo4jGe77nSeDuRPYMzAYO8p0uKdDB8t9jNZNqhYJ9Ee5KQXJyg4lmFFPkLcRZF14E+cWw== +"@abp/select2@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" + integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.3.tgz#1c1421e2baaa57cc24e0f9334a5173836819cc24" - integrity sha512-WrYRutXM2f6VRECEkWhjfqtQXlnEw88MCkYicAhyMH7ZYYWg7r9xVg9TRJJI4UwGMLSyR3EB+ZdTmnD8aSC0yQ== +"@abp/sweetalert@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" + integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== dependencies: - "@abp/core" "~3.1.0-rc.3" + "@abp/core" "~3.1.0-rc.4" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.3.tgz#0a7a369ba29633f00b19206b257c6f1f59f182a4" - integrity sha512-FDgaQCJmwWplCcdJYa9kyCcMxJFrKf+zDEFzT5hWfhMzq+sYJYX7QDQtbF5OJnMSWuPyI0/RU0bocuGaJ584VQ== +"@abp/timeago@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" + integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.3.tgz#89af6aa864a9aac76bc9bf21b7f9bc6763ca7573" - integrity sha512-AeKH5imy8W9yMAlzRv9VdkRHApySpR2BKfrQYk3q9LubgwaxLvOFc/l38aIEKuyosN7dHTMFBQlEwLxWFwaoPA== +"@abp/toastr@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" + integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== dependencies: - "@abp/jquery" "~3.1.0-rc.3" + "@abp/jquery" "~3.1.0-rc.4" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== dependencies: just-compare "^1.3.0" From a3685d4d5bb481123598ec4b39e8f38d8a7b5f47 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 1 Sep 2020 15:58:33 +0300 Subject: [PATCH 183/474] Allow to add new tabs to the account profile manage page --- .../Account/Localization/Resources/en.json | 4 +- .../Account/Localization/Resources/tr.json | 4 +- .../AbpAccountWebAutomapperProfile.cs | 3 +- .../AbpAccountWebModule.cs | 31 +++++++- ...ilePasswordManagementGroupViewComponent.cs | 59 +++++++++++++++ .../Password/Default.cshtml | 17 +++++ .../Password/Default.js | 31 ++++++++ ...ersonalInfoManagementGroupViewComponent.cs | 56 ++++++++++++++ .../PersonalInfo/Default.cshtml | 39 ++++++++++ .../PersonalInfo/Default.js | 19 +++++ .../Pages/Account/Manage.cshtml | 73 +++++-------------- .../Pages/Account/Manage.cshtml.cs | 72 +++--------------- .../Pages/Account/Manage.js | 47 ------------ .../Pages/Account/Register.cshtml.cs | 1 - ...AccountProfileManagementPageContributor.cs | 48 ++++++++++++ .../IProfileManagementPageContributor.cs | 9 +++ .../ProfileManagementPageCreationContext.cs | 19 +++++ .../ProfileManagementPageGroup.cs | 39 ++++++++++ .../ProfileManagementPageOptions.cs | 14 ++++ 19 files changed, 417 insertions(+), 168 deletions(-) create mode 100644 modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/AccountProfilePasswordManagementGroupViewComponent.cs create mode 100644 modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.cshtml create mode 100644 modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.js create mode 100644 modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/AccountProfilePersonalInfoManagementGroupViewComponent.cs create mode 100644 modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml create mode 100644 modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js delete mode 100644 modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.js create mode 100644 modules/account/src/Volo.Abp.Account.Web/ProfileManagement/AccountProfileManagementPageContributor.cs create mode 100644 modules/account/src/Volo.Abp.Account.Web/ProfileManagement/IProfileManagementPageContributor.cs create mode 100644 modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageCreationContext.cs create mode 100644 modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageGroup.cs create mode 100644 modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageOptions.cs diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json index e9215d3f5a..85bd040d8c 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/en.json @@ -53,6 +53,8 @@ "ResetPassword_Information": "Please enter your new password.", "YourPasswordIsSuccessfullyReset": "Your password is successfully reset.", "GoToTheApplication": "Go to the application", - "BackToLogin": "Back to login" + "BackToLogin": "Back to login", + "ProfileTab:Password": "Change password", + "ProfileTab:PersonalInfo": "Personal info" } } diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json index bbb2ac3638..c9aff72675 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json @@ -52,6 +52,8 @@ "ResetPassword_Information": "Lütfen yeni şifrenizi belirleyin.", "YourPasswordIsSuccessfullyReset": "Şifreniz başarıyla sıfırlandı.", "GoToTheApplication": "Uygulamaya git", - "BackToLogin": "Girişe dön" + "BackToLogin": "Girişe dön", + "ProfileTab:Password": "Şifre değiştir", + "ProfileTab:PersonalInfo": "Kişisel bilgiler" } } diff --git a/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebAutomapperProfile.cs b/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebAutomapperProfile.cs index ab7ea41269..6204c20582 100644 --- a/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebAutomapperProfile.cs +++ b/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebAutomapperProfile.cs @@ -1,6 +1,7 @@ using Volo.Abp.Account.Web.Pages.Account; using Volo.Abp.Identity; using AutoMapper; +using Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo; namespace Volo.Abp.Account.Web { @@ -8,7 +9,7 @@ namespace Volo.Abp.Account.Web { public AbpAccountWebAutoMapperProfile() { - CreateMap(); + CreateMap(); } } } diff --git a/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebModule.cs b/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebModule.cs index 10886e4c17..303963d24f 100644 --- a/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebModule.cs +++ b/modules/account/src/Volo.Abp.Account.Web/AbpAccountWebModule.cs @@ -1,7 +1,10 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Account.Localization; +using Volo.Abp.Account.Web.Pages.Account; +using Volo.Abp.Account.Web.ProfileManagement; using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars; using Volo.Abp.AutoMapper; @@ -50,16 +53,38 @@ namespace Volo.Abp.Account.Web options.Contributors.Add(new AccountModuleToolbarContributor()); }); + ConfigureProfileManagementPage(); + + context.Services.AddAutoMapperObjectMapper(); + Configure(options => + { + options.AddProfile(validate: true); + }); + } + + private void ConfigureProfileManagementPage() + { Configure(options => { options.Conventions.AuthorizePage("/Account/Manage"); }); - context.Services.AddAutoMapperObjectMapper(); - Configure(options => + Configure(options => { - options.AddProfile(validate: true); + options.Contributors.Add(new AccountProfileManagementPageContributor()); }); + + Configure(options => + { + options.ScriptBundles + .Configure(typeof(ManageModel).FullName, + configuration => + { + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/Password/Default.js"); + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js"); + }); + }); + } } } diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/AccountProfilePasswordManagementGroupViewComponent.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/AccountProfilePasswordManagementGroupViewComponent.cs new file mode 100644 index 0000000000..7a0df6878b --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/AccountProfilePasswordManagementGroupViewComponent.cs @@ -0,0 +1,59 @@ +using System.ComponentModel.DataAnnotations; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Auditing; +using Volo.Abp.Identity; +using Volo.Abp.Validation; + +namespace Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Password +{ + public class AccountProfilePasswordManagementGroupViewComponent : AbpViewComponent + { + private readonly IProfileAppService _profileAppService; + + public AccountProfilePasswordManagementGroupViewComponent( + IProfileAppService profileAppService) + { + _profileAppService = profileAppService; + } + + public async Task InvokeAsync() + { + var user = await _profileAppService.GetAsync(); + + var model = new ChangePasswordInfoModel + { + HideOldPasswordInput = !user.HasPassword + }; + + return View("~/Pages/Account/Components/ProfileManagementGroup/Password/Default.cshtml", model); + } + + public class ChangePasswordInfoModel + { + [Required] + [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPasswordLength))] + [Display(Name = "DisplayName:CurrentPassword")] + [DataType(DataType.Password)] + [DisableAuditing] + public string CurrentPassword { get; set; } + + [Required] + [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPasswordLength))] + [Display(Name = "DisplayName:NewPassword")] + [DataType(DataType.Password)] + [DisableAuditing] + public string NewPassword { get; set; } + + [Required] + [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPasswordLength))] + [Display(Name = "DisplayName:NewPasswordConfirm")] + [DataType(DataType.Password)] + [DisableAuditing] + public string NewPasswordConfirm { get; set; } + + public bool HideOldPasswordInput { get; set; } + } + } +} diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.cshtml b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.cshtml new file mode 100644 index 0000000000..febab6d081 --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.cshtml @@ -0,0 +1,17 @@ +@using Volo.Abp.Account.Localization +@using Volo.Abp.Users +@using Microsoft.AspNetCore.Mvc.Localization +@inject IHtmlLocalizer L +@inject ICurrentUser CurrentUser +@model Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Password.AccountProfilePasswordManagementGroupViewComponent.ChangePasswordInfoModel + +

    @L["ChangePassword"]


    +
    + @if (!Model.HideOldPasswordInput) + { + + } + + + + diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.js b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.js new file mode 100644 index 0000000000..ef38f68466 --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.js @@ -0,0 +1,31 @@ +(function ($) { + $(function () { + var l = abp.localization.getResource("AbpAccount"); + + $('#ChangePasswordForm').submit(function (e) { + e.preventDefault(); + + if (!$('#ChangePasswordForm').valid()) { + return false; + } + + var input = $('#ChangePasswordForm').serializeFormToObject(); + + if ( + input.newPassword != input.newPasswordConfirm || + input.newPassword == '' + ) { + abp.message.error(l('NewPasswordConfirmFailed')); + return; + } + + if (input.currentPassword && input.currentPassword == ''){ + return; + } + + volo.abp.identity.profile.changePassword(input).then(function (result) { + abp.message.success(l('PasswordChanged')); + }); + }); + }); +})(jQuery); diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/AccountProfilePersonalInfoManagementGroupViewComponent.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/AccountProfilePersonalInfoManagementGroupViewComponent.cs new file mode 100644 index 0000000000..512d646ff2 --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/AccountProfilePersonalInfoManagementGroupViewComponent.cs @@ -0,0 +1,56 @@ +using System.ComponentModel.DataAnnotations; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Identity; +using Volo.Abp.Validation; + +namespace Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo +{ + public class AccountProfilePersonalInfoManagementGroupViewComponent : AbpViewComponent + { + private readonly IProfileAppService _profileAppService; + + public AccountProfilePersonalInfoManagementGroupViewComponent( + IProfileAppService profileAppService) + { + _profileAppService = profileAppService; + + ObjectMapperContext = typeof(AbpAccountWebModule); + } + + public async Task InvokeAsync() + { + var user = await _profileAppService.GetAsync(); + + var model = ObjectMapper.Map(user); + + return View("~/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml", model); + } + + public class PersonalInfoModel + { + [Required] + [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxUserNameLength))] + [Display(Name = "DisplayName:UserName")] + public string UserName { get; set; } + + [Required] + [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxEmailLength))] + [Display(Name = "DisplayName:Email")] + public string Email { get; set; } + + [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxNameLength))] + [Display(Name = "DisplayName:Name")] + public string Name { get; set; } + + [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxSurnameLength))] + [Display(Name = "DisplayName:Surname")] + public string Surname { get; set; } + + [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPhoneNumberLength))] + [Display(Name = "DisplayName:PhoneNumber")] + public string PhoneNumber { get; set; } + } + } +} diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml new file mode 100644 index 0000000000..33ca670b0c --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml @@ -0,0 +1,39 @@ +@using Volo.Abp.Account.Localization +@using Volo.Abp.Users +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.AspNetCore.Mvc.UI.Theming +@using Volo.Abp.Identity.Settings +@using Volo.Abp.Settings +@inject IHtmlLocalizer L +@inject ICurrentUser CurrentUser +@inject ISettingProvider SettingManager +@inject IThemeManager ThemeManager +@model Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo.AccountProfilePersonalInfoManagementGroupViewComponent.PersonalInfoModel +@{ + var isUserNameUpdateEnabled = string.Equals(await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsUserNameUpdateEnabled), "true", + StringComparison.OrdinalIgnoreCase); + + var isEmailUpdateEnabled = string.Equals(await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsEmailUpdateEnabled), "true", + StringComparison.OrdinalIgnoreCase); +} + +

    @L["PersonalSettings"]


    +
    + + + + + + + + + + + + + + + + + + diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js new file mode 100644 index 0000000000..6f5642d07d --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js @@ -0,0 +1,19 @@ +(function ($) { + $(function () { + var l = abp.localization.getResource("AbpAccount"); + + $('#PersonalSettingsForm').submit(function (e) { + e.preventDefault(); + + if (!$('#PersonalSettingsForm').valid()) { + return false; + } + + var input = $('#PersonalSettingsForm').serializeFormToObject(); + + volo.abp.identity.profile.update(input).then(function (result) { + abp.notify.success(l('PersonalSettingsSaved')); + }); + }); + }); +})(jQuery); diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml index 23350442b2..ff6262f3ec 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml @@ -2,66 +2,33 @@ @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization @using Volo.Abp.Account.Web.Pages.Account -@using Volo.Abp.Identity.Settings -@using Volo.Abp.Settings @using Volo.Abp.AspNetCore.Mvc.UI.Theming -@inject ISettingProvider SettingManager @inject IThemeManager ThemeManager @inject IHtmlLocalizer L @model ManageModel @{ Layout = ThemeManager.CurrentTheme.GetApplicationLayout(); - var isUserNameUpdateEnabled = string.Equals(await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsUserNameUpdateEnabled), "true", - StringComparison.OrdinalIgnoreCase); - - var isEmailUpdateEnabled = string.Equals(await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsEmailUpdateEnabled), "true", - StringComparison.OrdinalIgnoreCase); } @section scripts { - - - + } - - - - @if (!Model.DisablePasswordChange) - { - -

    @L["ChangePassword"].Value


    -
    - @if (!Model.HideOldPasswordInput) - { - - } - - - - -
    - } - -

    @L["PersonalSettings"].Value


    -
    - - - - - - - - - - - - - - - - - -
    -
    -
    -
    +
    + + + + @foreach (var group in Model.ProfileManagementPageCreationContext.Groups) + { + +

    @group.DisplayName

    +
    + @await Component.InvokeAsync(group.ComponentType, new + { + parameter = group.Parameter + }) +
    + } +
    +
    +
    +
    diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs index db51f9890c..f7b08eb6c4 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs @@ -2,35 +2,31 @@ using System.Threading.Tasks; using Volo.Abp.Identity; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; +using Volo.Abp.Account.Web.ProfileManagement; using Volo.Abp.Validation; namespace Volo.Abp.Account.Web.Pages.Account { public class ManageModel : AccountPageModel { - public ChangePasswordInfoModel ChangePasswordInfoModel { get; set; } + public ProfileManagementPageCreationContext ProfileManagementPageCreationContext { get; private set; } - public PersonalSettingsInfoModel PersonalSettingsInfoModel { get; set; } + protected ProfileManagementPageOptions Options { get; } - public bool DisablePasswordChange { get; set; } - - public bool HideOldPasswordInput { get; set; } - - protected IProfileAppService ProfileAppService { get; } - - public ManageModel(IProfileAppService profileAppService) + public ManageModel(IOptions options) { - ProfileAppService = profileAppService; + Options = options.Value; } public virtual async Task OnGetAsync() { - var user = await ProfileAppService.GetAsync(); - - PersonalSettingsInfoModel = ObjectMapper.Map(user); + ProfileManagementPageCreationContext = new ProfileManagementPageCreationContext(ServiceProvider); - DisablePasswordChange = user.IsExternal; - HideOldPasswordInput = !user.HasPassword; + foreach (var contributor in Options.Contributors) + { + await contributor.ConfigureAsync(ProfileManagementPageCreationContext); + } return Page(); } @@ -40,50 +36,4 @@ namespace Volo.Abp.Account.Web.Pages.Account return Task.FromResult(Page()); } } - - public class ChangePasswordInfoModel - { - [Required] - [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPasswordLength))] - [Display(Name = "DisplayName:CurrentPassword")] - [DataType(DataType.Password)] - public string CurrentPassword { get; set; } - - [Required] - [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPasswordLength))] - [Display(Name = "DisplayName:NewPassword")] - [DataType(DataType.Password)] - public string NewPassword { get; set; } - - [Required] - [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPasswordLength))] - [Display(Name = "DisplayName:NewPasswordConfirm")] - [DataType(DataType.Password)] - public string NewPasswordConfirm { get; set; } - } - - public class PersonalSettingsInfoModel - { - [Required] - [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxUserNameLength))] - [Display(Name = "DisplayName:UserName")] - public string UserName { get; set; } - - [Required] - [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxEmailLength))] - [Display(Name = "DisplayName:Email")] - public string Email { get; set; } - - [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxNameLength))] - [Display(Name = "DisplayName:Name")] - public string Name { get; set; } - - [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxSurnameLength))] - [Display(Name = "DisplayName:Surname")] - public string Surname { get; set; } - - [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPhoneNumberLength))] - [Display(Name = "DisplayName:PhoneNumber")] - public string PhoneNumber { get; set; } - } } diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.js b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.js deleted file mode 100644 index 3c7c4148e8..0000000000 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.js +++ /dev/null @@ -1,47 +0,0 @@ -(function ($) { - var l = abp.localization.getResource('AbpAccount'); - - var _profileService = volo.abp.identity.profile; - - $('#ChangePasswordForm').submit(function (e) { - e.preventDefault(); - - if (!$('#ChangePasswordForm').valid()) { - return false; - } - - var input = $('#ChangePasswordForm').serializeFormToObject() - .changePasswordInfoModel; - - if ( - input.newPassword != input.newPasswordConfirm || - input.newPassword == '' - ) { - abp.message.error(l('NewPasswordConfirmFailed')); - return; - } - - if (input.currentPassword && input.currentPassword == ''){ - return; - } - - _profileService.changePassword(input).then(function (result) { - abp.message.success(l('PasswordChanged')); - }); - }); - - $('#PersonalSettingsForm').submit(function (e) { - e.preventDefault(); - - if (!$('#PersonalSettingsForm').valid()) { - return false; - } - - var input = $('#PersonalSettingsForm').serializeFormToObject() - .personalSettingsInfoModel; - - _profileService.update(input).then(function (result) { - abp.notify.success(l('PersonalSettingsSaved')); - }); - }); -})(jQuery); diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Register.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Register.cshtml.cs index a8ec942084..0560197cd3 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Register.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Register.cshtml.cs @@ -18,7 +18,6 @@ namespace Volo.Abp.Account.Web.Pages.Account { public class RegisterModel : AccountPageModel { - protected IAccountAppService AccountAppService { get; } [BindProperty(SupportsGet = true)] public string ReturnUrl { get; set; } diff --git a/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/AccountProfileManagementPageContributor.cs b/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/AccountProfileManagementPageContributor.cs new file mode 100644 index 0000000000..3f2a11ac86 --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/AccountProfileManagementPageContributor.cs @@ -0,0 +1,48 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using Volo.Abp.Account.Localization; +using Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Password; +using Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo; +using Volo.Abp.Identity; +using Volo.Abp.Users; + +namespace Volo.Abp.Account.Web.ProfileManagement +{ + public class AccountProfileManagementPageContributor : IProfileManagementPageContributor + { + public async Task ConfigureAsync(ProfileManagementPageCreationContext context) + { + var l = context.ServiceProvider.GetRequiredService>(); + + if (await IsPasswordChangeEnabled(context)) + { + context.Groups.Add( + new ProfileManagementPageGroup( + "Volo.Abp.Account.Password", + l["ProfileTab:Password"], + typeof(AccountProfilePasswordManagementGroupViewComponent) + ) + ); + } + + context.Groups.Add( + new ProfileManagementPageGroup( + "Volo.Abp.Account.PersonalInfo", + l["ProfileTab:PersonalInfo"], + typeof(AccountProfilePersonalInfoManagementGroupViewComponent) + ) + ); + } + + protected virtual async Task IsPasswordChangeEnabled(ProfileManagementPageCreationContext context) + { + var userManager = context.ServiceProvider.GetRequiredService(); + var currentUser = context.ServiceProvider.GetRequiredService(); + + var user = await userManager.GetByIdAsync(currentUser.GetId()); + + return !user.IsExternal; + } + } +} diff --git a/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/IProfileManagementPageContributor.cs b/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/IProfileManagementPageContributor.cs new file mode 100644 index 0000000000..d65cc1fb0d --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/IProfileManagementPageContributor.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + + namespace Volo.Abp.Account.Web.ProfileManagement +{ + public interface IProfileManagementPageContributor + { + Task ConfigureAsync(ProfileManagementPageCreationContext context); + } +} diff --git a/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageCreationContext.cs b/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageCreationContext.cs new file mode 100644 index 0000000000..f3a9a80de7 --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageCreationContext.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; + +namespace Volo.Abp.Account.Web.ProfileManagement +{ + public class ProfileManagementPageCreationContext + { + public IServiceProvider ServiceProvider { get; } + + public List Groups { get; } + + public ProfileManagementPageCreationContext(IServiceProvider serviceProvider) + { + ServiceProvider = serviceProvider; + + Groups = new List(); + } + } +} diff --git a/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageGroup.cs b/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageGroup.cs new file mode 100644 index 0000000000..ff491107aa --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageGroup.cs @@ -0,0 +1,39 @@ +using System; +using JetBrains.Annotations; + +namespace Volo.Abp.Account.Web.ProfileManagement +{ + public class ProfileManagementPageGroup + { + public string Id + { + get => _id; + set => _id = Check.NotNullOrWhiteSpace(value, nameof(Id)); + } + private string _id; + + public string DisplayName + { + get => _displayName; + set => _displayName = Check.NotNullOrWhiteSpace(value, nameof(DisplayName)); + } + private string _displayName; + + public Type ComponentType + { + get => _componentType; + set => _componentType = Check.NotNull(value, nameof(ComponentType)); + } + private Type _componentType; + + public object Parameter { get; set; } + + public ProfileManagementPageGroup([NotNull] string id, [NotNull] string displayName, [NotNull] Type componentType, object parameter = null) + { + Id = id; + DisplayName = displayName; + ComponentType = componentType; + Parameter = parameter; + } + } +} diff --git a/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageOptions.cs b/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageOptions.cs new file mode 100644 index 0000000000..91cf0ab0c1 --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/ProfileManagement/ProfileManagementPageOptions.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; + + namespace Volo.Abp.Account.Web.ProfileManagement +{ + public class ProfileManagementPageOptions + { + public List Contributors { get; } + + public ProfileManagementPageOptions() + { + Contributors = new List(); + } + } +} From 9522b356859f41588d183e4ddead89de4877e02d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Tue, 1 Sep 2020 16:07:14 +0300 Subject: [PATCH 184/474] created abp.luxon.js --- npm/packs/luxon/src/abp.luxon.js | 46 ++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 npm/packs/luxon/src/abp.luxon.js diff --git a/npm/packs/luxon/src/abp.luxon.js b/npm/packs/luxon/src/abp.luxon.js new file mode 100644 index 0000000000..b04de7cadf --- /dev/null +++ b/npm/packs/luxon/src/abp.luxon.js @@ -0,0 +1,46 @@ +var abp = abp || {}; +(function () { + + if (!luxon) { + throw "abp/luxon library requires the luxon library included to the page!"; + } + + /* TIMING *************************************************/ + + abp.timing = abp.timing || {}; + + var setObjectValue = function (obj, property, value) { + if (typeof property === "string") { + property = property.split('.'); + } + + if (property.length > 1) { + var p = property.shift(); + setObjectValue(obj[p], property, value); + } else { + obj[property[0]] = value; + } + } + + var getObjectValue = function (obj, property) { + return property.split('.').reduce((a, v) => a[v], obj) + } + + abp.timing.convertFieldsToIsoDate = function (form, fields) { + for (var field of fields) { + var dateTime = luxon.DateTime + .fromFormat( + getObjectValue(form, field), + abp.localization.currentCulture.dateTimeFormat.shortDatePattern, + {locale: abp.localization.currentCulture.cultureName} + ); + + if (!dateTime.invalid) { + setObjectValue(form, field, dateTime.toFormat("yyyy-MM-dd HH:mm:ss")) + } + } + + return form; + } + +})(jQuery); From f73173bf4c5b7a79b5766083f98ec5bff23eecab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 1 Sep 2020 16:45:45 +0300 Subject: [PATCH 185/474] Update angular book UI for the proxy generation changes. --- docs/en/Tutorials/Part-2.md | 13 ++-- docs/en/Tutorials/Part-3.md | 56 +++++++----------- .../Tutorials/images/generated-proxies-3.png | Bin 0 -> 11889 bytes 3 files changed, 26 insertions(+), 43 deletions(-) create mode 100644 docs/en/Tutorials/images/generated-proxies-3.png diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index c947f4495d..bcec504886 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -347,9 +347,9 @@ This is a fully working, server side paged, sorted and localized table of books. ## Install NPM packages -> Notice: This tutorial is based on the ABP Framework v3.0.3+ If your project version is older, then please upgrade your solution. See the [migration guide](../UI/Angular/Migration-Guide-v3.md) if you are upgrading an existing project with v2.x. +> Notice: This tutorial is based on the ABP Framework v3.1.0+ If your project version is older, then please upgrade your solution. See the [migration guide](../UI/Angular/Migration-Guide-v3.md) if you are upgrading an existing project with v2.x. -If you haven't done it before, open a new command line interface (terminal window) and go to your `angular` folder and then run `yarn` command to install NPM packages: +If you haven't done it before, open a new command line interface (terminal window) and go to your `angular` folder and then run `yarn` command to install the NPM packages: ```bash yarn @@ -473,9 +473,9 @@ Run the following command in the `angular` folder: abp generate-proxy ``` -The generated files looks like below: +This command will create the following files under the `/src/app/proxy/books` folder: -![Generated files](./images/generated-proxies-2.png) +![Generated files](./images/generated-proxies-3.png) ### BookComponent @@ -484,8 +484,7 @@ Open the `/src/app/book/book.component.ts` file and replace the content as below ```js import { ListService, PagedResultDto } from '@abp/ng.core'; import { Component, OnInit } from '@angular/core'; -import { BookDto } from './models'; -import { BookService } from './services'; +import { BookService, BookDto } from '@proxy/books'; @Component({ selector: 'app-book', @@ -499,7 +498,7 @@ export class BookComponent implements OnInit { constructor(public readonly list: ListService, private bookService: BookService) {} ngOnInit() { - const bookStreamCreator = (query) => this.bookService.getListByInput(query); + const bookStreamCreator = (query) => this.bookService.getList(query); this.list.hookToQuery(bookStreamCreator).subscribe((response) => { this.book = response; diff --git a/docs/en/Tutorials/Part-3.md b/docs/en/Tutorials/Part-3.md index 13aa5df8c3..2eef56e79a 100644 --- a/docs/en/Tutorials/Part-3.md +++ b/docs/en/Tutorials/Part-3.md @@ -656,8 +656,7 @@ Open `/src/app/book/book.component.ts` and replace the content as below: ```js import { ListService, PagedResultDto } from '@abp/ng.core'; import { Component, OnInit } from '@angular/core'; -import { BookDto } from './models'; -import { BookService } from './services'; +import { BookService, BookDto } from '@proxy/books'; @Component({ selector: 'app-book', @@ -673,7 +672,7 @@ export class BookComponent implements OnInit { constructor(public readonly list: ListService, private bookService: BookService) {} ngOnInit() { - const bookStreamCreator = (query) => this.bookService.getListByInput(query); + const bookStreamCreator = (query) => this.bookService.getList(query); this.list.hookToQuery(bookStreamCreator).subscribe((response) => { this.book = response; @@ -749,8 +748,8 @@ Open `/src/app/book/book.component.ts` and replace the content as below: ```js import { ListService, PagedResultDto } from '@abp/ng.core'; import { Component, OnInit } from '@angular/core'; -import { BookDto, BookType } from './models'; // add BookType -import { BookService } from './services'; +// import bookTypeOptions from @proxy/books +import { BookService, BookDto, bookTypeOptions } from '@proxy/books'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; // add this @Component({ @@ -764,12 +763,8 @@ export class BookComponent implements OnInit { form: FormGroup; // add this line - bookType = BookType; // add this line - // add bookTypes as a list of BookType enum members - bookTypes = Object.keys(this.bookType).filter( - (key) => typeof this.bookType[key] === 'number' - ); + bookTypes = bookTypeOptions; isModalOpen = false; @@ -780,7 +775,7 @@ export class BookComponent implements OnInit { ) {} ngOnInit() { - const bookStreamCreator = (query) => this.bookService.getListByInput(query); + const bookStreamCreator = (query) => this.bookService.getList(query); this.list.hookToQuery(bookStreamCreator).subscribe((response) => { this.book = response; @@ -808,7 +803,7 @@ export class BookComponent implements OnInit { return; } - this.bookService.createByInput(this.form.value).subscribe(() => { + this.bookService.create(this.form.value).subscribe(() => { this.isModalOpen = false; this.form.reset(); this.list.get(); @@ -819,7 +814,6 @@ export class BookComponent implements OnInit { * Imported `FormGroup`, `FormBuilder` and `Validators` from `@angular/forms`. * Added `form: FormGroup` property. -* Added `bookType` property so that you can reach `BookType` enum members from template. * Added `bookTypes` property as a list of `BookType` enum members. That will be used in form options. * Injected `FormBuilder` into the constructor. [FormBuilder](https://angular.io/api/forms/FormBuilder) provides convenient methods for generating form controls. It reduces the amount of boilerplate needed to build complex forms. * Added `buildForm` method to the end of the file and executed the `buildForm()` in the `createBook` method. @@ -910,8 +904,7 @@ Open `/src/app/book/book.component.ts` and replace the content as below: ```js import { ListService, PagedResultDto } from '@abp/ng.core'; import { Component, OnInit } from '@angular/core'; -import { BookDto, BookType } from './models'; -import { BookService } from './services'; +import { BookService, BookDto, bookTypeOptions } from '@proxy/books'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; // added this line @@ -931,11 +924,7 @@ export class BookComponent implements OnInit { form: FormGroup; - bookType = BookType; - - bookTypes = Object.keys(this.bookType).filter( - (key) => typeof this.bookType[key] === 'number' - ); + bookTypes = bookTypeOptions; isModalOpen = false; @@ -946,7 +935,7 @@ export class BookComponent implements OnInit { ) {} ngOnInit() { - const bookStreamCreator = (query) => this.bookService.getListByInput(query); + const bookStreamCreator = (query) => this.bookService.getList(query); this.list.hookToQuery(bookStreamCreator).subscribe((response) => { this.book = response; @@ -972,7 +961,7 @@ export class BookComponent implements OnInit { return; } - this.bookService.createByInput(this.form.value).subscribe(() => { + this.bookService.create(this.form.value).subscribe(() => { this.isModalOpen = false; this.form.reset(); this.list.get(); @@ -995,8 +984,7 @@ Open `/src/app/book/book.component.ts` and replace the content as shown below: ```js import { ListService, PagedResultDto } from '@abp/ng.core'; import { Component, OnInit } from '@angular/core'; -import { BookDto, BookType, CreateUpdateBookDto } from './models'; -import { BookService } from './services'; +import { BookService, BookDto, bookTypeOptions } from '@proxy/books'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; import { NgbDateNativeAdapter, NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap'; @@ -1009,15 +997,11 @@ import { NgbDateNativeAdapter, NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap export class BookComponent implements OnInit { book = { items: [], totalCount: 0 } as PagedResultDto; - selectedBook = new BookDto(); // declare selectedBook + selectedBook = {} as BookDto; // declare selectedBook form: FormGroup; - bookType = BookType; - - bookTypes = Object.keys(this.bookType).filter( - (key) => typeof this.bookType[key] === 'number' - ); + bookTypes = bookTypeOptions; isModalOpen = false; @@ -1028,7 +1012,7 @@ export class BookComponent implements OnInit { ) {} ngOnInit() { - const bookStreamCreator = (query) => this.bookService.getListByInput(query); + const bookStreamCreator = (query) => this.bookService.getList(query); this.list.hookToQuery(bookStreamCreator).subscribe((response) => { this.book = response; @@ -1036,14 +1020,14 @@ export class BookComponent implements OnInit { } createBook() { - this.selectedBook = new BookDto(); // reset the selected book + this.selectedBook = {} as BookDto; // reset the selected book this.buildForm(); this.isModalOpen = true; } // Add editBook method editBook(id: string) { - this.bookService.getById(id).subscribe((book) => { + this.bookService.get(id).subscribe((book) => { this.selectedBook = book; this.buildForm(); this.isModalOpen = true; @@ -1069,8 +1053,8 @@ export class BookComponent implements OnInit { } const request = this.selectedBook.id - ? this.bookService.updateByIdAndInput(this.form.value, this.selectedBook.id) - : this.bookService.createByInput(this.form.value); + ? this.bookService.update(this.form.value, this.selectedBook.id) + : this.bookService.create(this.form.value); request.subscribe(() => { this.isModalOpen = false; @@ -1155,7 +1139,7 @@ constructor( delete(id: string) { this.confirmation.warn('::AreYouSureToDelete', '::AreYouSure').subscribe((status) => { if (status === Confirmation.Status.confirm) { - this.bookService.deleteById(id).subscribe(() => this.list.get()); + this.bookService.delete(id).subscribe(() => this.list.get()); } }); } diff --git a/docs/en/Tutorials/images/generated-proxies-3.png b/docs/en/Tutorials/images/generated-proxies-3.png new file mode 100644 index 0000000000000000000000000000000000000000..2a94f4e389bc46e006e43ad8e940d2a5d2c8d8f6 GIT binary patch literal 11889 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 P$$<~z@?zy81_A#AY)0!* literal 0 HcmV?d00001 From b00ccef6b680399b6589b15bdfdfa29acaaca49c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 1 Sep 2020 16:49:53 +0300 Subject: [PATCH 186/474] Fix book type --- docs/en/Tutorials/Part-3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Tutorials/Part-3.md b/docs/en/Tutorials/Part-3.md index 2eef56e79a..70deaa1503 100644 --- a/docs/en/Tutorials/Part-3.md +++ b/docs/en/Tutorials/Part-3.md @@ -838,7 +838,7 @@ Open `/src/app/book/book.component.html` and replace ` Type *
    From 423744c4280d3d1bef188611fbd7cf74455ba2ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 1 Sep 2020 17:08:45 +0300 Subject: [PATCH 187/474] Fixed author part angular UI --- docs/en/Tutorials/Part-3.md | 2 +- docs/en/Tutorials/Part-9.md | 19 +++++++++--------- ...okstore-angular-service-proxy-author-2.png | Bin 0 -> 9507 bytes 3 files changed, 10 insertions(+), 11 deletions(-) create mode 100644 docs/en/Tutorials/images/bookstore-angular-service-proxy-author-2.png diff --git a/docs/en/Tutorials/Part-3.md b/docs/en/Tutorials/Part-3.md index 70deaa1503..be3dd75d64 100644 --- a/docs/en/Tutorials/Part-3.md +++ b/docs/en/Tutorials/Part-3.md @@ -1053,7 +1053,7 @@ export class BookComponent implements OnInit { } const request = this.selectedBook.id - ? this.bookService.update(this.form.value, this.selectedBook.id) + ? this.bookService.update(this.selectedBook.id, this.form.value) : this.bookService.create(this.form.value); request.subscribe(() => { diff --git a/docs/en/Tutorials/Part-9.md b/docs/en/Tutorials/Part-9.md index 1b9451700d..0d78d584b8 100644 --- a/docs/en/Tutorials/Part-9.md +++ b/docs/en/Tutorials/Part-9.md @@ -621,7 +621,7 @@ abp generate-proxy This command generates the service proxy for the author service and the related model (DTO) classes: -![bookstore-angular-service-proxy-author](images/bookstore-angular-service-proxy-author.png) +![bookstore-angular-service-proxy-author](images/bookstore-angular-service-proxy-author-2.png) ### AuthorComponent @@ -630,8 +630,7 @@ Open the `/src/app/author/author.component.ts` file and replace the content as b ```js import { Component, OnInit } from '@angular/core'; import { ListService, PagedResultDto } from '@abp/ng.core'; -import { AuthorDto } from './models'; -import { AuthorService } from './services'; +import { AuthorService, AuthorDto } from '@proxy/authors'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; import { NgbDateNativeAdapter, NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap'; import { ConfirmationService, Confirmation } from '@abp/ng.theme.shared'; @@ -649,7 +648,7 @@ export class AuthorComponent implements OnInit { form: FormGroup; - selectedAuthor = new AuthorDto(); + selectedAuthor = {} as AuthorDto; constructor( public readonly list: ListService, @@ -659,7 +658,7 @@ export class AuthorComponent implements OnInit { ) {} ngOnInit(): void { - const authorStreamCreator = (query) => this.authorService.getListByInput(query); + const authorStreamCreator = (query) => this.authorService.getList(query); this.list.hookToQuery(authorStreamCreator).subscribe((response) => { this.author = response; @@ -667,13 +666,13 @@ export class AuthorComponent implements OnInit { } createAuthor() { - this.selectedAuthor = new AuthorDto(); + this.selectedAuthor = {} as AuthorDto; this.buildForm(); this.isModalOpen = true; } editAuthor(id: string) { - this.authorService.getById(id).subscribe((author) => { + this.authorService.get(id).subscribe((author) => { this.selectedAuthor = author; this.buildForm(); this.isModalOpen = true; @@ -697,14 +696,14 @@ export class AuthorComponent implements OnInit { if (this.selectedAuthor.id) { this.authorService - .updateByIdAndInput(this.form.value, this.selectedAuthor.id) + .update(this.selectedAuthor.id, this.form.value) .subscribe(() => { this.isModalOpen = false; this.form.reset(); this.list.get(); }); } else { - this.authorService.createByInput(this.form.value).subscribe(() => { + this.authorService.create(this.form.value).subscribe(() => { this.isModalOpen = false; this.form.reset(); this.list.get(); @@ -716,7 +715,7 @@ export class AuthorComponent implements OnInit { this.confirmation.warn('::AreYouSureToDelete', '::AreYouSure') .subscribe((status) => { if (status === Confirmation.Status.confirm) { - this.authorService.deleteById(id).subscribe(() => this.list.get()); + this.authorService.delete(id).subscribe(() => this.list.get()); } }); } diff --git a/docs/en/Tutorials/images/bookstore-angular-service-proxy-author-2.png b/docs/en/Tutorials/images/bookstore-angular-service-proxy-author-2.png new file mode 100644 index 0000000000000000000000000000000000000000..d76179bb78e47ffb40dc41c3996ea4a73649a90c GIT binary patch literal 9507 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 Date: Tue, 1 Sep 2020 17:33:57 +0300 Subject: [PATCH 188/474] Added author to the book list. --- docs/en/Tutorials/Part-10.md | 15 ++++++++++++++- .../bookstore-books-with-authorname-angular.png | Bin 0 -> 38482 bytes 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 docs/en/Tutorials/images/bookstore-books-with-authorname-angular.png diff --git a/docs/en/Tutorials/Part-10.md b/docs/en/Tutorials/Part-10.md index 0fa4892298..0604b8e584 100644 --- a/docs/en/Tutorials/Part-10.md +++ b/docs/en/Tutorials/Part-10.md @@ -915,6 +915,19 @@ You can run the application and try to create a new book or update an existing b {{else if UI=="NG"}} -***Angular UI is being prepared...*** +### The Book List + +Book list page change is trivial. Open the `/src/app/book/book.component.html` and add the following column definition between the `Name` and `Type` columns: + +````js + +```` + +When you run the application, you can see the *Author* column on the table: + +![bookstore-books-with-authorname-angular](images/bookstore-books-with-authorname-angular.png) {{end}} \ No newline at end of file diff --git a/docs/en/Tutorials/images/bookstore-books-with-authorname-angular.png b/docs/en/Tutorials/images/bookstore-books-with-authorname-angular.png new file mode 100644 index 0000000000000000000000000000000000000000..6f081c16f9f117dd2488cee4de3997bf7a9e4094 GIT binary patch literal 38482 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 a7ae{#p0-?CedN~5p2f@ Date: Tue, 1 Sep 2020 23:02:35 +0800 Subject: [PATCH 189/474] Add IsAvailableToHost & HostFeatureValueProvider & HostFeatureManagementProvider. --- .../Volo/Abp/Features/AbpFeaturesModule.cs | 1 + .../Volo/Abp/Features/FeatureDefinition.cs | 30 ++++++---- .../Abp/Features/HostFeatureValueProvider.cs | 30 ++++++++++ .../AbpFeatureManagementDomainModule.cs | 3 +- .../HostFeatureManagementProvider.cs | 59 +++++++++++++++++++ 5 files changed, 111 insertions(+), 12 deletions(-) create mode 100644 framework/src/Volo.Abp.Features/Volo/Abp/Features/HostFeatureValueProvider.cs create mode 100644 modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/HostFeatureManagementProvider.cs diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs index f30017feed..7db32231e0 100644 --- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs @@ -26,6 +26,7 @@ namespace Volo.Abp.Features context.Services.Configure(options => { options.ValueProviders.Add(); + options.ValueProviders.Add(); options.ValueProviders.Add(); options.ValueProviders.Add(); }); diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinition.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinition.cs index bd79480326..b2b11f0a18 100644 --- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinition.cs +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinition.cs @@ -51,6 +51,12 @@ namespace Volo.Abp.Features /// public bool IsVisibleToClients { get; set; } + /// + /// Can host use this feature. + /// Default: true. + /// + public bool IsAvailableToHost { get; set; } + /// /// A list of allowed providers to get/set value of this feature. /// An empty list indicates that all providers are allowed. @@ -93,7 +99,8 @@ namespace Volo.Abp.Features ILocalizableString displayName = null, ILocalizableString description = null, IStringValueType valueType = null, - bool isVisibleToClients = true) + bool isVisibleToClients = true, + bool isAvailableToHost = true) { Name = name; DefaultValue = defaultValue; @@ -101,6 +108,7 @@ namespace Volo.Abp.Features Description = description; ValueType = valueType; IsVisibleToClients = isVisibleToClients; + IsAvailableToHost = isAvailableToHost; Properties = new Dictionary(); AllowedProviders = new List(); @@ -136,20 +144,22 @@ namespace Volo.Abp.Features /// /// Returns a newly created child feature public FeatureDefinition CreateChild( - string name, - string defaultValue = null, - ILocalizableString displayName = null, + string name, + string defaultValue = null, + ILocalizableString displayName = null, ILocalizableString description = null, IStringValueType valueType = null, - bool isVisibleToClients = true) + bool isVisibleToClients = true, + bool isAvailableToHost = true) { var feature = new FeatureDefinition( - name, - defaultValue, - displayName, + name, + defaultValue, + displayName, description, valueType, - isVisibleToClients) + isVisibleToClients, + isAvailableToHost) { Parent = this }; @@ -175,4 +185,4 @@ namespace Volo.Abp.Features return $"[{nameof(FeatureDefinition)}: {Name}]"; } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/HostFeatureValueProvider.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/HostFeatureValueProvider.cs new file mode 100644 index 0000000000..d895813e6f --- /dev/null +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/HostFeatureValueProvider.cs @@ -0,0 +1,30 @@ +using System.Threading.Tasks; +using Volo.Abp.MultiTenancy; + +namespace Volo.Abp.Features +{ + public class HostFeatureValueProvider : FeatureValueProvider + { + public const string ProviderName = "H"; + + public override string Name => ProviderName; + + protected ICurrentTenant CurrentTenant { get; } + + public HostFeatureValueProvider(IFeatureStore featureStore, ICurrentTenant currentTenant) + : base(featureStore) + { + CurrentTenant = currentTenant; + } + + public override async Task GetOrNullAsync(FeatureDefinition feature) + { + if (CurrentTenant.Id.HasValue || !feature.IsAvailableToHost) + { + return null; + } + + return await FeatureStore.GetOrNullAsync(feature.Name, Name, null); + } + } +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs index e8e961d3b4..17e0b9fc04 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs @@ -1,10 +1,8 @@ using Volo.Abp.Caching; using Volo.Abp.FeatureManagement.Localization; using Volo.Abp.Features; -using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; -using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.FeatureManagement { @@ -20,6 +18,7 @@ namespace Volo.Abp.FeatureManagement Configure(options => { options.Providers.Add(); + options.Providers.Add(); options.Providers.Add(); //TODO: Should be moved to the Tenant Management module diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/HostFeatureManagementProvider.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/HostFeatureManagementProvider.cs new file mode 100644 index 0000000000..d40d2dfdec --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/HostFeatureManagementProvider.cs @@ -0,0 +1,59 @@ +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Features; +using Volo.Abp.MultiTenancy; + +namespace Volo.Abp.FeatureManagement +{ + public class HostFeatureManagementProvider : FeatureManagementProvider, ITransientDependency + { + public override string Name => HostFeatureValueProvider.ProviderName; + + protected ICurrentTenant CurrentTenant { get; } + + public HostFeatureManagementProvider( + IFeatureManagementStore store, + ICurrentTenant currentTenant) + : base(store) + { + CurrentTenant = currentTenant; + } + + public override async Task GetOrNullAsync(FeatureDefinition feature, string providerKey) + { + if (IsHostSide(feature)) + { + return await Store.GetOrNullAsync(feature.Name, Name, NormalizeProviderKey(providerKey)); + } + + return null; + } + + public override async Task SetAsync(FeatureDefinition feature, string value, string providerKey) + { + if (IsHostSide(feature)) + { + await Store.SetAsync(feature.Name, value, Name, NormalizeProviderKey(providerKey)); + } + } + + public override async Task ClearAsync(FeatureDefinition feature, string providerKey) + { + if (IsHostSide(feature)) + { + await Store.DeleteAsync(feature.Name, Name, NormalizeProviderKey(providerKey)); + } + } + + protected override string NormalizeProviderKey(string providerKey) + { + return null; + } + + //TODO: Should throw an ex when there is not in the host side? + protected virtual bool IsHostSide(FeatureDefinition feature) + { + return feature.IsAvailableToHost && CurrentTenant.Id == null; + } + } +} From 620b73ed846895787f3d0df36c5e63e70936cc22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 1 Sep 2020 18:11:33 +0300 Subject: [PATCH 190/474] Added author combobox to book create/edit form. --- docs/en/Tutorials/Part-10.md | 130 ++++++++++++++++++ .../bookstore-angular-author-selection.png | Bin 0 -> 36377 bytes 2 files changed, 130 insertions(+) create mode 100644 docs/en/Tutorials/images/bookstore-angular-author-selection.png diff --git a/docs/en/Tutorials/Part-10.md b/docs/en/Tutorials/Part-10.md index 0604b8e584..1542a00559 100644 --- a/docs/en/Tutorials/Part-10.md +++ b/docs/en/Tutorials/Part-10.md @@ -930,4 +930,134 @@ When you run the application, you can see the *Author* column on the table: ![bookstore-books-with-authorname-angular](images/bookstore-books-with-authorname-angular.png) +### Create/Edit Forms + +The next step is to add an Author selection (dropdown) to the create/edit forms. The final UI will look like the one shown below: + +![bookstore-angular-author-selection](images/bookstore-angular-author-selection.png) + +Added the Author dropdown as the first element in the form. + +Open the `/src/app/book/book.component.ts` and and change the content as shown below: + +````typescript +import { ListService, PagedResultDto } from '@abp/ng.core'; +import { Component, OnInit } from '@angular/core'; +import { BookService, BookDto, bookTypeOptions, AuthorLookupDto } from '@proxy/books'; +import { FormGroup, FormBuilder, Validators } from '@angular/forms'; +import { NgbDateNativeAdapter, NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap'; +import { ConfirmationService, Confirmation } from '@abp/ng.theme.shared'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +@Component({ + selector: 'app-book', + templateUrl: './book.component.html', + styleUrls: ['./book.component.scss'], + providers: [ListService, { provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }], +}) +export class BookComponent implements OnInit { + book = { items: [], totalCount: 0 } as PagedResultDto; + + form: FormGroup; + + selectedBook = {} as BookDto; + + authors$: Observable; + + bookTypes = bookTypeOptions; + + isModalOpen = false; + + constructor( + public readonly list: ListService, + private bookService: BookService, + private fb: FormBuilder, + private confirmation: ConfirmationService + ) { + this.authors$ = bookService.getAuthorLookup().pipe(map((r) => r.items)); + } + + ngOnInit() { + const bookStreamCreator = (query) => this.bookService.getList(query); + + this.list.hookToQuery(bookStreamCreator).subscribe((response) => { + this.book = response; + }); + } + + createBook() { + this.selectedBook = {} as BookDto; + this.buildForm(); + this.isModalOpen = true; + } + + editBook(id: string) { + this.bookService.get(id).subscribe((book) => { + this.selectedBook = book; + this.buildForm(); + this.isModalOpen = true; + }); + } + + buildForm() { + this.form = this.fb.group({ + authorId: [this.selectedBook.authorId || null, Validators.required], + name: [this.selectedBook.name || null, Validators.required], + type: [this.selectedBook.type || null, Validators.required], + publishDate: [ + this.selectedBook.publishDate ? new Date(this.selectedBook.publishDate) : null, + Validators.required, + ], + price: [this.selectedBook.price || null, Validators.required], + }); + } + + save() { + if (this.form.invalid) { + return; + } + + const request = this.selectedBook.id + ? this.bookService.update(this.selectedBook.id, this.form.value) + : this.bookService.create(this.form.value); + + request.subscribe(() => { + this.isModalOpen = false; + this.form.reset(); + this.list.get(); + }); + } + + delete(id: string) { + this.confirmation.warn('::AreYouSureToDelete', 'AbpAccount::AreYouSure').subscribe((status) => { + if (status === Confirmation.Status.confirm) { + this.bookService.delete(id).subscribe(() => this.list.get()); + } + }); + } +} +```` + +* Added imports for the `AuthorLookupDto`, `Observable` and `map`. +* Added `authors$: Observable;` field after the `selectedBook`. +* Added `this.authors$ = bookService.getAuthorLookup().pipe(map((r) => r.items));` into the constructor. +* Added ` authorId: [this.selectedBook.authorId || null, Validators.required],` into the `buildForm()` function. + +Open the `/src/app/book/book.component.html` and add the following form group just before the book name form group: + +````html +
    + * + +
    +```` + +That's all. Just run the application and try to create or edit an author. + {{end}} \ No newline at end of file diff --git a/docs/en/Tutorials/images/bookstore-angular-author-selection.png b/docs/en/Tutorials/images/bookstore-angular-author-selection.png new file mode 100644 index 0000000000000000000000000000000000000000..bb604233ab772d1fc793f305d5ee1f133e8441d2 GIT binary patch literal 36377 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

    Hbe7m_MWO`tVXAB3Iq>K=T~6M7kh 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 literal 0 HcmV?d00001 From 453771ba31c9e1a40a9730a66f9009cea3862b89 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 1 Sep 2020 23:14:15 +0800 Subject: [PATCH 191/474] Introduce DynamicRangeAttribute --- .../AbpValidationAttributeAdapterProvider.cs | 9 ++- .../DynamicRangeAttributeAdapter.cs | 46 +++++++++++++ .../Abp/Validation/DynamicRangeAttribute.cs | 64 +++++++++++++++++++ .../Validation/ValidationTestController.cs | 36 +++++++++-- .../ValidationTestController_Tests.cs | 19 ++++-- 5 files changed, 161 insertions(+), 13 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/DynamicRangeAttributeAdapter.cs create mode 100644 framework/src/Volo.Abp.Core/Volo/Abp/Validation/DynamicRangeAttribute.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/AbpValidationAttributeAdapterProvider.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/AbpValidationAttributeAdapterProvider.cs index c9b7cb21b3..e5131592d0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/AbpValidationAttributeAdapterProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/AbpValidationAttributeAdapterProvider.cs @@ -27,8 +27,13 @@ namespace Volo.Abp.AspNetCore.Mvc.DataAnnotations { return new DynamicMaxLengthAttributeAdapter((DynamicMaxLengthAttribute) attribute, stringLocalizer); } - + + if (type == typeof(DynamicRangeAttribute)) + { + return new DynamicRangeAttributeAdapter((DynamicRangeAttribute) attribute, stringLocalizer); + } + return _defaultAdapter.GetAttributeAdapter(attribute, stringLocalizer); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/DynamicRangeAttributeAdapter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/DynamicRangeAttributeAdapter.cs new file mode 100644 index 0000000000..f084c559ad --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/DynamicRangeAttributeAdapter.cs @@ -0,0 +1,46 @@ +using System; +using System.Globalization; +using Microsoft.AspNetCore.Mvc.DataAnnotations; +using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; +using Microsoft.Extensions.Localization; +using Volo.Abp.Validation; + +namespace Volo.Abp.AspNetCore.Mvc.DataAnnotations +{ + public class DynamicRangeAttributeAdapter : AttributeAdapterBase + { + private readonly string _max; + private readonly string _min; + + public DynamicRangeAttributeAdapter( + DynamicRangeAttribute attribute, + IStringLocalizer stringLocalizer) + : base(attribute, stringLocalizer) + { + _min = Attribute.Minimum.ToString()?.ToString(CultureInfo.InvariantCulture); + _max = Attribute.Maximum.ToString()?.ToString(CultureInfo.InvariantCulture); + } + + public override void AddValidation(ClientModelValidationContext context) + { + Check.NotNull(context, nameof(context)); + + MergeAttribute(context.Attributes, "data-val", "true"); + MergeAttribute(context.Attributes, "data-val-length", GetErrorMessage(context)); + MergeAttribute(context.Attributes, "data-val-length-min", _min); + MergeAttribute(context.Attributes, "data-val-length-max", _max); + } + + public override string GetErrorMessage(ModelValidationContextBase validationContext) + { + Check.NotNull(validationContext, nameof(validationContext)); + + return GetErrorMessage( + validationContext.ModelMetadata, + validationContext.ModelMetadata.GetDisplayName(), + Attribute.Minimum, + Attribute.Maximum + ); + } + } +} diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Validation/DynamicRangeAttribute.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Validation/DynamicRangeAttribute.cs new file mode 100644 index 0000000000..2836987302 --- /dev/null +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Validation/DynamicRangeAttribute.cs @@ -0,0 +1,64 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.Diagnostics; +using System.Reflection; +using JetBrains.Annotations; + +namespace Volo.Abp.Validation +{ + public class DynamicRangeAttribute : RangeAttribute + { + private static readonly FieldInfo MaximumField; + private static readonly FieldInfo MinimumField; + + static DynamicRangeAttribute() + { + MaximumField = typeof(RangeAttribute).GetField( + "k__BackingField", + BindingFlags.Instance | BindingFlags.NonPublic + ); + Debug.Assert(MaximumField != null, nameof(MaximumField) + " != null"); + + MinimumField = typeof(RangeAttribute).GetField( + "k__BackingField", + BindingFlags.Instance | BindingFlags.NonPublic + ); + Debug.Assert(MinimumField != null, nameof(MinimumField) + " != null"); + } + + /// A type to get the values of the properties + /// The name of the public static property for the + /// The name of the public static property for the + /// The type of the range parameters. Must implement IComparable. + public DynamicRangeAttribute( + [NotNull] Type sourceType, + [NotNull] Type operandType, + [CanBeNull] string minimumPropertyName, + [CanBeNull] string maximumPropertyName + ) + : base(operandType, string.Empty, string.Empty) + { + Check.NotNull(sourceType, nameof(sourceType)); + + if (minimumPropertyName != null) + { + var minimumProperty = sourceType.GetProperty( + minimumPropertyName, + BindingFlags.Static | BindingFlags.Public + ); + Debug.Assert(minimumProperty != null, nameof(minimumProperty) + " != null"); + MinimumField.SetValue(this, minimumProperty.GetValue(null)); + } + + if (maximumPropertyName != null) + { + var maximumProperty = sourceType.GetProperty( + maximumPropertyName, + BindingFlags.Static | BindingFlags.Public + ); + Debug.Assert(maximumProperty != null, nameof(maximumProperty) + " != null"); + MaximumField.SetValue(this, maximumProperty.GetValue(null)); + } + } + } +} diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs index 6ce47c4679..de0e24002f 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; @@ -32,7 +33,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation { return Content("ModelState.IsValid: " + ModelState.IsValid.ToString().ToLowerInvariant()); } - + [HttpGet] [Route("object-result-action-dynamic-length")] public Task ObjectResultActionDynamicLength(ValidationDynamicTestModel model) @@ -47,7 +48,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation [StringLength(5, MinimumLength = 2)] public string Value1 { get; set; } } - + public class ValidationDynamicTestModel { [DynamicStringLength(typeof(Consts), nameof(Consts.MaxValue1Length), nameof(Consts.MinValue1Length))] @@ -55,18 +56,41 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation [DynamicMaxLength(typeof(Consts), nameof(Consts.MaxValue2Length))] public string Value2 { get; set; } - + [DynamicMaxLength(typeof(Consts), nameof(Consts.MaxValue3Length))] public int[] Value3 { get; set; } - + + [DynamicRange(typeof(Consts), typeof(int), nameof(Consts.MinValue1), nameof(Consts.MaxValue1))] + public int Value4 { get; set; } + + [DynamicRange(typeof(Consts), typeof(double), nameof(Consts.MinValue2), nameof(Consts.MaxValue2))] + public double Value5 { get; set; } + + [DynamicRange(typeof(Consts), typeof(DateTime), nameof(Consts.MinValue3), nameof(Consts.MaxValue3))] + public DateTime Value6 { get; set; } + public static class Consts { public static int MinValue1Length { get; set; } = 2; public static int MaxValue1Length { get; set; } = 7; public static int MaxValue2Length { get; set; } = 4; - + public static int MaxValue3Length { get; set; } = 2; + + + public static int MinValue1 { get; set; } = 1; + + public static int MaxValue1 { get; set; } = 5; + + + public static double MinValue2 { get; set; } = 1.2; + + public static double MaxValue2 { get; set; } = 7.2; + + public static string MinValue3 { get; set; } = "1/2/2004"; + + public static string MaxValue3 { get; set; } = "3/4/2004"; } } @@ -83,4 +107,4 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation } } } -} \ No newline at end of file +} diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs index 9e22784ba7..715e55799a 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs @@ -61,9 +61,9 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation [Fact] public async Task Should_Validate_Dynamic_Length_Object_Result_Success() { - var result = await GetResponseAsStringAsync("/api/validation-test/object-result-action-dynamic-length?value1=hello&value3[0]=53&value3[1]=54"); + var result = await GetResponseAsStringAsync("/api/validation-test/object-result-action-dynamic-length?value1=hello&value3[0]=53&value3[1]=54&value4=4&value5=1.5&value6=2004-02-04"); result.ShouldBe("hello"); - + } [Fact] @@ -71,15 +71,24 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation { var result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=a", HttpStatusCode.BadRequest); //value1 has min string length of 2 chars. result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); - + result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=12345678", HttpStatusCode.BadRequest); //value1 has max string length of 7 chars. result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); - + result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=123458&value2=12345", HttpStatusCode.BadRequest); //value2 has max length of 5 chars. result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); - + result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=123458&value3[0]=53&value3[1]=54&value3[2]=55&value3[3]=56", HttpStatusCode.BadRequest); //value3 has max length of 2. result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); + + result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=123458&value3[0]=53&value3[1]=54&value[4]=10", HttpStatusCode.BadRequest); //value4 has max num of 5. + result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); + + result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=123458&value3[0]=53&value3[1]=54&value4=2&value5=1.1", HttpStatusCode.BadRequest); //value4 has min num of 1.2. + result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); + + result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=123458&value3[0]=53&value3[1]=54&value4=2&value5=1.2&value6=2004-05-04", HttpStatusCode.BadRequest); //value4 has max date of 3/4/2004. + result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); } } } From c86b6382f92e0c636b1cf3895a3ef6dc90e5dc81 Mon Sep 17 00:00:00 2001 From: berkansasmaz Date: Tue, 1 Sep 2020 18:20:09 +0300 Subject: [PATCH 192/474] New localization items have been added. --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 5 ++++- .../Community/Localization/Resources/en.json | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index 5b0a2a78cb..e22742ce51 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -191,6 +191,9 @@ "Enum:Status:2": "Approved", "Summary": "Summary", "AuthorName": "Author name", - "CoverImage": "Cover Image" + "CoverImage": "Cover Image", + "ClearCacheConfirmationMessage": "Are you sure you clear the cache for \"{0}\" Article?", + "SuccessfullyCleared": "Successfully cleared", + "RemoveCache": "Remove Cache" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json index 9451e616ff..55b42181d0 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json @@ -84,6 +84,7 @@ "MyAccount": "My account", "LatestGithubAnnouncements": "Latest Github Announcements", "SeeAllAnnouncements": "See All Announcements", - "LatestBlogPost": "Latest Blog Post" + "LatestBlogPost": "Latest Blog Post", + "Edit": "Edit" } } From 283fc57aaa6024de59e83ed257cd1502b4d45044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 1 Sep 2020 18:22:47 +0300 Subject: [PATCH 193/474] Fix language name --- docs/en/Tutorials/Part-10.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Tutorials/Part-10.md b/docs/en/Tutorials/Part-10.md index 1542a00559..3203cc8ee2 100644 --- a/docs/en/Tutorials/Part-10.md +++ b/docs/en/Tutorials/Part-10.md @@ -940,7 +940,7 @@ Added the Author dropdown as the first element in the form. Open the `/src/app/book/book.component.ts` and and change the content as shown below: -````typescript +````js import { ListService, PagedResultDto } from '@abp/ng.core'; import { Component, OnInit } from '@angular/core'; import { BookService, BookDto, bookTypeOptions, AuthorLookupDto } from '@proxy/books'; From 750703003957f26efae3a0b4ea273469ef35a49e Mon Sep 17 00:00:00 2001 From: berkansasmaz Date: Tue, 1 Sep 2020 19:06:03 +0300 Subject: [PATCH 194/474] ClearCacheConfirmationMessage rename. --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index e22742ce51..6e3c1df3ce 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -192,8 +192,8 @@ "Summary": "Summary", "AuthorName": "Author name", "CoverImage": "Cover Image", - "ClearCacheConfirmationMessage": "Are you sure you clear the cache for \"{0}\" Article?", - "SuccessfullyCleared": "Successfully cleared", + "RemoveCacheConfirmationMessage": "Are you sure you remove the cache for \"{0}\" article?", + "SuccessfullyRemoved": "Successfully cleared", "RemoveCache": "Remove Cache" } } \ No newline at end of file From a2743fd3cd953aee3dd75924d47cb6fed8038de4 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 2 Sep 2020 10:03:54 +0800 Subject: [PATCH 195/474] Improved --- .../DataAnnotations/DynamicRangeAttributeAdapter.cs | 10 +++++----- .../Volo/Abp/Validation/DynamicRangeAttribute.cs | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/DynamicRangeAttributeAdapter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/DynamicRangeAttributeAdapter.cs index f084c559ad..d3344c20f2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/DynamicRangeAttributeAdapter.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/DynamicRangeAttributeAdapter.cs @@ -17,8 +17,8 @@ namespace Volo.Abp.AspNetCore.Mvc.DataAnnotations IStringLocalizer stringLocalizer) : base(attribute, stringLocalizer) { - _min = Attribute.Minimum.ToString()?.ToString(CultureInfo.InvariantCulture); - _max = Attribute.Maximum.ToString()?.ToString(CultureInfo.InvariantCulture); + _min = Convert.ToString(Attribute.Minimum,CultureInfo.InvariantCulture); + _max = Convert.ToString(Attribute.Maximum,CultureInfo.InvariantCulture); } public override void AddValidation(ClientModelValidationContext context) @@ -26,9 +26,9 @@ namespace Volo.Abp.AspNetCore.Mvc.DataAnnotations Check.NotNull(context, nameof(context)); MergeAttribute(context.Attributes, "data-val", "true"); - MergeAttribute(context.Attributes, "data-val-length", GetErrorMessage(context)); - MergeAttribute(context.Attributes, "data-val-length-min", _min); - MergeAttribute(context.Attributes, "data-val-length-max", _max); + MergeAttribute(context.Attributes, "data-val-range", GetErrorMessage(context)); + MergeAttribute(context.Attributes, "data-val-range-min", _min); + MergeAttribute(context.Attributes, "data-val-range-max", _max); } public override string GetErrorMessage(ModelValidationContextBase validationContext) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Validation/DynamicRangeAttribute.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Validation/DynamicRangeAttribute.cs index 2836987302..49c91f593e 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Validation/DynamicRangeAttribute.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Validation/DynamicRangeAttribute.cs @@ -27,9 +27,9 @@ namespace Volo.Abp.Validation } /// A type to get the values of the properties + /// The type of the range parameters. Must implement IComparable. /// The name of the public static property for the /// The name of the public static property for the - /// The type of the range parameters. Must implement IComparable. public DynamicRangeAttribute( [NotNull] Type sourceType, [NotNull] Type operandType, From b44247615d252913aeb1d28ab4934cf5cd66c521 Mon Sep 17 00:00:00 2001 From: wakuflair Date: Wed, 2 Sep 2020 11:28:11 +0800 Subject: [PATCH 196/474] pass requestData parameter to inputAction function --- .../datatables/datatables-extensions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js index 9a2052b267..abb10d48a4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js @@ -231,7 +231,7 @@ (function () { datatables.createAjax = function (serverMethod, inputAction) { return function (requestData, callback, settings) { - var input = inputAction ? inputAction() : {}; + var input = inputAction ? inputAction(requestData) : {}; //Paging if (settings.oInit.paging) { From 38827fb699e2537babca607dbaa64bedd4cee6d3 Mon Sep 17 00:00:00 2001 From: Yuhang Ji Date: Wed, 2 Sep 2020 13:06:03 +0800 Subject: [PATCH 197/474] Update framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js Co-authored-by: maliming <6908465+maliming@users.noreply.github.com> --- .../datatables/datatables-extensions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js index abb10d48a4..8d85f6f6d8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js @@ -231,7 +231,7 @@ (function () { datatables.createAjax = function (serverMethod, inputAction) { return function (requestData, callback, settings) { - var input = inputAction ? inputAction(requestData) : {}; + var input = inputAction ? inputAction(requestData, settings) : {}; //Paging if (settings.oInit.paging) { From 3de27bfd43fd3f5f22e1f83d62b7169ceb4a4823 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 2 Sep 2020 10:03:25 +0300 Subject: [PATCH 198/474] Add api-name parameter to the generate-proxy command. --- docs/en/CLI.md | 2 ++ .../Volo/Abp/Cli/Commands/ProxyCommandBase.cs | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/docs/en/CLI.md b/docs/en/CLI.md index e6e7fcccf8..36f3b8e105 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -191,6 +191,7 @@ abp generate-proxy #### Options * `--module` or `-m`: Specifies the name of the backend module you wish to generate proxies for. Default value: `app`. +* `--api-name` or `-a`: The name of the API endpoint defined in the `/src/environments/environment.ts`. Default value: `default`. * `--source` or `-s`: Specifies the Angular project name to resolve the root namespace & API definition URL from. Default value: `defaultProject`. * `--target` or `-t`: Specifies the Angular project name to place generated code in. Default value: `defaultProject`. * `--prompt` or `-p`: Asks the options from the command line prompt (for the unspecified options). @@ -212,6 +213,7 @@ abp remove-proxy #### Options * `--module` or `-m`: Specifies the name of the backend module you wish to remove proxies for. Default value: `app`. +* `--api-name` or `-a`: The name of the API endpoint defined in the `/src/environments/environment.ts`. Default value: `default`. * `--source` or `-s`: Specifies the Angular project name to resolve the root namespace & API definition URL from. Default value: `defaultProject`. * `--target` or `-t`: Specifies the Angular project name to place generated code in. Default value: `defaultProject`. * `--prompt` or `-p`: Asks the options from the command line prompt (for the unspecified options). diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs index 0116c809cb..7898ae7abc 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs @@ -24,6 +24,7 @@ namespace Volo.Abp.Cli.Commands var defaultValue = prompt ? null : "__default"; var module = commandLineArgs.Options.GetOrNull(Options.Module.Short, Options.Module.Long) ?? defaultValue; + var apiName = commandLineArgs.Options.GetOrNull(Options.ApiName.Short, Options.ApiName.Long) ?? defaultValue; var source = commandLineArgs.Options.GetOrNull(Options.Source.Short, Options.Source.Long) ?? defaultValue; var target = commandLineArgs.Options.GetOrNull(Options.Target.Short, Options.Target.Long) ?? defaultValue; @@ -34,6 +35,11 @@ namespace Volo.Abp.Cli.Commands commandBuilder.Append($" --module {module}"); } + if (apiName != null) + { + commandBuilder.Append($" --api-name {apiName}"); + } + if (source != null) { commandBuilder.Append($" --source {source}"); @@ -100,6 +106,7 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine("Options:"); sb.AppendLine(""); sb.AppendLine("-m|--module (default: 'app') The name of the backend module you wish to generate proxies for."); + sb.AppendLine("-a|--api-name (default: 'default') The name of the API endpoint defined in the /src/environments/environment.ts."); sb.AppendLine("-s|--source (default: 'defaultProject') Angular project name to resolve the root namespace & API definition URL from."); sb.AppendLine("-t|--target (default: 'defaultProject') Angular project name to place generated code in."); sb.AppendLine("-p|--prompt Asks the options from the command line prompt (for the missing options)"); @@ -122,6 +129,12 @@ namespace Volo.Abp.Cli.Commands public const string Long = "module"; } + public static class ApiName + { + public const string Short = "a"; + public const string Long = "api-name"; + } + public static class Source { public const string Short = "s"; From 79c18c1d78dcfc5741efc153239febda9aaea05c Mon Sep 17 00:00:00 2001 From: berkansasmaz Date: Wed, 2 Sep 2020 10:25:29 +0300 Subject: [PATCH 199/474] Added new localization item. --- .../AbpIoLocalization/Community/Localization/Resources/en.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json index 5c254e8b64..49882bacbf 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json @@ -82,6 +82,7 @@ "LatestGithubAnnouncements": "Latest Github Announcements", "SeeAllAnnouncements": "See All Announcements", "LatestBlogPost": "Latest Blog Post", - "Edit": "Edit" + "Edit": "Edit", + "ProfileImageChange": "Profile image change" } } From 6ce39f41f7a04f2c9f7820f3dd94ed09c9edc6c7 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 2 Sep 2020 10:30:19 +0300 Subject: [PATCH 200/474] bootstrap-taghelpers.abp.io npm packages updated related https://github.com/volosoft/volo/issues/3186 --- .../wwwroot/libs/abp/luxon/abp.luxon.js | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/luxon/abp.luxon.js diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/luxon/abp.luxon.js b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/luxon/abp.luxon.js new file mode 100644 index 0000000000..b04de7cadf --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/luxon/abp.luxon.js @@ -0,0 +1,46 @@ +var abp = abp || {}; +(function () { + + if (!luxon) { + throw "abp/luxon library requires the luxon library included to the page!"; + } + + /* TIMING *************************************************/ + + abp.timing = abp.timing || {}; + + var setObjectValue = function (obj, property, value) { + if (typeof property === "string") { + property = property.split('.'); + } + + if (property.length > 1) { + var p = property.shift(); + setObjectValue(obj[p], property, value); + } else { + obj[property[0]] = value; + } + } + + var getObjectValue = function (obj, property) { + return property.split('.').reduce((a, v) => a[v], obj) + } + + abp.timing.convertFieldsToIsoDate = function (form, fields) { + for (var field of fields) { + var dateTime = luxon.DateTime + .fromFormat( + getObjectValue(form, field), + abp.localization.currentCulture.dateTimeFormat.shortDatePattern, + {locale: abp.localization.currentCulture.cultureName} + ); + + if (!dateTime.invalid) { + setObjectValue(form, field, dateTime.toFormat("yyyy-MM-dd HH:mm:ss")) + } + } + + return form; + } + +})(jQuery); From 7b09b7e5926db9f80b3f7d14c8b9ac08ad1caf88 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Wed, 2 Sep 2020 15:31:42 +0800 Subject: [PATCH 201/474] Manage Host features. --- .../FeatureManagementPermissions.cs | 16 +++++++ .../FeaturePermissionDefinitionProvider.cs | 28 +++++++++++ .../FeatureManagement/IFeatureAppService.cs | 8 +++- .../FeatureManagement/FeatureAppService.cs | 46 +++++++++++++++++++ .../Localization/Domain/en.json | 7 ++- .../Localization/Domain/tr.json | 7 ++- .../Localization/Domain/zh-Hans.json | 7 ++- .../Localization/Domain/zh-Hant.json | 7 ++- .../FeatureManagement/FeaturesController.cs | 16 ++++++- .../FeatureManagementModal.cshtml.cs | 18 +++++++- .../Localization/Resources/en.json | 7 +-- .../Localization/Resources/tr.json | 3 +- .../Localization/Resources/zh-Hans.json | 3 +- .../Localization/Resources/zh-Hant.json | 3 +- .../TenantManagement/Tenants/Index.cshtml | 9 +++- .../Pages/TenantManagement/Tenants/Index.js | 10 +++- 16 files changed, 173 insertions(+), 22 deletions(-) create mode 100644 modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureManagementPermissions.cs create mode 100644 modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeaturePermissionDefinitionProvider.cs diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureManagementPermissions.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureManagementPermissions.cs new file mode 100644 index 0000000000..86772c0a7b --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureManagementPermissions.cs @@ -0,0 +1,16 @@ +using Volo.Abp.Reflection; + +namespace Volo.Abp.FeatureManagement +{ + public class FeatureManagementPermissions + { + public const string GroupName = "FeatureManagement"; + + public const string ManageHostFeatures = GroupName + ".ManageHostFeatures"; + + public static string[] GetAll() + { + return ReflectionHelper.GetPublicConstantsRecursively(typeof(FeatureManagementPermissions)); + } + } +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeaturePermissionDefinitionProvider.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeaturePermissionDefinitionProvider.cs new file mode 100644 index 0000000000..27e159ee8a --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeaturePermissionDefinitionProvider.cs @@ -0,0 +1,28 @@ +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.FeatureManagement.Localization; +using Volo.Abp.Localization; +using Volo.Abp.MultiTenancy; + +namespace Volo.Abp.FeatureManagement +{ + public class FeaturePermissionDefinitionProvider : PermissionDefinitionProvider + { + public override void Define(IPermissionDefinitionContext context) + { + var featureManagementGroup = context.AddGroup( + FeatureManagementPermissions.GroupName, + L("Permission:FeatureManagement"), + multiTenancySide: MultiTenancySides.Host); + + featureManagementGroup.AddPermission( + FeatureManagementPermissions.ManageHostFeatures, + L("Permission:FeatureManagement.ManageHostFeatures"), + multiTenancySide: MultiTenancySides.Host); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } + } +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs index 2c337f1b2a..a2a87b195b 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs @@ -6,8 +6,12 @@ namespace Volo.Abp.FeatureManagement { public interface IFeatureAppService : IApplicationService { - Task GetAsync([NotNull] string providerName, [NotNull] string providerKey); + Task GetAsync([NotNull] string providerName, [NotNull] string providerKey); - Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdateFeaturesDto input); + Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdateFeaturesDto input); + + Task GetHostAsync(); + + Task UpdateHostAsync(UpdateFeaturesDto input); } } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs index f0c310650d..6969739baa 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.AspNetCore.Authorization; @@ -65,6 +66,51 @@ namespace Volo.Abp.FeatureManagement } } + [Authorize(FeatureManagementPermissions.ManageHostFeatures)] + public async Task GetHostAsync() + { + var featureDefinitions = FeatureDefinitionManager.GetAll().Where(x => x.IsAvailableToHost); + var features = new List(); + + foreach (var featureDefinition in featureDefinitions) + { + var feature = await FeatureManager.GetOrNullWithProviderAsync(featureDefinition.Name, HostFeatureValueProvider.ProviderName, null); + features.Add(new FeatureDto + { + Name = featureDefinition.Name, + DisplayName = featureDefinition.DisplayName?.Localize(StringLocalizerFactory), + ValueType = featureDefinition.ValueType, + Description = featureDefinition.Description?.Localize(StringLocalizerFactory), + ParentName = featureDefinition.Parent?.Name, + Value = feature.Value, + Provider = new FeatureProviderDto + { + Name = feature.Provider?.Name, + Key = feature.Provider?.Key + } + }); + } + + SetFeatureDepth(features, HostFeatureValueProvider.ProviderName, null); + + return new FeatureListDto { Features = features }; + } + + [Authorize(FeatureManagementPermissions.ManageHostFeatures)] + public async Task UpdateHostAsync(UpdateFeaturesDto input) + { + foreach (var feature in input.Features) + { + var featureDefinition = FeatureDefinitionManager.GetOrNull(feature.Name); + if (featureDefinition == null || !featureDefinition.IsAvailableToHost) + { + throw new UserFriendlyException(L["FeatureNotAvailable"]); + } + + await FeatureManager.SetAsync(feature.Name, feature.Value, HostFeatureValueProvider.ProviderName, null); + } + } + protected virtual void SetFeatureDepth(List features, string providerName, string providerKey, FeatureDto parentFeature = null, int depth = 0) { diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/en.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/en.json index e5a2406aaf..6e17e8fc48 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/en.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/en.json @@ -2,6 +2,9 @@ "culture": "en", "texts": { "Features": "Features", - "NoFeatureFoundMessage": "There isn't any available feature." + "NoFeatureFoundMessage": "There isn't any available feature.", + "FeatureNotAvailable": "Feature not available.", + "Permission:FeatureManagement": "Feature management", + "Permission:FeatureManagement.ManageHostFeatures": "Manage Host features" } -} \ No newline at end of file +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json index b566f654ca..de5ad20624 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json @@ -2,6 +2,9 @@ "culture": "tr", "texts": { "Features": "Özellikler", - "NoFeatureFoundMessage": "Hiç özellik yok." + "NoFeatureFoundMessage": "Hiç özellik yok.", + "FeatureNotAvailable": "özelliği mevcut değil.", + "Permission:FeatureManagement": "Özellik yönetimi", + "Permission:FeatureManagement.ManageHostFeatures": "Yönetilen Ana Bilgisayar özellikleri" } -} \ No newline at end of file +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json index 69b8ca89b1..2ecdb3997b 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json @@ -2,6 +2,9 @@ "culture": "zh-Hans", "texts": { "Features": "功能", - "NoFeatureFoundMessage": "没有可用的功能." + "NoFeatureFoundMessage": "没有可用的功能.", + "FeatureNotAvailable": "功能不可用.", + "Permission:FeatureManagement": "特性管理", + "Permission:FeatureManagement.ManageHostFeatures": "管理Host特性" } -} \ No newline at end of file +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hant.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hant.json index bc4dbf268f..6a8ccd099b 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hant.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hant.json @@ -2,6 +2,9 @@ "culture": "zh-Hant", "texts": { "Features": "功能", - "NoFeatureFoundMessage": "沒有可用的功能." + "NoFeatureFoundMessage": "沒有可用的功能.", + "FeatureNotAvailable": "功能不可用.", + "Permission:FeatureManagement": "功能管理", + "Permission:FeatureManagement.ManageHostFeatures": "管理Host功能" } -} \ No newline at end of file +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs index 0ae78ed03f..a5c9c1c819 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs @@ -27,5 +27,19 @@ namespace Volo.Abp.FeatureManagement { return FeatureAppService.UpdateAsync(providerName, providerKey, input); } + + [HttpGet] + [Route("host")] + public virtual Task GetHostAsync() + { + return FeatureAppService.GetHostAsync(); + } + + [HttpPut] + [Route("host")] + public virtual Task UpdateHostAsync(UpdateFeaturesDto input) + { + return FeatureAppService.UpdateHostAsync(input); + } } -} \ No newline at end of file +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs index e46d686e69..0fd5d756f7 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs @@ -37,7 +37,14 @@ namespace Volo.Abp.FeatureManagement.Web.Pages.FeatureManagement public virtual async Task OnGetAsync() { - FeatureListDto = await FeatureAppService.GetAsync(ProviderName, ProviderKey); + if (ProviderName == HostFeatureValueProvider.ProviderName) + { + FeatureListDto = await FeatureAppService.GetHostAsync(); + } + else + { + FeatureListDto = await FeatureAppService.GetAsync(ProviderName, ProviderKey); + } } public virtual async Task OnPostAsync() @@ -51,7 +58,14 @@ namespace Volo.Abp.FeatureManagement.Web.Pages.FeatureManagement }).ToList() }; - await FeatureAppService.UpdateAsync(ProviderName, ProviderKey, features); + if (ProviderName == HostFeatureValueProvider.ProviderName) + { + await FeatureAppService.UpdateHostAsync(features); + } + else + { + await FeatureAppService.UpdateAsync(ProviderName, ProviderKey, features); + } return NoContent(); } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json index d6d1d7c155..ba4109c392 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json @@ -10,13 +10,14 @@ "ConnectionStrings": "Connection Strings", "DisplayName:DefaultConnectionString": "Default Connection String", "DisplayName:UseSharedDatabase": "Use the Shared Database", + "ManageHostFeatures": "Manage Host features", "Permission:TenantManagement": "Tenant management", "Permission:Create": "Create", "Permission:Edit": "Edit", "Permission:Delete": "Delete", "Permission:ManageConnectionStrings": "Manage connection strings", "Permission:ManageFeatures": "Manage features", - "DisplayName:AdminEmailAddress": "Admin Email Address", - "DisplayName:AdminPassword": "Admin Password" + "DisplayName:AdminEmailAddress": "Admin Email Address", + "DisplayName:AdminPassword": "Admin Password" } -} \ No newline at end of file +} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json index 72b570f3f9..7315cccc3f 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json @@ -10,6 +10,7 @@ "ConnectionStrings": "Bağlantı cümlesi", "DisplayName:DefaultConnectionString": "Varsayılan bağlantı cümlesi", "DisplayName:UseSharedDatabase": "Paylaşılan veritabanını kullan", + "ManageHostFeatures": "Toplantı Sahibi özelliklerini yönetin", "Permission:TenantManagement": "Müşteri yönetimi", "Permission:Create": "Oluşturma", "Permission:Edit": "Düzenleme", @@ -19,4 +20,4 @@ "DisplayName:AdminEmailAddress": "Admin Eposta Adresi", "DisplayName:AdminPassword": "Admin Şifresi" } -} \ No newline at end of file +} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json index b60c68e2e0..f85f6cf638 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json @@ -10,6 +10,7 @@ "ConnectionStrings": "连接字符串", "DisplayName:DefaultConnectionString": "默认连接字符串", "DisplayName:UseSharedDatabase": "使用共享数据库", + "ManageHostFeatures": "管理Host特性", "Permission:TenantManagement": "租户管理", "Permission:Create": "创建", "Permission:Edit": "编辑", @@ -17,4 +18,4 @@ "Permission:ManageConnectionStrings": "管理连接字符串", "Permission:ManageFeatures": "管理功能" } -} \ No newline at end of file +} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hant.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hant.json index ea8be8ae0e..6950a1ca00 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hant.json +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hant.json @@ -10,13 +10,14 @@ "ConnectionStrings": "資料庫連線字串", "DisplayName:DefaultConnectionString": "預設資料庫連線字串", "DisplayName:UseSharedDatabase": "使用共用資料庫", + "ManageHostFeatures": "管理Host功能", "Permission:TenantManagement": "租戶管理", "Permission:Create": "新增", "Permission:Edit": "編輯", "Permission:Delete": "刪除", "Permission:ManageConnectionStrings": "管理資料庫連線字串", "Permission:ManageFeatures": "管理功能", - "DisplayName:AdminEmailAddress": "管理者信箱", + "DisplayName:AdminEmailAddress": "管理者信箱", "DisplayName:AdminPassword": "管理者密碼" } } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.cshtml b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.cshtml index eabc75c786..bb972b02d8 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.cshtml +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.cshtml @@ -2,6 +2,7 @@ @using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.AspNetCore.Mvc.UI.Layout +@using Volo.Abp.FeatureManagement @using Volo.Abp.TenantManagement @using Volo.Abp.TenantManagement.Localization @using Volo.Abp.TenantManagement.Web.Navigation @@ -29,9 +30,13 @@ @L["Tenants"] + @if (await Authorization.IsGrantedAsync(FeatureManagementPermissions.ManageHostFeatures)) + { + + } @if (await Authorization.IsGrantedAsync(TenantManagementPermissions.Tenants.Create)) { - + } @@ -39,4 +44,4 @@ - \ No newline at end of file + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js index 4b19d0bbb7..828f163908 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js @@ -100,7 +100,7 @@ }, 0 //adds as the first contributor ); - + $(function () { var _$wrapper = $('#TenantsWrapper'); @@ -128,5 +128,13 @@ e.preventDefault(); _createModal.open(); }); + + _$wrapper.find('button[name=ManageHostFeatures]').click(function (e) { + e.preventDefault(); + _featuresModal.open({ + providerName: 'H', + providerKey: 'H' + }); + }); }); })(); From baa1206ce2351ee27b8dd7f56f825ee9f1d6e38d Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Wed, 2 Sep 2020 10:54:11 +0300 Subject: [PATCH 202/474] feat: update proxy command schema --- .../schematics/src/commands/api/index.ts | 4 ++-- .../src/commands/proxy-add/schema.json | 16 +++++++++++----- .../src/commands/proxy-refresh/schema.json | 16 +++++++++++----- .../src/commands/proxy-remove/schema.json | 16 +++++++++++----- .../src/models/generate-proxy-schema.ts | 7 +++++++ 5 files changed, 42 insertions(+), 17 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/index.ts b/npm/ng-packs/packages/schematics/src/commands/api/index.ts index 646f2170ea..7e73b1285f 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/api/index.ts @@ -10,7 +10,7 @@ import { url, } from '@angular-devkit/schematics'; import { Exception } from '../../enums'; -import { GenerateProxySchema, ServiceGeneratorParams } from '../../models'; +import { GenerateApiSchema, ServiceGeneratorParams } from '../../models'; import { applyWithOverwrite, buildDefaultPath, @@ -31,7 +31,7 @@ import { } from '../../utils'; import * as cases from '../../utils/text'; -export default function(schema: GenerateProxySchema) { +export default function(schema: GenerateApiSchema) { const params = removeDefaultPlaceholders(schema); const moduleName = strings.camelize(params.module || 'app'); diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-add/schema.json b/npm/ng-packs/packages/schematics/src/commands/proxy-add/schema.json index f9e762c597..c817882730 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-add/schema.json +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-add/schema.json @@ -5,7 +5,6 @@ "type": "object", "properties": { "module": { - "alias": "m", "description": "Backend module name", "type": "string", "$default": { @@ -14,23 +13,30 @@ }, "x-prompt": "Please enter backend module name. (default: \"app\")" }, + "api-name": { + "description": "Backend api name, a.k.a. remoteServiceName", + "type": "string", + "$default": { + "$source": "argv", + "index": 1 + }, + "x-prompt": "Please enter backend api name, a.k.a. remoteServiceName. (default: \"default\")" + }, "source": { - "alias": "s", "description": "Source Angular project for API definition URL & root namespace resolution", "type": "string", "$default": { "$source": "argv", - "index": 1 + "index": 2 }, "x-prompt": "Plese enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" }, "target": { - "alias": "t", "description": "Target Angular project to place the generated code", "type": "string", "$default": { "$source": "argv", - "index": 2 + "index": 3 }, "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" } diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json index f9e762c597..c817882730 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json @@ -5,7 +5,6 @@ "type": "object", "properties": { "module": { - "alias": "m", "description": "Backend module name", "type": "string", "$default": { @@ -14,23 +13,30 @@ }, "x-prompt": "Please enter backend module name. (default: \"app\")" }, + "api-name": { + "description": "Backend api name, a.k.a. remoteServiceName", + "type": "string", + "$default": { + "$source": "argv", + "index": 1 + }, + "x-prompt": "Please enter backend api name, a.k.a. remoteServiceName. (default: \"default\")" + }, "source": { - "alias": "s", "description": "Source Angular project for API definition URL & root namespace resolution", "type": "string", "$default": { "$source": "argv", - "index": 1 + "index": 2 }, "x-prompt": "Plese enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" }, "target": { - "alias": "t", "description": "Target Angular project to place the generated code", "type": "string", "$default": { "$source": "argv", - "index": 2 + "index": 3 }, "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" } diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json index f9e762c597..c817882730 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json @@ -5,7 +5,6 @@ "type": "object", "properties": { "module": { - "alias": "m", "description": "Backend module name", "type": "string", "$default": { @@ -14,23 +13,30 @@ }, "x-prompt": "Please enter backend module name. (default: \"app\")" }, + "api-name": { + "description": "Backend api name, a.k.a. remoteServiceName", + "type": "string", + "$default": { + "$source": "argv", + "index": 1 + }, + "x-prompt": "Please enter backend api name, a.k.a. remoteServiceName. (default: \"default\")" + }, "source": { - "alias": "s", "description": "Source Angular project for API definition URL & root namespace resolution", "type": "string", "$default": { "$source": "argv", - "index": 1 + "index": 2 }, "x-prompt": "Plese enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" }, "target": { - "alias": "t", "description": "Target Angular project to place the generated code", "type": "string", "$default": { "$source": "argv", - "index": 2 + "index": 3 }, "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" } diff --git a/npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts b/npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts index 59c4e6adab..4e58f355b1 100644 --- a/npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts +++ b/npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts @@ -4,6 +4,11 @@ export interface GenerateProxySchema { */ module?: string; + /** + * Backend api name, a.k.a. remoteServiceName + */ + ['api-name']?: string; + /** * Source Angular project for API definition URL & root namespace resolution */ @@ -14,3 +19,5 @@ export interface GenerateProxySchema { */ target?: string; } + +export type GenerateApiSchema = Omit; From 65b170e6ef5156b2558241b214ee8af0a6b607eb Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Wed, 2 Sep 2020 11:05:08 +0300 Subject: [PATCH 203/474] revert: use same schema in api command --- npm/ng-packs/packages/schematics/src/commands/api/index.ts | 4 ++-- .../packages/schematics/src/models/generate-proxy-schema.ts | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/index.ts b/npm/ng-packs/packages/schematics/src/commands/api/index.ts index 7e73b1285f..646f2170ea 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/api/index.ts @@ -10,7 +10,7 @@ import { url, } from '@angular-devkit/schematics'; import { Exception } from '../../enums'; -import { GenerateApiSchema, ServiceGeneratorParams } from '../../models'; +import { GenerateProxySchema, ServiceGeneratorParams } from '../../models'; import { applyWithOverwrite, buildDefaultPath, @@ -31,7 +31,7 @@ import { } from '../../utils'; import * as cases from '../../utils/text'; -export default function(schema: GenerateApiSchema) { +export default function(schema: GenerateProxySchema) { const params = removeDefaultPlaceholders(schema); const moduleName = strings.camelize(params.module || 'app'); diff --git a/npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts b/npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts index 4e58f355b1..5e305923c4 100644 --- a/npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts +++ b/npm/ng-packs/packages/schematics/src/models/generate-proxy-schema.ts @@ -19,5 +19,3 @@ export interface GenerateProxySchema { */ target?: string; } - -export type GenerateApiSchema = Omit; From d547b0b616db143167082d37bbf2273c53a11f5a Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Wed, 2 Sep 2020 11:05:46 +0300 Subject: [PATCH 204/474] feat: add api-name parameter to api schema.json --- .../schematics/src/commands/api/schema.json | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/schema.json b/npm/ng-packs/packages/schematics/src/commands/api/schema.json index 4411418c34..db58ed73ce 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/schema.json +++ b/npm/ng-packs/packages/schematics/src/commands/api/schema.json @@ -5,34 +5,40 @@ "type": "object", "properties": { "module": { - "alias": "m", - "description": "Backend module to generate code for", + "description": "Backend module name", "type": "string", "$default": { "$source": "argv", "index": 0 }, - "x-prompt": "Please enter name of the backend module you wish to generate proxies for. (default: \"app\")" + "x-prompt": "Please enter backend module name. (default: \"app\")" }, - "source": { - "alias": "s", - "description": "Angular project to resolve root namespace & API definition URL from", + "api-name": { + "description": "Backend api name, a.k.a. remoteServiceName", "type": "string", "$default": { "$source": "argv", "index": 1 }, - "x-prompt": "Plese enter Angular project name to resolve root namespace & API definition URL from. (default: workspace \"defaultProject\")" + "x-prompt": "Please enter backend api name, a.k.a. remoteServiceName. (default: \"default\")" }, - "target": { - "alias": "t", - "description": "Angular project to generate code in", + "source": { + "description": "Source Angular project for API definition URL & root namespace resolution", "type": "string", "$default": { "$source": "argv", "index": 2 }, - "x-prompt": "Plese enter Angular project name to place generated code in. (default: workspace \"defaultProject\")" + "x-prompt": "Plese enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" + }, + "target": { + "description": "Target Angular project to place the generated code", + "type": "string", + "$default": { + "$source": "argv", + "index": 3 + }, + "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" } }, "required": [] From 932e0f7f2b14bc1ff1648b8c632a85f0ff65fbef Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Wed, 2 Sep 2020 11:20:57 +0300 Subject: [PATCH 205/474] fix: use api-name parameter to resolve remote service --- .../schematics/src/commands/api/index.ts | 7 +-- .../schematics/src/enums/exception.ts | 4 +- .../packages/schematics/src/utils/source.ts | 52 +++++++++---------- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/index.ts b/npm/ng-packs/packages/schematics/src/commands/api/index.ts index 646f2170ea..5254f816b6 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/api/index.ts @@ -19,10 +19,10 @@ import { createImportRefToEnumMapper, createProxyConfigReader, createProxyConfigWriterCreator, + createRootNamespaceGetter, EnumGeneratorParams, generateProxyConfigJson, getEnumNamesFromImports, - getRootNamespace, interpolate, ModelGeneratorParams, removeDefaultPlaceholders, @@ -37,9 +37,10 @@ export default function(schema: GenerateProxySchema) { return chain([ async (tree: Tree, _context: SchematicContext) => { - const source = await resolveProject(tree, params.source!); + const getRootNamespace = createRootNamespaceGetter(params); + const solution = await getRootNamespace(tree); + const target = await resolveProject(tree, params.target!); - const solution = getRootNamespace(tree, source, moduleName); const targetPath = buildDefaultPath(target.definition); const readProxyConfig = createProxyConfigReader(targetPath); const createProxyConfigWriter = createProxyConfigWriterCreator(targetPath); diff --git a/npm/ng-packs/packages/schematics/src/enums/exception.ts b/npm/ng-packs/packages/schematics/src/enums/exception.ts index 98c92493d6..b267ad6674 100644 --- a/npm/ng-packs/packages/schematics/src/enums/exception.ts +++ b/npm/ng-packs/packages/schematics/src/enums/exception.ts @@ -11,6 +11,6 @@ export const enum Exception { NoTypeDefinition = '[Type Definition Not Found] There is no type definition for "{0}".', NoWorkspace = '[Workspace Not Found] Make sure you are running schematics at the root directory of your workspace and it has an angular.json file.', NoEnvironment = '[Environment Not Found] An environment file cannot be located in "{0}" project.', - NoApiUrl = '[API URL Not Found] Cannot resolve API URL for "{1}" module from "{0}" project.', - NoRootNamespace = '[Root Namespace Not Found] Cannot resolve root namespace for "{1}" module from "{0}" project.', + NoApiUrl = '[API URL Not Found] Cannot resolve API URL for "{1}" remote service name from "{0}" project.', + NoRootNamespace = '[Root Namespace Not Found] Cannot resolve root namespace for "{1}" api from "{0}" project.', } diff --git a/npm/ng-packs/packages/schematics/src/utils/source.ts b/npm/ng-packs/packages/schematics/src/utils/source.ts index d555e2ec1f..e1e965744f 100644 --- a/npm/ng-packs/packages/schematics/src/utils/source.ts +++ b/npm/ng-packs/packages/schematics/src/utils/source.ts @@ -1,4 +1,3 @@ -import { strings } from '@angular-devkit/core'; import { SchematicsException, Tree } from '@angular-devkit/schematics'; import got from 'got'; import { @@ -15,11 +14,11 @@ import { interpolate } from './common'; import { readEnvironment, resolveProject } from './workspace'; export function createApiDefinitionGetter(params: GenerateProxySchema) { - const moduleName = strings.camelize(params.module || 'app'); + const apiName = params['api-name'] || 'default'; return async (host: Tree) => { const source = await resolveProject(host, params.source!); - const sourceUrl = getSourceUrl(host, source, moduleName); + const sourceUrl = getSourceUrl(host, source, apiName); return await getApiDefinition(sourceUrl); }; } @@ -36,7 +35,7 @@ async function getApiDefinition(sourceUrl: string) { })); } catch ({ response }) { // handle redirects - if (response.statusCode >= 400 || !response?.body) + if (!response?.body || response.statusCode >= 400) throw new SchematicsException(Exception.NoApi); body = response.body; @@ -45,48 +44,49 @@ async function getApiDefinition(sourceUrl: string) { return body; } -export function getRootNamespace(tree: Tree, project: Project, moduleName: string) { - const environmentExpr = readEnvironment(tree, project.definition); +export function createRootNamespaceGetter(params: GenerateProxySchema) { + const apiName = params['api-name'] || 'default'; - if (!environmentExpr) - throw new SchematicsException(interpolate(Exception.NoEnvironment, project.name)); + return async (tree: Tree) => { + const project = await resolveProject(tree, params.source!); + const environmentExpr = readEnvironment(tree, project.definition); - let assignment = getAssignedPropertyFromObjectliteral(environmentExpr, [ - 'apis', - moduleName, - 'rootNamespace', - ]); + if (!environmentExpr) + throw new SchematicsException(interpolate(Exception.NoEnvironment, project.name)); - if (!assignment) - assignment = getAssignedPropertyFromObjectliteral(environmentExpr, [ + let assignment = getAssignedPropertyFromObjectliteral(environmentExpr, [ 'apis', - 'default', + apiName, 'rootNamespace', ]); - if (!assignment) - throw new SchematicsException(interpolate(Exception.NoRootNamespace, project.name, moduleName)); + if (!assignment) + assignment = getAssignedPropertyFromObjectliteral(environmentExpr, [ + 'apis', + 'default', + 'rootNamespace', + ]); - return assignment.replace(/[`'"]/g, ''); + if (!assignment) + throw new SchematicsException(interpolate(Exception.NoRootNamespace, project.name, apiName)); + + return assignment.replace(/[`'"]/g, ''); + }; } -export function getSourceUrl(tree: Tree, project: Project, moduleName: string) { +export function getSourceUrl(tree: Tree, project: Project, apiName: string) { const environmentExpr = readEnvironment(tree, project.definition); if (!environmentExpr) throw new SchematicsException(interpolate(Exception.NoEnvironment, project.name)); - let assignment = getAssignedPropertyFromObjectliteral(environmentExpr, [ - 'apis', - moduleName, - 'url', - ]); + let assignment = getAssignedPropertyFromObjectliteral(environmentExpr, ['apis', apiName, 'url']); if (!assignment) assignment = getAssignedPropertyFromObjectliteral(environmentExpr, ['apis', 'default', 'url']); if (!assignment) - throw new SchematicsException(interpolate(Exception.NoApiUrl, project.name, moduleName)); + throw new SchematicsException(interpolate(Exception.NoApiUrl, project.name, apiName)); return assignment.replace(/[`'"]/g, ''); } From e9b85b45f9e5c48b9cdefb8ee2f407fd1499c637 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 2 Sep 2020 14:48:10 +0300 Subject: [PATCH 206/474] fix(core): resolve routes sorting problem #5267 --- npm/ng-packs/packages/core/src/lib/services/routes.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/services/routes.service.ts b/npm/ng-packs/packages/core/src/lib/services/routes.service.ts index c2b90a91c7..16fc4c238b 100644 --- a/npm/ng-packs/packages/core/src/lib/services/routes.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/routes.service.ts @@ -133,8 +133,8 @@ export abstract class AbstractNavTreeService extends Abstract readonly parentId = 'parentName'; readonly hide = (item: T) => item.invisible || !this.isGranted(item); readonly sort = (a: T, b: T) => { - if (!a.order) return 1; - if (!b.order) return -1; + if (!Number.isInteger(a.order)) return 1; + if (!Number.isInteger(b.order)) return -1; return a.order - b.order; }; From f5e51249e89e406307bf8905855bde403153b181 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 2 Sep 2020 14:48:22 +0300 Subject: [PATCH 207/474] refactor: add an undefined control --- .../theme-basic/src/lib/components/routes/routes.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.ts b/npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.ts index 542d06e9a4..de1b6199ee 100644 --- a/npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.ts +++ b/npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.ts @@ -13,6 +13,6 @@ export class RoutesComponent { constructor(public readonly routes: RoutesService) {} isDropdown(node: TreeNode) { - return !node.isLeaf || this.routes.hasChildren(node.name); + return !node?.isLeaf || this.routes.hasChildren(node.name); } } From e8d0f161214ff70fe5588a1cee70dc8274203c52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 2 Sep 2020 14:50:46 +0300 Subject: [PATCH 208/474] Fix ProfileImageChange text --- .../Community/Localization/Resources/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json index 49882bacbf..c74a26689f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json @@ -79,10 +79,10 @@ "HasNoPublishedArticlesYet": "has no published articles yet", "Author": "Author", "MyAccount": "My account", - "LatestGithubAnnouncements": "Latest Github Announcements", + "LatestGithubAnnouncements": "Latest Github Announcements", "SeeAllAnnouncements": "See All Announcements", "LatestBlogPost": "Latest Blog Post", "Edit": "Edit", - "ProfileImageChange": "Profile image change" + "ProfileImageChange": "Change the profile image" } } From 681ac1b519db4c70acd9972050d0765696b81b85 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 2 Sep 2020 14:52:26 +0300 Subject: [PATCH 209/474] chore: add @abp/ng.schematics as a devDependency --- npm/ng-packs/package.json | 1 + npm/ng-packs/yarn.lock | 141 +++++++++++++++++++++++--------------- 2 files changed, 87 insertions(+), 55 deletions(-) diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 26ea07313c..7c1514e29f 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -30,6 +30,7 @@ "@abp/ng.feature-management": "~3.1.0-rc.4", "@abp/ng.identity": "~3.1.0-rc.4", "@abp/ng.permission-management": "~3.1.0-rc.4", + "@abp/ng.schematics": "~3.1.0-rc.4", "@abp/ng.setting-management": "~3.1.0-rc.4", "@abp/ng.tenant-management": "~3.1.0-rc.4", "@abp/ng.theme.basic": "~3.1.0-rc.4", diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index 2a9cd4b404..5739a50274 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -2,20 +2,20 @@ # yarn lockfile v1 -"@abp/ng.account@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-3.1.0-rc.3.tgz#098a559e83d505b51f54343d6cd5be3e70b11869" - integrity sha512-hFFWa0tBPlpVtLuZo7MRc+s0ODHEtJ8eQJc8H+TyFqTItk158XOjgHdKX0RYqt+Tn+0Iy/TJ1vKfupzuDqUBkg== +"@abp/ng.account@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-3.1.0-rc.4.tgz#af4039b286fe44929327e93dba9991cb273d5336" + integrity sha512-wYkSz1HlPwMPUMAfCe404LCb15ZDEV5GfNIZuHeyiNtC/AcvqZEbBBpM2xMZ3uMcvxH/72IrLFBpxemCY+6euw== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.3" + "@abp/ng.theme.shared" "~3.1.0-rc.4" tslib "^2.0.0" -"@abp/ng.core@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-3.1.0-rc.3.tgz#aefa4a2f7b418087f7a3c6c6faa9a936ce9011cb" - integrity sha512-zU2jx9gTCwz26OW/umxGqSBluq1vnazYHqunnGFvH7wLcAoKHikpQv4kx4tR1dMn+7BZ1/MFwCYVxDYLtxWxdw== +"@abp/ng.core@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-3.1.0-rc.4.tgz#cc0d237de4de5eac6006d1cdd2bb4014a7ecebb8" + integrity sha512-H/kC8dLvbdHS/cEh2GHWw3vjjN2R5P0eAz+2bhC18kW/EQo6EgNckTbhgvYre9FtJPHbT2Prs1v1CWe1lB5Rnw== dependencies: - "@abp/utils" "^3.1.0-rc.2" + "@abp/utils" "^3.1.0-rc.3" "@angular/localize" "~10.0.10" "@ngxs/router-plugin" "^3.6.2" "@ngxs/storage-plugin" "^3.6.2" @@ -27,62 +27,73 @@ ts-toolbelt "6.15.4" tslib "^2.0.0" -"@abp/ng.feature-management@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-3.1.0-rc.3.tgz#ed8a8e69d2ee69d07341c33e44e504b0638ad673" - integrity sha512-KGykQd3AclkLTyQuSpVm3R6U2YD0pptF1A/rrdeA7BT5kQ3d/JgXboEkVrCyRnT4dTKWVjiweoXz1AaKj7HpzA== +"@abp/ng.feature-management@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-3.1.0-rc.4.tgz#d9a85fbe8a780664c9474df9b0d2fe6874530781" + integrity sha512-y3xUFJSHmBCBivE6YRgUgA/XK/jIX1h+JdIsVwRQg9VoKq4Ba7xSF1uffYkbiZhELv9lUZ4t+r100nL64yj/kQ== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.3" + "@abp/ng.theme.shared" "~3.1.0-rc.4" tslib "^2.0.0" -"@abp/ng.identity@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-3.1.0-rc.3.tgz#d32730f1968224f3d0e48bb44efafa6d01dfb330" - integrity sha512-YkPN4oYRhQ70N+LL890Yt99SIs874nn4MNWZbfm3JRlndT9gsvDLAZwqDtVbsqKanz7ymT4yCoa5t7Sakts2Tw== +"@abp/ng.identity@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-3.1.0-rc.4.tgz#6f04d8231fce78ee3a2de387e81aade5ac3fa9a3" + integrity sha512-mRI6uZ0PlbDhNNX1BGYECN5fDPyENnpudbo09SMSVGK99BSa+pJAvOMLWQTp8WJuo/C8kl/Mz17cAhp/EirgYQ== dependencies: - "@abp/ng.permission-management" "~3.1.0-rc.3" - "@abp/ng.theme.shared" "~3.1.0-rc.3" + "@abp/ng.permission-management" "~3.1.0-rc.4" + "@abp/ng.theme.shared" "~3.1.0-rc.4" tslib "^2.0.0" -"@abp/ng.permission-management@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-3.1.0-rc.3.tgz#211c5ff854a62c924307dfbb8bdbb501479f1a86" - integrity sha512-nir4rYN2cWhwNPzLVT4TMhpVDkVJQJpp6B13YwjQ7O0B8rty/ongO343YcvbmkwwLqK9pBEjYTtXbuOnSLnvew== +"@abp/ng.permission-management@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-3.1.0-rc.4.tgz#b0415fc62ecfc03b57810e6a82fadeec887b64e4" + integrity sha512-/U5ehBn1dQYGcy++/EtciUlz69+WZ+ZXbxJ3MF7cNNy7BwZCyjKc7my2Uh2HrP+Ce3q1h11obX15KpB7uCggCg== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.3" + "@abp/ng.theme.shared" "~3.1.0-rc.4" tslib "^2.0.0" -"@abp/ng.setting-management@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-3.1.0-rc.3.tgz#539226e81f1d15a294ca7cdbb0b40cf94bc3d073" - integrity sha512-kkumvT81zUUy44XLxX9qII2DXFoPl9gzXmJlAeCoh2cCofU5Ja4AxNkunZfzTTqLm6y/UDPjkzgYBa4KMOspdQ== +"@abp/ng.schematics@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-3.1.0-rc.4.tgz#9f711466db0d46eb08ff14a19e930dbd7cb6aa59" + integrity sha512-nn94E2JB0N5pcDNCh1JtyHV/ZhAnG+d+wKGzhZSOFEWZvPOREQs1OI4aKrBF94DYWy8yWxKZtPWEMwkmX+yXMg== + dependencies: + "@angular-devkit/core" "~10.0.3" + "@angular-devkit/schematics" "~10.0.3" + got "^11.5.2" + jsonc-parser "^2.3.0" + typescript "~3.9.2" + +"@abp/ng.setting-management@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-3.1.0-rc.4.tgz#777b8487e6b6811c28375bf695d6db96ca59cc28" + integrity sha512-Mwx5nILDdqT7aEktv0gK1wxhtNuD9W67dlIcunwD/YD60hwAnRX3yFeg1aDHVF70EykY9UMerBGAG3J2Loclhg== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.3" + "@abp/ng.theme.shared" "~3.1.0-rc.4" tslib "^2.0.0" -"@abp/ng.tenant-management@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-3.1.0-rc.3.tgz#1678bae916387c99baa371d35a692197f719f278" - integrity sha512-icvhvzSYjLH8dlrKL0HBtACkA0Q5JozILgYGEnUtPLuO4xpU3oiGGBA8AxB5gSkQ0C3/QiPRawQ9mhiTcnYoAQ== +"@abp/ng.tenant-management@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-3.1.0-rc.4.tgz#c8ad9a927045599bec309408b3cdd741935fac7f" + integrity sha512-DK5J0FjA9fR1crvaNa6o5WPjS8/8cDij65GHJb1RzXm8ZfpNoXlcZEUv3MXBJt4zIU3l5ZTDSH3skmNQaobosg== dependencies: - "@abp/ng.feature-management" "~3.1.0-rc.3" - "@abp/ng.theme.shared" "~3.1.0-rc.3" + "@abp/ng.feature-management" "~3.1.0-rc.4" + "@abp/ng.theme.shared" "~3.1.0-rc.4" tslib "^2.0.0" -"@abp/ng.theme.basic@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-3.1.0-rc.3.tgz#25654f6c55245645a4495c314cf575d159dd98d1" - integrity sha512-ibfycWkE+7CnT/IafgoC89/w/kojp0ylw00kAm6toXTgRVE4eI2KmO1Wdc6Qyu5n/4SF3UnbH546odgUsjHvGA== +"@abp/ng.theme.basic@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-3.1.0-rc.4.tgz#36a627ab520046f5978ec60ae9c03b723a879b66" + integrity sha512-SJmc1KrLc3K1Njf+0UUXHB/ABdVbzIzYKT8GbCf0E/Nw6KgVufIpB+g92rqxkeqG9jKEASAnSomYRJeMJJ3bVQ== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.3" + "@abp/ng.theme.shared" "~3.1.0-rc.4" tslib "^2.0.0" -"@abp/ng.theme.shared@~3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-3.1.0-rc.3.tgz#2fe6821f5aff7066d2a0a74296aeef205506d553" - integrity sha512-Z7QbckMhc1j00iVYDUBqeCliTs0I1TxW1c6pgYdNXHKB4Djp9BBxw517Elj14zIhCQbnHUIcXDu2ZUTdx2hbMg== +"@abp/ng.theme.shared@~3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-3.1.0-rc.4.tgz#516a9d65229b1ddd1891edad8c1bd45ca3729228" + integrity sha512-wfMZSO0fwKDphAq8fWwvd7gxybY4LzQJNZdWYbBg12ePzXzRYCxxDg4xLzUetFYZQS+xSA9xoyGuCR8WT2OQEg== dependencies: - "@abp/ng.core" "~3.1.0-rc.3" + "@abp/ng.core" "~3.1.0-rc.4" "@fortawesome/fontawesome-free" "^5.14.0" "@ng-bootstrap/ng-bootstrap" "^7.0.0" "@ngx-validate/core" "^0.0.11" @@ -91,13 +102,6 @@ chart.js "^2.9.3" tslib "^2.0.0" -"@abp/utils@^3.1.0-rc.2": - version "3.1.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.2.tgz#c3774246f01f4b032b2d229457c3bd93f7d14048" - integrity sha512-lgHy/OAEBau2Qyr0mZUjOWU8uBFBFIBvGnUKgSqKRxTqf5GyNvkKO8GPpqGSmyIsYUfW2UUsRhaLW7K85T9CZw== - dependencies: - just-compare "^1.3.0" - "@abp/utils@^3.1.0-rc.3": version "3.1.0-rc.3" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" @@ -105,6 +109,13 @@ dependencies: just-compare "^1.3.0" +"@abp/utils@^3.1.0-rc.4": + version "3.1.0-rc.4" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" + integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== + dependencies: + just-compare "^1.3.0" + "@angular-builders/jest@^10.0.0": version "10.0.0" resolved "https://registry.yarnpkg.com/@angular-builders/jest/-/jest-10.0.0.tgz#1d4f80c15544a2a13de9e335b0d2d8f076026388" @@ -232,6 +243,17 @@ rxjs "6.5.5" source-map "0.7.3" +"@angular-devkit/core@10.0.8", "@angular-devkit/core@~10.0.3": + version "10.0.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.8.tgz#ca4ea9f464cfa7ff17e2dab3bcd4c59da1ea450d" + integrity sha512-d9S8VQuqaYg0c/Y2kl/MtICtZ+UKlH5bLm8y2fb2WfSL4A5XIqMGdEVxzFSiR0b1Bnt4NAoQMcBec1blHAqMSQ== + dependencies: + ajv "6.12.3" + fast-json-stable-stringify "2.1.0" + magic-string "0.25.7" + rxjs "6.5.5" + source-map "0.7.3" + "@angular-devkit/core@8.3.29", "@angular-devkit/core@^8.0.3": version "8.3.29" resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-8.3.29.tgz#3477edd6458653f83e6d78684b100c1bef81382f" @@ -260,6 +282,15 @@ "@angular-devkit/core" "8.3.29" rxjs "6.4.0" +"@angular-devkit/schematics@~10.0.3": + version "10.0.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.8.tgz#6064d6323a1c9abc195e67ae4c88e373ce36b5e2" + integrity sha512-p2PjvrExuzOe/azyOEcBeIgwZIk4D6VeLkJf/KVjhXOVu13pjIXHX7/qWl+IYnbtj3NZGHqXM5Cr8nxsJNIMpw== + dependencies: + "@angular-devkit/core" "10.0.8" + ora "4.0.4" + rxjs "6.5.5" + "@angular/animations@~10.0.10": version "10.0.10" resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-10.0.10.tgz#c4f872e2917e9e7d4ffd04a64539e2aae67eef0c" @@ -13350,7 +13381,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.5.2, typescript@~3.9.5: +typescript@^3.5.2, typescript@~3.9.2, typescript@~3.9.5: version "3.9.7" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== From b210beb330559ebac7ef982df00de16ffc8f9fbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 2 Sep 2020 16:05:57 +0300 Subject: [PATCH 210/474] Added upgrading document. --- docs/en/Upgrading.md | 41 +++++++++++++++++++++++++++++++++++++++++ docs/en/docs-nav.json | 4 ++++ 2 files changed, 45 insertions(+) create mode 100644 docs/en/Upgrading.md diff --git a/docs/en/Upgrading.md b/docs/en/Upgrading.md new file mode 100644 index 0000000000..1140c5d573 --- /dev/null +++ b/docs/en/Upgrading.md @@ -0,0 +1,41 @@ +# Upgrading the ABP Framework + +This document explains how to upgrade your existing solution when a new ABP Framework version is published. + +## ABP UPDATE Command + +ABP Framework & module ecosystem consist of hundreds of NuGet and NPM packages. It would be tedious to manually update all these packages to upgrade your application. + +[ABP CLI](CLI.md) provides a handy command to update all the ABP related NuGet and NPM packages in your solution with a single command: + +````bash +abp update +```` + +Run this command in the terminal while you are in the root folder of your solution. + +> If your solution has the Angular UI, you probably have `aspnet-core` and `angular` folders in the solution. Run this command in the parent folder of these two folders. + +## The Blog Posts + +Sometimes we introduce new features/changes that requires to make changes in the startup template. We already implement the changes in the startup template for new applications. However, in some cases you need to manually make some minor changes in your solution. + +Whenever you upgrade your solution, it is strongly suggested to check the [ABP BLOG](https://blog.abp.io/?_ga=2.177248992.411298747.1597771169-1910388957.1594128976) to learn the new features and changes coming with the new version. We regularly publish posts and write these kind of changes. If the changes are not trivial, we also provide migration guides. + +## Semantic Versioning & Breaking Changes + +We are working hard to keep the semantic versioning rules, so you don't get breaking changes for minor (feature) versions like 3.1, 3.2, 3.3... + +However, there are some cases we may introduce breaking changes in feature versions too; + +* ABP has many integration packages and sometimes the integrated libraries/frameworks releases major versions and makes breaking changes. In such cases, we carefully check these changes and decide to upgrade the integration package or not. If the impact of the change is relatively small, we update the integration package and explain the change in the release blog post. In such a case, if you've used this integration package, you should follow the instructions explained in the blog post. If the change may break many applications and not easy to fix, we decide to wait this upgrade until the next major ABP Framework release. +* Sometimes we have to make breaking change to fix a major bug or usage problem. In this case, we think that developer already can't properly use that feature, so no problem to fix it with a breaking change. In such cases, the feature will generally be a rarely used feature. Again, we try to keep the impact minimum. + +## Preview Releases & Nightly Builds + +Preview releases and nightly builds can help you to try new features and adapt your solution earlier than a new stable release. + +* [Preview releases](Previews.md) are typically published ~2 weeks before a minor (feature) version (our minor version development cycle is about ~4 weeks). +* [Nightly builds](Nightly-Builds.md) are published in every night (except weekends) from the development branch. That means you can try the previous day's development. + +Refer to the their documents to learn details about these kind of releases. \ No newline at end of file diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index 411cced68d..dc872a2279 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -680,6 +680,10 @@ "text": "Road Map", "path": "Road-Map.md" }, + { + "text": "Upgrading", + "path": "Upgrading.md" + }, { "text": "Contribution Guide", "path": "Contribution/Index.md" From 1243cbb45b63f629c43c5f9c2155f8e26dfd6ab4 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 3 Sep 2020 09:42:34 +0300 Subject: [PATCH 211/474] fix docs branch link problem --- .../src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index 4568e574a5..03a05f2e78 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -393,7 +393,7 @@ namespace Volo.Docs.Pages.Documents.Project return RemoveVersionPrefix(Document.Version) == LatestVersionInfo.Version ? DocsAppConsts.Latest : - Document.Version; + RemoveVersionPrefix(Document.Version); } private async Task SetDocumentAsync() From 2a8f9725135a16ca392f651f22fbd8ab3112567b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 09:55:28 +0300 Subject: [PATCH 212/474] Complete 3.1 stable blog post. --- .../2020-09-03 v3_1_Release_Stable/POST.md | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 docs/en/Blog-Posts/2020-09-03 v3_1_Release_Stable/POST.md diff --git a/docs/en/Blog-Posts/2020-09-03 v3_1_Release_Stable/POST.md b/docs/en/Blog-Posts/2020-09-03 v3_1_Release_Stable/POST.md new file mode 100644 index 0000000000..d8fa61713e --- /dev/null +++ b/docs/en/Blog-Posts/2020-09-03 v3_1_Release_Stable/POST.md @@ -0,0 +1,56 @@ +# ABP Framework 3.1 Final Has Been Released + +It is exciting for us to announce that we've released the ABP Framework & ABP Commercial 3.1 today. + +Since all the new features are already explained in details with the [3.1 RC Announcement Post](https://blog.abp.io/abp/ABP-Framework-v3.1-RC-Has-Been-Released), I will not repeat all the details here. Please read [the RC post](https://blog.abp.io/abp/ABP-Framework-v3.1-RC-Has-Been-Released) for **new feature and changes** you may need to do for your solution while upgrading to the version 3.1. + +## How to Upgrade an Existing Solution + +### Install/Update the ABP CLI + +First of all, install the ABP CLI or upgrade to the latest version. + +If you haven't installed yet: + +````bash +dotnet tool install -g Volo.Abp.Cli +```` + +To update an existing installation: + +```bash +dotnet tool update -g Volo.Abp.Cli +``` + +### ABP UPDATE Command + +[ABP CLI](https://docs.abp.io/en/abp/latest/CLI) provides a handy command to update all the ABP related NuGet and NPM packages in your solution with a single command: + +````bash +abp update +```` + +After the update command, check [the RC blog post](https://blog.abp.io/abp/ABP-Framework-v3.1-RC-Has-Been-Released) to learn if you need to make any changes in your solution. + +> You may want to see the new [upgrading document](https://docs.abp.io/en/abp/3.1/Upgrading). + +## About the version 3.2 + +The planned schedule for the version 3.2 is like that; + +* **September 17, 2020**: 3.2.0-rc.1 (release candidate) +* **October 1, 2020**: 3.2.0 final (stable) + +You can check [the GitHub milestone](https://github.com/abpframework/abp/milestone/39) to see the features/issues we are working on. + +## ABP Community & Articles + +We had lunched the [ABP Community web site](https://community.abp.io/) a few weeks before. The core ABP team and the ABP community have started to create content for the community. + +Here, the last three articles from the ABP Community: + +* [ABP Suite: How to Add the User Entity as a Navigation Property of Another Entity](https://community.abp.io/articles/abp-suite-how-to-add-the-user-entity-as-a-navigation-property-of-another-entity-furp75ex) by [@ebicoglu](https://github.com/ebicoglu) +* [Reuse ABP vNext Modules to Quickly Implement Application Features](https://community.abp.io/articles/reuse-abp-vnext-modules-to-quickly-implement-application-features-tdtmwd9w) by [@gdlcf88](https://github.com/gdlcf88) +* [Using DevExtreme Components With the ABP Framework](https://community.abp.io/articles/using-devextreme-components-with-the-abp-framework-zb8z7yqv) by [@cotur](https://github.com/cotur). + +We are looking for your contributions; You can [submit your article](https://community.abp.io/articles/submit)! We will promote your article to the community. \ No newline at end of file From 2b6cadb2c8aa932748ac5437a53d9ba2d307f0cf Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 3 Sep 2020 14:58:23 +0800 Subject: [PATCH 213/474] Add FeatureManagement module to host projects. --- .../IdentityServerHostMigrationsDbContext.cs | 2 ++ ....cs => 20200903062011_Initial.Designer.cs} | 33 ++++++++++++++++++- ...2_Initial.cs => 20200903062011_Initial.cs} | 23 +++++++++++++ ...verHostMigrationsDbContextModelSnapshot.cs | 31 +++++++++++++++++ ...nyName.MyProjectName.IdentityServer.csproj | 5 +-- .../MyProjectNameIdentityServerModule.cs | 7 ++-- ...yCompanyName.MyProjectName.Web.Host.csproj | 4 +-- .../MyProjectNameWebHostModule.cs | 5 +-- .../EntityFrameworkCore/UnifiedDbContext.cs | 2 ++ ....cs => 20200903062216_Initial.Designer.cs} | 33 ++++++++++++++++++- ...5_Initial.cs => 20200903062216_Initial.cs} | 23 +++++++++++++ .../UnifiedDbContextModelSnapshot.cs | 31 +++++++++++++++++ ...mpanyName.MyProjectName.Web.Unified.csproj | 4 ++- .../MyProjectNameWebUnifiedModule.cs | 5 ++- 14 files changed, 196 insertions(+), 12 deletions(-) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/{20200810022322_Initial.Designer.cs => 20200903062011_Initial.Designer.cs} (98%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/{20200810022322_Initial.cs => 20200903062011_Initial.cs} (98%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/{20200810022405_Initial.Designer.cs => 20200903062216_Initial.Designer.cs} (97%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/{20200810022405_Initial.cs => 20200903062216_Initial.cs} (96%) diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/EntityFrameworkCore/IdentityServerHostMigrationsDbContext.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/EntityFrameworkCore/IdentityServerHostMigrationsDbContext.cs index 9b54d89be4..7e38e00485 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/EntityFrameworkCore/IdentityServerHostMigrationsDbContext.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/EntityFrameworkCore/IdentityServerHostMigrationsDbContext.cs @@ -1,6 +1,7 @@ using Microsoft.EntityFrameworkCore; using Volo.Abp.AuditLogging.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore; using Volo.Abp.IdentityServer.EntityFrameworkCore; using Volo.Abp.PermissionManagement.EntityFrameworkCore; @@ -26,6 +27,7 @@ namespace MyCompanyName.MyProjectName.EntityFrameworkCore modelBuilder.ConfigureAuditLogging(); modelBuilder.ConfigureIdentity(); modelBuilder.ConfigureIdentityServer(); + modelBuilder.ConfigureFeatureManagement(); modelBuilder.ConfigureTenantManagement(); } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200810022322_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200903062011_Initial.Designer.cs similarity index 98% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200810022322_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200903062011_Initial.Designer.cs index 448351da20..4b78f88590 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200810022322_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200903062011_Initial.Designer.cs @@ -11,7 +11,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(IdentityServerHostMigrationsDbContext))] - [Migration("20200810022322_Initial")] + [Migration("20200903062011_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -275,6 +275,37 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpEntityPropertyChanges"); }); + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Value") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpFeatureValues"); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => { b.Property("Id") diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200810022322_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200903062011_Initial.cs similarity index 98% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200810022322_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200903062011_Initial.cs index 1ae2528b3a..e8a824cb65 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200810022322_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20200903062011_Initial.cs @@ -59,6 +59,21 @@ namespace MyCompanyName.MyProjectName.Migrations table.PrimaryKey("PK_AbpClaimTypes", x => x.Id); }); + migrationBuilder.CreateTable( + name: "AbpFeatureValues", + columns: table => new + { + Id = table.Column(nullable: false), + Name = table.Column(maxLength: 128, nullable: false), + Value = table.Column(maxLength: 128, nullable: false), + ProviderName = table.Column(maxLength: 64, nullable: true), + ProviderKey = table.Column(maxLength: 64, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatureValues", x => x.Id); + }); + migrationBuilder.CreateTable( name: "AbpOrganizationUnits", columns: table => new @@ -928,6 +943,11 @@ namespace MyCompanyName.MyProjectName.Migrations table: "AbpEntityPropertyChanges", column: "EntityChangeId"); + migrationBuilder.CreateIndex( + name: "IX_AbpFeatureValues_Name_ProviderName_ProviderKey", + table: "AbpFeatureValues", + columns: new[] { "Name", "ProviderName", "ProviderKey" }); + migrationBuilder.CreateIndex( name: "IX_AbpOrganizationUnitRoles_RoleId_OrganizationUnitId", table: "AbpOrganizationUnitRoles", @@ -1072,6 +1092,9 @@ namespace MyCompanyName.MyProjectName.Migrations migrationBuilder.DropTable( name: "AbpEntityPropertyChanges"); + migrationBuilder.DropTable( + name: "AbpFeatureValues"); + migrationBuilder.DropTable( name: "AbpOrganizationUnitRoles"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/IdentityServerHostMigrationsDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/IdentityServerHostMigrationsDbContextModelSnapshot.cs index 8cb7e3e88e..66abd3288d 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/IdentityServerHostMigrationsDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/IdentityServerHostMigrationsDbContextModelSnapshot.cs @@ -273,6 +273,37 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpEntityPropertyChanges"); }); + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Value") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpFeatureValues"); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => { b.Property("Id") diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj index c70808deed..7469b152e3 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj @@ -34,11 +34,12 @@ + + + - - diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs index cfda73627d..f02f4e5bff 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs @@ -28,6 +28,7 @@ using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.SqlServer; using Volo.Abp.FeatureManagement; +using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity; using Volo.Abp.Identity.EntityFrameworkCore; using Volo.Abp.IdentityServer.EntityFrameworkCore; @@ -65,7 +66,9 @@ namespace MyCompanyName.MyProjectName typeof(AbpPermissionManagementApplicationModule), typeof(AbpPermissionManagementHttpApiModule), typeof(AbpSettingManagementEntityFrameworkCoreModule), + typeof(AbpFeatureManagementEntityFrameworkCoreModule), typeof(AbpFeatureManagementApplicationModule), + typeof(AbpFeatureManagementHttpApiModule), typeof(AbpTenantManagementEntityFrameworkCoreModule), typeof(AbpTenantManagementApplicationModule), typeof(AbpTenantManagementHttpApiModule), @@ -182,10 +185,10 @@ namespace MyCompanyName.MyProjectName app.UseCorrelationId(); app.UseVirtualFiles(); app.UseRouting(); - app.UseCors(DefaultCorsPolicyName); + app.UseCors(DefaultCorsPolicyName); app.UseAuthentication(); app.UseJwtTokenMiddleware(); - + if (MultiTenancyConsts.IsEnabled) { app.UseMultiTenancy(); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index f9e00d53d3..06e5b092e5 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -24,11 +24,11 @@ + + - - diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs index f2da06d4c2..74d1ab1be9 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs @@ -55,9 +55,10 @@ namespace MyCompanyName.MyProjectName typeof(AbpHttpClientIdentityModelWebModule), typeof(AbpIdentityWebModule), typeof(AbpIdentityHttpApiClientModule), + typeof(AbpFeatureManagementWebModule), + typeof(AbpFeatureManagementHttpApiClientModule), typeof(AbpTenantManagementWebModule), typeof(AbpTenantManagementHttpApiClientModule), - typeof(AbpFeatureManagementHttpApiClientModule), typeof(AbpPermissionManagementHttpApiClientModule), typeof(AbpAspNetCoreSerilogModule) )] @@ -231,7 +232,7 @@ namespace MyCompanyName.MyProjectName app.UseHttpsRedirection(); app.UseVirtualFiles(); app.UseRouting(); - app.UseAuthentication(); + app.UseAuthentication(); if (MultiTenancyConsts.IsEnabled) { diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/EntityFrameworkCore/UnifiedDbContext.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/EntityFrameworkCore/UnifiedDbContext.cs index fa41e56a23..7469ef8c64 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/EntityFrameworkCore/UnifiedDbContext.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/EntityFrameworkCore/UnifiedDbContext.cs @@ -1,6 +1,7 @@ using Microsoft.EntityFrameworkCore; using Volo.Abp.AuditLogging.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; @@ -24,6 +25,7 @@ namespace MyCompanyName.MyProjectName.EntityFrameworkCore modelBuilder.ConfigureSettingManagement(); modelBuilder.ConfigureAuditLogging(); modelBuilder.ConfigureIdentity(); + modelBuilder.ConfigureFeatureManagement(); modelBuilder.ConfigureTenantManagement(); modelBuilder.ConfigureMyProjectName(); } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200810022405_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200903062216_Initial.Designer.cs similarity index 97% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200810022405_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200903062216_Initial.Designer.cs index 9fa3f31af0..deaef649b8 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200810022405_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200903062216_Initial.Designer.cs @@ -11,7 +11,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(UnifiedDbContext))] - [Migration("20200810022405_Initial")] + [Migration("20200903062216_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -275,6 +275,37 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpEntityPropertyChanges"); }); + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Value") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpFeatureValues"); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => { b.Property("Id") diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200810022405_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200903062216_Initial.cs similarity index 96% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200810022405_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200903062216_Initial.cs index 2e3df9b82a..68609fc990 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200810022405_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20200903062216_Initial.cs @@ -59,6 +59,21 @@ namespace MyCompanyName.MyProjectName.Migrations table.PrimaryKey("PK_AbpClaimTypes", x => x.Id); }); + migrationBuilder.CreateTable( + name: "AbpFeatureValues", + columns: table => new + { + Id = table.Column(nullable: false), + Name = table.Column(maxLength: 128, nullable: false), + Value = table.Column(maxLength: 128, nullable: false), + ProviderName = table.Column(maxLength: 64, nullable: true), + ProviderKey = table.Column(maxLength: 64, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatureValues", x => x.Id); + }); + migrationBuilder.CreateTable( name: "AbpOrganizationUnits", columns: table => new @@ -511,6 +526,11 @@ namespace MyCompanyName.MyProjectName.Migrations table: "AbpEntityPropertyChanges", column: "EntityChangeId"); + migrationBuilder.CreateIndex( + name: "IX_AbpFeatureValues_Name_ProviderName_ProviderKey", + table: "AbpFeatureValues", + columns: new[] { "Name", "ProviderName", "ProviderKey" }); + migrationBuilder.CreateIndex( name: "IX_AbpOrganizationUnitRoles_RoleId_OrganizationUnitId", table: "AbpOrganizationUnitRoles", @@ -623,6 +643,9 @@ namespace MyCompanyName.MyProjectName.Migrations migrationBuilder.DropTable( name: "AbpEntityPropertyChanges"); + migrationBuilder.DropTable( + name: "AbpFeatureValues"); + migrationBuilder.DropTable( name: "AbpOrganizationUnitRoles"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs index 4d47e35a00..d36839847b 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs @@ -273,6 +273,37 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpEntityPropertyChanges"); }); + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Value") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpFeatureValues"); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => { b.Property("Id") diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj index 8f278d0a03..75581e4e16 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj @@ -28,10 +28,12 @@ + + + - diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs index 246db32e3e..7cb5e9a28f 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs @@ -19,6 +19,7 @@ using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.SqlServer; using Volo.Abp.FeatureManagement; +using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity; using Volo.Abp.Identity.EntityFrameworkCore; using Volo.Abp.Identity.Web; @@ -53,7 +54,9 @@ namespace MyCompanyName.MyProjectName typeof(AbpIdentityApplicationModule), typeof(AbpIdentityEntityFrameworkCoreModule), typeof(AbpPermissionManagementDomainIdentityModule), + typeof(AbpFeatureManagementWebModule), typeof(AbpFeatureManagementApplicationModule), + typeof(AbpFeatureManagementEntityFrameworkCoreModule), typeof(AbpTenantManagementWebModule), typeof(AbpTenantManagementApplicationModule), typeof(AbpTenantManagementEntityFrameworkCoreModule), @@ -136,7 +139,7 @@ namespace MyCompanyName.MyProjectName app.UseAbpRequestLocalization(); app.UseAuthorization(); - + app.UseSwagger(); app.UseSwaggerUI(options => { From 3dfe381e6ba766458abc3f645edf90ff0898fef5 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 3 Sep 2020 10:09:09 +0300 Subject: [PATCH 214/474] Revert "fix docs branch link problem" This reverts commit 1243cbb45b63f629c43c5f9c2155f8e26dfd6ab4. --- .../src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index 03a05f2e78..4568e574a5 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -393,7 +393,7 @@ namespace Volo.Docs.Pages.Documents.Project return RemoveVersionPrefix(Document.Version) == LatestVersionInfo.Version ? DocsAppConsts.Latest : - RemoveVersionPrefix(Document.Version); + Document.Version; } private async Task SetDocumentAsync() From 09a6334d29e2795867061d05ec1e620dd8f60a8c Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 3 Sep 2020 10:09:54 +0300 Subject: [PATCH 215/474] Update Index.cshtml.cs --- .../src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index 4568e574a5..03a05f2e78 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -393,7 +393,7 @@ namespace Volo.Docs.Pages.Documents.Project return RemoveVersionPrefix(Document.Version) == LatestVersionInfo.Version ? DocsAppConsts.Latest : - Document.Version; + RemoveVersionPrefix(Document.Version); } private async Task SetDocumentAsync() From 1e736b1ab2ec0529f5f66875a05fb7ebb0c7df4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 11:25:09 +0300 Subject: [PATCH 216/474] Fix kafka line --- nupkg/common.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index 7d571f6709..b45b4a47da 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -19,7 +19,7 @@ $solutions = ( "modules/tenant-management", "modules/users", "modules/virtual-file-explorer", - "modules/blob-storing-database" + "modules/blob-storing-database" ) # List of projects @@ -124,7 +124,7 @@ $projects = ( "framework/src/Volo.Abp.Validation.Abstractions", "framework/src/Volo.Abp.Validation", "framework/src/Volo.Abp.VirtualFileSystem", - "framework/src/Volo.Abp.Kafka" + "framework/src/Volo.Abp.Kafka", # modules/account "modules/account/src/Volo.Abp.Account.Application.Contracts", From eb6a5141c2b6592c6ddad52291942d7d94c88cbe Mon Sep 17 00:00:00 2001 From: Erol Arkat Date: Thu, 3 Sep 2020 11:42:25 +0300 Subject: [PATCH 217/474] version update --- common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.props b/common.props index 3e4d964cb7..4855f1cd9c 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 3.1.0-rc.4 + 3.1.0 $(NoWarn);CS1591 https://abp.io/assets/abp_nupkg.png https://abp.io/ From 3d0245dd9ff6928a2729777091970a16944c3e0c Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 3 Sep 2020 12:15:04 +0300 Subject: [PATCH 218/474] docs module: show doc parameters when displaying default language document --- .../Pages/Documents/Project/Index.cshtml | 2 +- .../Pages/Documents/Project/Index.cshtml.cs | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml index bd76814461..afbb5fcf5b 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml @@ -295,7 +295,7 @@
    - @if (Model.DocumentLanguageIsDifferent) + @if (Model.DocumentLanguageCode != Model.LanguageCode) { @L["DocumentNotFoundInSelectedLanguage"] diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index 03a05f2e78..777875660a 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -64,7 +64,7 @@ namespace Volo.Docs.Pages.Documents.Project public bool ShowProjectsCombobox { get; set; } - public bool DocumentLanguageIsDifferent { get; set; } + public string DocumentLanguageCode { get; set; } public DocumentParametersDto DocumentPreferences { get; set; } @@ -403,6 +403,7 @@ namespace Volo.Docs.Pages.Documents.Project try { Document = await GetSpecificDocumentOrDefaultAsync(LanguageCode); + DocumentLanguageCode = LanguageCode; } catch (DocumentNotFoundException) { @@ -410,7 +411,7 @@ namespace Volo.Docs.Pages.Documents.Project { Document = await GetSpecificDocumentOrDefaultAsync(DefaultLanguageCode); - DocumentLanguageIsDifferent = true; + DocumentLanguageCode = DefaultLanguageCode; } else { @@ -500,7 +501,7 @@ namespace Volo.Docs.Pages.Documents.Project { var content = (await _documentAppService.GetAsync(new GetDocumentInput { - LanguageCode = LanguageCode, + LanguageCode = DocumentLanguageCode, Name = partialTemplate.Path, ProjectId = Project.Id, Version = Version @@ -518,7 +519,7 @@ namespace Volo.Docs.Pages.Documents.Project private void SetUserPreferences() { - UserPreferences.Add("Document_Language_Code", LanguageCode); + UserPreferences.Add("Document_Language_Code", DocumentLanguageCode); UserPreferences.Add("Document_Version", Version); var cookie = Request.Cookies["AbpDocsPreferences"]; @@ -608,7 +609,7 @@ namespace Volo.Docs.Pages.Documents.Project new GetParametersDocumentInput { ProjectId = Project.Id, - LanguageCode = LanguageCode, + LanguageCode = DocumentLanguageCode, Version = Version }); From 468049640fcacacc515ab8221dc1c5fc914d5932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 12:24:05 +0300 Subject: [PATCH 219/474] Resolved #5273: Add GenerateDocumentationFile to csproj files. --- common.props | 1 + 1 file changed, 1 insertion(+) diff --git a/common.props b/common.props index 4855f1cd9c..ecd841b28e 100644 --- a/common.props +++ b/common.props @@ -8,6 +8,7 @@ LICENSE.md git https://github.com/abpframework/abp/ + true From 92df204e1c0a5627d146aebcb8cc69bd35d5d35c Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Thu, 3 Sep 2020 12:43:54 +0300 Subject: [PATCH 220/474] fix: resolve margin problem in permissions modal --- .../lib/components/permission-management.component.html | 2 +- .../src/lib/components/permission-management.component.ts | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html index a34d674970..60b145b9f9 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html +++ b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html @@ -63,7 +63,7 @@ let i = index; trackBy: trackByFn " - [style.margin-left]="permission.margin + 'px'" + [ngStyle]="getMarginStyle(permission.margin)" class="custom-checkbox custom-control mb-2" > Date: Thu, 3 Sep 2020 12:44:09 +0300 Subject: [PATCH 221/474] style: change abp-loading background opacity --- npm/ng-packs/packages/theme-basic/src/lib/constants/styles.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/theme-basic/src/lib/constants/styles.ts b/npm/ng-packs/packages/theme-basic/src/lib/constants/styles.ts index 03fae58229..b98bed6790 100644 --- a/npm/ng-packs/packages/theme-basic/src/lib/constants/styles.ts +++ b/npm/ng-packs/packages/theme-basic/src/lib/constants/styles.ts @@ -72,7 +72,7 @@ export default ` border: 1px solid #c8c8c8; } .abp-loading { - background: rgba(0, 0, 0, 0.1); + background: rgba(0, 0, 0, 0.05); } .modal-backdrop { background-color: rgba(0, 0, 0, 0.6); From 37ffdfe5f1e32f2615578d3a112d75c9e53b46a0 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Thu, 3 Sep 2020 13:30:37 +0300 Subject: [PATCH 222/474] refactor: get style from permission object --- .../permission-management.component.html | 2 +- .../permission-management.component.ts | 24 +++++++++---------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html index 60b145b9f9..148b4ab1b5 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html +++ b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html @@ -63,7 +63,7 @@ let i = index; trackBy: trackByFn " - [ngStyle]="getMarginStyle(permission.margin)" + [ngStyle]="permission.style" class="custom-checkbox custom-control mb-2" > = (_, item) => item.name; - get selectedGroupPermissions$(): Observable { + get selectedGroupPermissions$(): Observable { + const margin = `margin-${ + (document.body.dir as LocaleDirection) === 'rtl' ? 'right' : 'left' + }.px`; + return this.groups$.pipe( map(groups => this.selectedGroup ? groups.find(group => group.name === this.selectedGroup.name).permissions : [], ), - map(permissions => + map(permissions => permissions.map( permission => (({ ...permission, - margin: findMargin(permissions, permission), + style: { [margin]: findMargin(permissions, permission) }, isGranted: this.permissions.find(per => per.name === permission.name).isGranted, - } as any) as PermissionWithMargin), + } as any) as PermissionWithStyle), ), ), ); @@ -287,12 +291,6 @@ export class PermissionManagementComponent return false; } - - getMarginStyle(margin: number) { - return { - [`margin-${(document.body.dir as LocaleDirection) === 'rtl' ? 'right' : 'left'}.px`]: margin, - }; - } } function findMargin( From fe9145eb68b070d3bf43fef7e850e7a03c7cd7c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 13:55:16 +0300 Subject: [PATCH 223/474] Set license expression. --- common.props | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/common.props b/common.props index 0e96d7f99a..2c0b821838 100644 --- a/common.props +++ b/common.props @@ -5,13 +5,12 @@ $(NoWarn);CS1591 https://abp.io/assets/abp_nupkg.png https://abp.io/ - LICENSE.md + LGPL-3.0-only git https://github.com/abpframework/abp/ true - \ No newline at end of file From bd59d522b882aeed4fb65d09a751f4bc983f5102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 13:56:43 +0300 Subject: [PATCH 224/474] Remove license copying. --- nupkg/pack.ps1 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/nupkg/pack.ps1 b/nupkg/pack.ps1 index 8b593dd2a2..88c945ef5a 100644 --- a/nupkg/pack.ps1 +++ b/nupkg/pack.ps1 @@ -12,8 +12,6 @@ foreach($project in $projects) { $projectFolder = Join-Path $rootFolder $project - Copy-Item (Join-Path $rootFolder "LICENSE.md") -Destination $projectFolder - # Create nuget pack Set-Location $projectFolder Remove-Item -Recurse (Join-Path $projectFolder "bin/Release") @@ -28,8 +26,6 @@ foreach($project in $projects) { $projectName = $project.Substring($project.LastIndexOf("/") + 1) $projectPackPath = Join-Path $projectFolder ("/bin/Release/" + $projectName + ".*.nupkg") Move-Item $projectPackPath $packFolder - - Remove-Item (Join-Path $projectFolder "LICENSE.md") } # Go back to the pack folder From 0b0f3c1f5992eca12370f362016d9eb57cd15281 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 15:07:09 +0300 Subject: [PATCH 225/474] Added blazorize --- .../App.razor | 1 + .../MyCompanyName.MyProjectName.Blazor.csproj | 3 +++ .../_Imports.razor | 2 +- .../wwwroot/index.html | 17 +++++++++++++++-- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor index aca2f1c23c..dee136b071 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor @@ -1,4 +1,5 @@ @using Volo.Abp.AspNetCore.Mvc.Client +@using Volo.Abp.Identity.Blazor.Pages @inject ICachedApplicationConfigurationClient ConfigurationClient + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor index 4ca212ca43..e6569dd1cb 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor @@ -7,4 +7,4 @@ @using Microsoft.JSInterop @using MyCompanyName.MyProjectName.Blazor @using MyCompanyName.MyProjectName.Blazor.Shared -@using Volo.Abp.Identity.Blazor.Pages \ No newline at end of file +@using Blazorise \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html index 47e89ed544..ade028b137 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html @@ -1,4 +1,4 @@ - + @@ -6,7 +6,13 @@ MyCompanyName.MyProjectName.Blazor - + + + + + + + @@ -20,6 +26,13 @@
    + + + + + + + From 80a93bfada5756252cfd22c6a7d053fdcce9e596 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 3 Sep 2020 15:07:58 +0300 Subject: [PATCH 226/474] feat: add separate proxy-index command to schematics --- .../packages/schematics/src/collection.json | 5 +++++ .../src/commands/proxy-index/index.ts | 20 +++++++++++++++++++ .../src/commands/proxy-index/schema.json | 18 +++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 npm/ng-packs/packages/schematics/src/commands/proxy-index/index.ts create mode 100644 npm/ng-packs/packages/schematics/src/commands/proxy-index/schema.json diff --git a/npm/ng-packs/packages/schematics/src/collection.json b/npm/ng-packs/packages/schematics/src/collection.json index 5c2df8ea36..0b1b738e08 100644 --- a/npm/ng-packs/packages/schematics/src/collection.json +++ b/npm/ng-packs/packages/schematics/src/collection.json @@ -5,6 +5,11 @@ "factory": "./commands/proxy-add", "schema": "./commands/proxy-add/schema.json" }, + "proxy-index": { + "description": "ABP Proxy Generator Index Schematics", + "factory": "./commands/proxy-index", + "schema": "./commands/proxy-index/schema.json" + }, "proxy-refresh": { "description": "ABP Proxy Generator Refresh Schematics", "factory": "./commands/proxy-refresh", diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-index/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-index/index.ts new file mode 100644 index 0000000000..85c4707daa --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-index/index.ts @@ -0,0 +1,20 @@ +import { SchematicContext, Tree } from '@angular-devkit/schematics'; +import { + buildDefaultPath, + createProxyIndexGenerator, + removeDefaultPlaceholders, + resolveProject, +} from '../../utils'; + +export default function(schema: { target?: string }) { + const params = removeDefaultPlaceholders(schema); + + return async (host: Tree, _context: SchematicContext) => { + const target = await resolveProject(host, params.target!); + const targetPath = buildDefaultPath(target.definition); + + const generateIndex = createProxyIndexGenerator(targetPath); + + return generateIndex(host); + }; +} diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-index/schema.json b/npm/ng-packs/packages/schematics/src/commands/proxy-index/schema.json new file mode 100644 index 0000000000..632c6d7e51 --- /dev/null +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-index/schema.json @@ -0,0 +1,18 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "SchematicsAbpIndexProxy", + "title": "ABP Index Proxy Schema", + "type": "object", + "properties": { + "target": { + "description": "Target Angular project to place the generated code", + "type": "string", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" + } + }, + "required": [] +} From eebce38f2a6ca8feee90c9b037fb6ef2816a530c Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 3 Sep 2020 15:09:06 +0300 Subject: [PATCH 227/474] feat: make sure index.ts is not indexed by proxy-index --- npm/ng-packs/packages/schematics/src/utils/barrel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/barrel.ts b/npm/ng-packs/packages/schematics/src/utils/barrel.ts index b21acc77fa..adf6779ebe 100644 --- a/npm/ng-packs/packages/schematics/src/utils/barrel.ts +++ b/npm/ng-packs/packages/schematics/src/utils/barrel.ts @@ -21,7 +21,7 @@ export function generateBarrelFromPath(tree: Tree, indexPath: string) { const _exports: string[] = []; dir.subfiles.forEach(fragment => { - if (!fragment.endsWith('.ts')) return; + if (!fragment.endsWith('.ts') || fragment === 'index.ts') return; _exports.push(`export * from './${fragment.replace(/\.ts$/, '')}';`); }); From 9379b76d7009f55bfc4116c407002860fae65b72 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 3 Sep 2020 15:09:38 +0300 Subject: [PATCH 228/474] build: copy proxy-index schema.json in build script --- npm/ng-packs/scripts/build-schematics.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/npm/ng-packs/scripts/build-schematics.ts b/npm/ng-packs/scripts/build-schematics.ts index 3a14d2f03c..7efca32e72 100644 --- a/npm/ng-packs/scripts/build-schematics.ts +++ b/npm/ng-packs/scripts/build-schematics.ts @@ -21,6 +21,7 @@ class FileCopy { const PACKAGE_TO_BUILD = 'schematics'; const FILES_TO_COPY_AFTER_BUILD: (FileCopy | string)[] = [ { src: 'src/commands/proxy-add/schema.json', dest: 'commands/proxy-add/schema.json' }, + { src: 'src/commands/proxy-index/schema.json', dest: 'commands/proxy-index/schema.json' }, { src: 'src/commands/proxy-refresh/schema.json', dest: 'commands/proxy-refresh/schema.json' }, { src: 'src/commands/proxy-remove/schema.json', dest: 'commands/proxy-remove/schema.json' }, { src: 'src/commands/api/files-enum', dest: 'commands/api/files-enum' }, From 4a39329a6fdc019829148b14b78793ef55914d04 Mon Sep 17 00:00:00 2001 From: Erol Arkat Date: Thu, 3 Sep 2020 15:21:10 +0300 Subject: [PATCH 229/474] npm packages 3.1.0 --- .../package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../yarn.lock | 222 ++++++------ .../package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../yarn.lock | 236 ++++++------- .../app/Volo.BloggingTestApp/package.json | 4 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../app/Volo.BloggingTestApp/yarn.lock | 330 +++++++++--------- .../Volo.ClientSimulation.Demo/package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../demo/Volo.ClientSimulation.Demo/yarn.lock | 236 ++++++------- modules/cms-kit/angular/package.json | 10 +- .../angular/projects/cms-kit/package.json | 4 +- .../Volo.CmsKit.IdentityServer/package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../host/Volo.CmsKit.IdentityServer/yarn.lock | 236 ++++++------- .../host/Volo.CmsKit.Web.Host/package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../host/Volo.CmsKit.Web.Host/yarn.lock | 236 ++++++------- .../host/Volo.CmsKit.Web.Unified/package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../host/Volo.CmsKit.Web.Unified/yarn.lock | 236 ++++++------- modules/docs/app/VoloDocs.Web/package.json | 4 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- modules/docs/app/VoloDocs.Web/yarn.lock | 296 ++++++++-------- npm/lerna.json | 2 +- npm/ng-packs/lerna.version.json | 2 +- npm/ng-packs/package.json | 22 +- npm/ng-packs/packages/account/package.json | 4 +- npm/ng-packs/packages/components/package.json | 4 +- npm/ng-packs/packages/core/package.json | 4 +- .../packages/feature-management/package.json | 4 +- npm/ng-packs/packages/identity/package.json | 6 +- .../permission-management/package.json | 4 +- npm/ng-packs/packages/schematics/package.json | 2 +- .../packages/setting-management/package.json | 4 +- .../packages/tenant-management/package.json | 6 +- .../packages/theme-basic/package.json | 4 +- .../packages/theme-shared/package.json | 4 +- npm/packs/anchor-js/package.json | 4 +- .../package.json | 4 +- .../package.json | 30 +- npm/packs/aspnetcore.mvc.ui/package.json | 2 +- npm/packs/blogging/package.json | 10 +- npm/packs/bootstrap-datepicker/package.json | 2 +- npm/packs/bootstrap/package.json | 4 +- npm/packs/chart.js/package.json | 2 +- npm/packs/clipboard/package.json | 4 +- npm/packs/codemirror/package.json | 4 +- npm/packs/core/package.json | 4 +- npm/packs/datatables.net-bs4/package.json | 4 +- npm/packs/datatables.net/package.json | 4 +- npm/packs/docs/package.json | 12 +- npm/packs/flag-icon-css/package.json | 2 +- npm/packs/font-awesome/package.json | 4 +- npm/packs/highlight.js/package.json | 4 +- npm/packs/jquery-form/package.json | 4 +- .../package.json | 4 +- npm/packs/jquery-validation/package.json | 4 +- npm/packs/jquery/package.json | 4 +- npm/packs/jstree/package.json | 4 +- npm/packs/lodash/package.json | 4 +- npm/packs/luxon/package.json | 2 +- .../package.json | 4 +- npm/packs/markdown-it/package.json | 4 +- npm/packs/owl.carousel/package.json | 4 +- npm/packs/popper.js/package.json | 4 +- npm/packs/prismjs/package.json | 6 +- npm/packs/select2/package.json | 4 +- npm/packs/signalr/package.json | 4 +- npm/packs/sweetalert/package.json | 4 +- npm/packs/timeago/package.json | 4 +- npm/packs/toastr/package.json | 4 +- npm/packs/tui-editor/package.json | 10 +- npm/packs/uppy/package.json | 4 +- npm/packs/utils/package.json | 2 +- npm/packs/virtual-file-explorer/package.json | 6 +- templates/app/angular/package.json | 12 +- .../package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../MyCompanyName.MyProjectName.Web/yarn.lock | 236 ++++++------- templates/module/angular/package.json | 12 +- .../projects/my-project-name/package.json | 4 +- .../package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../yarn.lock | 236 ++++++------- .../package.json | 2 +- .../libs/abp/utils/abp-utils.umd.js.map | 2 +- .../libs/abp/utils/abp-utils.umd.min.js.map | 2 +- .../yarn.lock | 236 ++++++------- 117 files changed, 2039 insertions(+), 2039 deletions(-) diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index 5612b903d9..e42d0ea68b 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^3.1.0-rc.4", + "@abp/aspnetcore.mvc.ui.theme.shared": "^3.1.0", "highlight.js": "^9.13.1" }, "devDependencies": {} diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock index b2074439f9..0b838f0503 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock @@ -2,30 +2,30 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.shared@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.shared@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -34,144 +34,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index 8b8e4f79a3..5a8545096a 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" }, "devDependencies": {} } \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index 43d478b732..c1a043f4ac 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index 8778c68d64..7ff4e27f66 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4", - "@abp/blogging": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0", + "@abp/blogging": "^3.1.0" } } \ No newline at end of file diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index 94737cbcff..597adbb846 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,213 +41,213 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/blogging@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.1.0-rc.4.tgz#9287964c12eab38f3c28f41a60e87e155f028849" - integrity sha512-e3jyPeb6op8sRXrovOuVsBoPH3oYSBgPqhfya0pIQ2Dr78IPLSPsEQekxaUKFcaCf1L/jWZgxnNPHjqF04BdLQ== +"@abp/blogging@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.1.0.tgz#627c827abfb0716a6124fea519d06d3fc8740d46" + integrity sha512-+UadxN3jBGzo2t+w38638BNRm9OGB2UNzw2AfkffomFPvhzA8OUzyhdpwb0+sVqXfom+GmnvRVIr8YB193gOvw== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - "@abp/owl.carousel" "~3.1.0-rc.4" - "@abp/prismjs" "~3.1.0-rc.4" - "@abp/tui-editor" "~3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + "@abp/owl.carousel" "~3.1.0" + "@abp/prismjs" "~3.1.0" + "@abp/tui-editor" "~3.1.0" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/clipboard@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.4.tgz#b095bab123d9035cdfb32599a64b9381f6feba86" - integrity sha512-Q5UrZXIcXIfkuh1iVv23da2aVsOew/Fz32NlPQKhHczQfC2+/x1XlWHxbc5CyvVVxXusZJt/wqjSlM7oQGLqFg== +"@abp/clipboard@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0.tgz#3d994bee312beb3f4977e734a2e4da98b8617279" + integrity sha512-HE9X86G471eOJYrVEM9NIJFLjzvfiW0vtqj4gGjhrwAPin2p44Jby5r8UGOKFY1wr/qZQbbuwmhVih78maDwIA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" clipboard "^2.0.6" -"@abp/codemirror@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.1.0-rc.4.tgz#afc97b7a06e05ab90e942e35b1f8addc4e3b29c3" - integrity sha512-DOsd2S+zkEopKiWRT2O7B9s2dZJIup2zD51wIsYoytzH2aESQ8HRg9aEoBWXdfVeuC3/9AcYFfVAv9rDI2PzqA== +"@abp/codemirror@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.1.0.tgz#870b3f9c057063d355a5796b0e7e040e22a324f6" + integrity sha512-xldfttjZ3BKoKQ5qiHdWNfGTUrcYnwbBQiitA9lYZkLedEkqOodyX8qCSTYbw1A69dWWJAEaj5vnq05xMldcaQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" codemirror "^5.54.0" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/highlight.js@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.1.0-rc.4.tgz#d7e2840c84e3ed056a4f9ecf4f753a6d42245d50" - integrity sha512-dqTCK7ibMztqBJuJD/+4M5bXGWKkYP08azaA52d8+rMac61+90ZQtcsWe2UdKoa7fb7n4nNqEouXogoQXt1g7A== +"@abp/highlight.js@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.1.0.tgz#89a9288c2456817f346ec0abafe90432755073e1" + integrity sha512-4tlstlYCkC56nosd/EQLsCCUy+GyEibwpPNPhtPkCMJ1J5iU7TlGYqbcmvRtqSpDWiSziueRggWME6+CtL4/EA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/markdown-it@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.1.0-rc.4.tgz#62ba80c3925442a4da0888ab2d757ea63939c365" - integrity sha512-N10nqweim8oBDTs9JIa+CLHltz4r5YWl0tLAkwOSWWbmh57AH4aht4g7toOuD2qOkLNq1TD/bmoVuE51aqsxfA== +"@abp/markdown-it@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.1.0.tgz#7c37311718d1f50ba9f64180f9eba21c54509867" + integrity sha512-XTIsIDSVJ3p1fgfW84SB4P6t3qWsr26Xa/gargQX+A2yh2yQOcKYwv3RDQdA3e4N3kTgKenmNES/qsNnoPObhA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" markdown-it "^11.0.0" -"@abp/owl.carousel@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.1.0-rc.4.tgz#44186b95061ad046976a380e4eb63c7ceebdcad0" - integrity sha512-rgF0/1xnkQMmZInmmJew6pIzwEaJH2CTt4e/p1h9YTQeIB0o+iclgYydFGSwbowBFP9LgSFNx+xWWUiH4iGmGA== +"@abp/owl.carousel@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.1.0.tgz#597c7f029303d97b0bc0c61737512526cc6535a4" + integrity sha512-Rwa2j3xgjDgrMPUR+wKdMDLJ0BznMcig/nU4W8MVUEee6awbuVPjWI2BKWbU8Og+VDvfFVcwmDP6RyWEy02JvQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" owl.carousel "^2.3.4" -"@abp/prismjs@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.4.tgz#8fe68b4b96f7938e09aecfcd56bf9c2fa5f2fe4d" - integrity sha512-8WO9nk4Jw6kKGkMaXTO3DqljVxKVz55kMFrKcdxtpLRZ0LOlqQn7VlV8tmFRn0K85xXD0lWU4g/C2+G+wiBoqw== +"@abp/prismjs@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0.tgz#11dee74a803c4d79b0a41ed0c3a4f1946c44968a" + integrity sha512-SJ3bWT9UXLSGKMiNKyJeRt/3WjD4qXc4DuEAD2RxRT+tBDd17FG18VTfjLMPcSGtTt+zTK2+tbcxZN5hUfVW9g== dependencies: - "@abp/clipboard" "~3.1.0-rc.4" - "@abp/core" "~3.1.0-rc.4" + "@abp/clipboard" "~3.1.0" + "@abp/core" "~3.1.0" prismjs "^1.20.0" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/tui-editor@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.1.0-rc.4.tgz#2b925274131e207e6a91dc0e7484a70aa848a100" - integrity sha512-rsEDeV+x2rUchoJ6i7dTLPnTIdj8yxiZKzLaAQzJ7XJpcbBolub/0aT1sX1+b+d7Hnj+NCIcidBKHqbCpfoRAw== +"@abp/tui-editor@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.1.0.tgz#1c607e1d1518ae07db6e5db4f1ef2690c337ef2f" + integrity sha512-0cq4vLLxUSU+n5CYGnJD78w2bveMZ9+oZjdL+WJmEsb9J/tIlNtsKTIJLDRRcbOyn/fbWzQkOj039JmWOuzVaQ== dependencies: - "@abp/codemirror" "~3.1.0-rc.4" - "@abp/highlight.js" "~3.1.0-rc.4" - "@abp/jquery" "~3.1.0-rc.4" - "@abp/markdown-it" "~3.1.0-rc.4" + "@abp/codemirror" "~3.1.0" + "@abp/highlight.js" "~3.1.0" + "@abp/jquery" "~3.1.0" + "@abp/markdown-it" "~3.1.0" tui-editor "^1.4.10" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index ee50269e26..847fb34eb6 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" } } \ No newline at end of file diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index 10be35ad9b..e03b481720 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index 7aa56281fc..98aff7968a 100644 --- a/modules/cms-kit/angular/package.json +++ b/modules/cms-kit/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.1.0-rc.4", - "@abp/ng.identity": "~3.1.0-rc.4", - "@abp/ng.setting-management": "~3.1.0-rc.4", - "@abp/ng.tenant-management": "~3.1.0-rc.4", - "@abp/ng.theme.basic": "~3.1.0-rc.4", + "@abp/ng.account": "~3.1.0", + "@abp/ng.identity": "~3.1.0", + "@abp/ng.setting-management": "~3.1.0", + "@abp/ng.tenant-management": "~3.1.0", + "@abp/ng.theme.basic": "~3.1.0", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index bf096ffaaa..cd3a4d5752 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=3.1.0-rc.4", - "@abp/ng.theme.shared": ">=3.1.0-rc.4" + "@abp/ng.core": ">=3.1.0", + "@abp/ng.theme.shared": ">=3.1.0" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index 4b220b0935..54a0658921 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"wYA6EgBA,EAAYC,EAASC,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEM,KAAMC,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BV,EAAEU,OAAOC,UAAY,WAAa,OAAOC,OAAUZ,EACvJ,SAASO,EAAKM,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIlB,EAAG,MAAM,IAAImB,UAAU,mCAC3B,KAAOf,GAAG,IACN,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARgB,EAAG,GAASjB,EAAU,OAAIiB,EAAG,GAAKjB,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEkB,KAAKnB,GAAI,GAAKA,EAAEQ,SAAWP,EAAIA,EAAEkB,KAAKnB,EAAGiB,EAAG,KAAKG,KAAM,OAAOnB,EAE3J,OADID,EAAI,EAAGC,IAAGgB,EAAK,CAAS,EAARA,EAAG,GAAQhB,EAAEoB,QACzBJ,EAAG,IACP,KAAK,EAAG,KAAK,EAAGhB,EAAIgB,EAAI,MACxB,KAAK,EAAc,OAAXd,EAAEC,QAAgB,CAAEiB,MAAOJ,EAAG,GAAIG,MAAM,GAChD,KAAK,EAAGjB,EAAEC,QAASJ,EAAIiB,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKd,EAAEI,IAAIe,MAAOnB,EAAEG,KAAKgB,MAAO,SACxC,QACI,KAAMrB,EAAIE,EAAEG,MAAML,EAAIA,EAAEsB,OAAS,GAAKtB,EAAEA,EAAEsB,OAAS,KAAkB,IAAVN,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEd,EAAI,EAAG,SACjG,GAAc,IAAVc,EAAG,MAAchB,GAAMgB,EAAG,GAAKhB,EAAE,IAAMgB,EAAG,GAAKhB,EAAE,IAAM,CAAEE,EAAEC,MAAQa,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYd,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIgB,EAAI,MAC7D,GAAIhB,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIiB,KAAKP,GAAK,MACvDhB,EAAE,IAAIE,EAAEI,IAAIe,MAChBnB,EAAEG,KAAKgB,MAAO,SAEtBL,EAAKnB,EAAKqB,KAAKtB,EAASM,GAC1B,MAAOsB,GAAKR,EAAK,CAAC,EAAGQ,GAAIzB,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARgB,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEI,MAAOJ,EAAG,GAAKA,EAAG,QAAK,EAAQG,MAAM,GArB9BM,CAAK,CAACX,EAAGC,MAyBhCW,OAAOC,gBAwBpBC,EAAOC,EAAGf,GACtB,IAAIgB,EAAsB,mBAAXnB,QAAyBkB,EAAElB,OAAOC,UACjD,IAAKkB,EAAG,OAAOD,EACf,IAAmBE,EAAYP,EAA3BQ,EAAIF,EAAEZ,KAAKW,GAAOI,EAAK,GAC3B,IACI,WAAc,IAANnB,GAAgBA,KAAM,MAAQiB,EAAIC,EAAEzB,QAAQY,MAAMc,EAAGV,KAAKQ,EAAEX,OAExE,MAAOc,GAASV,EAAI,CAAEU,MAAOA,WAEzB,IACQH,IAAMA,EAAEZ,OAASW,EAAIE,EAAU,SAAIF,EAAEZ,KAAKc,WAExC,GAAIR,EAAG,MAAMA,EAAEU,OAE7B,OAAOD,WAGKE,IACZ,IAAK,IAAIF,EAAK,GAAID,EAAI,EAAGA,EAAII,UAAUd,OAAQU,IAC3CC,EAAKA,EAAGI,OAAOT,EAAOQ,UAAUJ,KACpC,OAAOC,EA8CcP,OAAOC,aC5L9B,SAA4BP,GAAAP,KAAAO,MAAAA,gBAG9B,SAAAkB,IAGUzB,KAAA0B,KAAO,SAEfb,OAAAc,eAAIF,EAAAG,UAAA,OAAI,KAAR,WACE,OAAO5B,KAAK6B,uCAEdhB,OAAAc,eAAIF,EAAAG,UAAA,OAAI,KAAR,WACE,OAAO5B,KAAK8B,sCAEdjB,OAAAc,eAAIF,EAAAG,UAAA,SAAM,KAAV,WACE,OAAO5B,KAAK0B,sCAGND,EAAAG,UAAAG,OAAA,SACNxB,EACAyB,EACAC,GAEA,IAAKD,EAAc,OAAOhC,KAAKkC,QAAQ3B,GAEvC,IAAK0B,EAAU,OAAOjC,KAAKmC,QAAQ5B,GAEnC,IAAM6B,EAAO,IAAIC,EAAS9B,GAQ1B,OAPA6B,EAAKE,SAAWN,EAChBA,EAAatC,KAAO0C,EACpBA,EAAK1C,KAAOuC,EACZA,EAASK,SAAWF,EAEpBpC,KAAK0B,OAEEU,GAGDX,EAAAG,UAAAW,WAAA,SACNC,EACAR,EACAC,GAEA,IAAKO,EAAO/B,OAAQ,MAAO,GAE3B,IAAKuB,EAAc,OAAOhC,KAAKyC,YAAYD,GAE3C,IAAKP,EAAU,OAAOjC,KAAK0C,YAAYF,GAEvC,IAAMG,EAAO,IAAIlB,EASjB,OARAkB,EAAKD,YAAYF,GACjBG,EAAKd,MAAOS,SAAWN,EACvBA,EAAatC,KAAOiD,EAAKd,MACzBc,EAAKb,KAAMpC,KAAOuC,EAClBA,EAASK,SAAWK,EAAKb,KAEzB9B,KAAK0B,MAAQc,EAAO/B,OAEbkC,EAAKC,eAGNnB,EAAAG,UAAAiB,OAAA,SAAOT,GACb,OAAKA,EAAKE,SAELF,EAAK1C,MAEV0C,EAAKE,SAAS5C,KAAO0C,EAAK1C,KAC1B0C,EAAK1C,KAAK4C,SAAWF,EAAKE,SAE1BtC,KAAK0B,OAEEU,GAPgBpC,KAAK8C,WAFD9C,KAAK+C,YAYlCtB,EAAAG,UAAAoB,IAAA,SAAIzC,GAAJ,IAAA0C,EAAAjD,KACE,MAAO,CACLkD,MAAO,qBAACC,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACN,OAAAC,EAAAJ,EAAKK,UAASjD,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAM1C,GAAU4C,KACrCK,OAAQ,qBAACL,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACP,OAAAC,EAAAJ,EAAKQ,WAAUpD,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAM1C,GAAU4C,KACtCO,QAAS,SAACC,GAAqB,OAAAV,EAAKW,WAAWrD,EAAOoD,IACtDE,KAAM,WAAM,OAAAZ,EAAKf,QAAQ3B,IACzBuD,KAAM,WAAM,OAAAb,EAAKd,QAAQ5B,MAI7BkB,EAAAG,UAAAmC,QAAA,SAAQvB,GAAR,IAAAS,EAAAjD,KACE,MAAO,CACLkD,MAAO,qBAACC,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACN,OAAAC,EAAAJ,EAAKe,cAAa3D,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAMT,GAAWW,KAC1CK,OAAQ,qBAACL,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACP,OAAAC,EAAAJ,EAAKgB,eAAc5D,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAMT,GAAWW,KAC3CO,QAAS,SAACC,GAAqB,OAAAV,EAAKiB,eAAe1B,EAAQmB,IAC3DE,KAAM,WAAM,OAAAZ,EAAKR,YAAYD,IAC7BsB,KAAM,WAAM,OAAAb,EAAKP,YAAYF,MAMjCf,EAAAG,UAAA0B,SAAA,SAAS/C,EAAU4D,EAAoBC,QAAA,IAAAA,IAAAA,EAAAC,GACrC,IAAM/B,EAAWtC,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAO4D,MAEzD,OAAO7B,EAAWtC,KAAK+B,OAAOxB,EAAO+B,EAAUA,EAAS5C,MAAQM,KAAKmC,QAAQ5B,IAK/EkB,EAAAG,UAAA6B,UAAA,SAAUlD,EAAUgE,EAAgBH,QAAA,IAAAA,IAAAA,EAAAC,GAClC,IAAM3E,EAAOM,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOgE,MAErD,OAAO7E,EAAOM,KAAK+B,OAAOxB,EAAOb,EAAK4C,SAAU5C,GAAQM,KAAKkC,QAAQ3B,IAGvEkB,EAAAG,UAAAgC,WAAA,SAAWrD,EAAUoD,GACnB,GAAIA,EAAW,EAAGA,GAAY3D,KAAK0B,UAC9B,GAAIiC,GAAY3D,KAAK0B,KAAM,OAAO1B,KAAKmC,QAAQ5B,GAEpD,GAAIoD,GAAY,EAAG,OAAO3D,KAAKkC,QAAQ3B,GAEvC,IAAMb,EAAOM,KAAKwE,IAAIb,GAEtB,OAAO3D,KAAK+B,OAAOxB,EAAOb,EAAK4C,SAAU5C,IAG3C+B,EAAAG,UAAAM,QAAA,SAAQ3B,GACN,IAAM6B,EAAO,IAAIC,EAAS9B,GAU1B,OARA6B,EAAK1C,KAAOM,KAAK6B,MAEb7B,KAAK6B,MAAO7B,KAAK6B,MAAMS,SAAWF,EACjCpC,KAAK8B,KAAOM,EAEjBpC,KAAK6B,MAAQO,EACbpC,KAAK0B,OAEEU,GAGTX,EAAAG,UAAAO,QAAA,SAAQ5B,GACN,IAAM6B,EAAO,IAAIC,EAAS9B,GAa1B,OAXIP,KAAK6B,OACPO,EAAKE,SAAWtC,KAAK8B,KACrB9B,KAAK8B,KAAMpC,KAAO0C,EAClBpC,KAAK8B,KAAOM,IAEZpC,KAAK6B,MAAQO,EACbpC,KAAK8B,KAAOM,GAGdpC,KAAK0B,OAEEU,GAKTX,EAAAG,UAAAoC,aAAA,SACExB,EACA2B,EACAC,QAAA,IAAAA,IAAAA,EAAAC,GAEA,IAAM/B,EAAWtC,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAO4D,MAEzD,OAAO7B,EAAWtC,KAAKuC,WAAWC,EAAQF,EAAUA,EAAS5C,MAAQM,KAAK0C,YAAYF,IAKxFf,EAAAG,UAAAqC,cAAA,SACEzB,EACA+B,EACAH,QAAA,IAAAA,IAAAA,EAAAC,GAEA,IAAM3E,EAAOM,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOgE,MAErD,OAAO7E,EAAOM,KAAKuC,WAAWC,EAAQ9C,EAAK4C,SAAU5C,GAAQM,KAAKyC,YAAYD,IAGhFf,EAAAG,UAAAsC,eAAA,SAAe1B,EAAamB,GAG1B,GAFIA,EAAW,IAAGA,GAAY3D,KAAK0B,MAE/BiC,GAAY,EAAG,OAAO3D,KAAKyC,YAAYD,GAE3C,GAAImB,GAAY3D,KAAK0B,KAAM,OAAO1B,KAAK0C,YAAYF,GAEnD,IAAM9C,EAAOM,KAAKwE,IAAIb,GAEtB,OAAO3D,KAAKuC,WAAWC,EAAQ9C,EAAK4C,SAAU5C,IAGhD+B,EAAAG,UAAAa,YAAA,SAAYD,GAAZ,IAAAS,EAAAjD,KACE,OAAOwC,EAAOiC,aAA2B,SAACC,EAAOnE,GAE/C,OADAmE,EAAMC,QAAQ1B,EAAKf,QAAQ3B,IACpBmE,IACN,KAGLjD,EAAAG,UAAAc,YAAA,SAAYF,GAAZ,IAAAS,EAAAjD,KACE,OAAOwC,EAAOoC,KAAI,SAAArE,GAAS,OAAA0C,EAAKd,QAAQ5B,OAG1CkB,EAAAG,UAAAiD,KAAA,WAAA,IAAA5B,EAAAjD,KACE,MAAO,CACL0D,QAAS,SAACC,GAAqB,OAAAV,EAAK6B,YAAYnB,IAChDoB,QAAS,eAAC,IAAA5B,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACR,OAAAH,EAAK+B,YAAYzB,MAAMN,EAAME,IAC/B8B,WAAY,eAAC,IAAA9B,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACX,OAAAH,EAAKiC,eAAe3B,MAAMN,EAAME,IAClCU,KAAM,WAAM,OAAAZ,EAAKF,YACjBe,KAAM,WAAM,OAAAb,EAAKH,cAIrBrB,EAAAG,UAAAuD,SAAA,SAASC,GAAT,IAAAnC,EAAAjD,KACE,MAAO,CACL0D,QAAS,SAACC,GAAqB,OAAAV,EAAKoC,gBAAgBD,EAAOzB,IAC3DE,KAAM,WAAM,OAAAZ,EAAKqC,aAAaF,IAC9BtB,KAAM,WAAM,OAAAb,EAAKsC,aAAaH,MAIlC3D,EAAAG,UAAAkD,YAAA,SAAYnB,GACNA,EAAW,IAAGA,GAAY3D,KAAK0B,MAEnC,IAAM8D,EAAUxF,KAAKwE,IAAIb,GAEzB,OAAO6B,EAAUxF,KAAK6C,OAAO2C,QAAWC,GAK1ChE,EAAAG,UAAAoD,YAAA,SAAYzE,EAAY6D,QAAA,IAAAA,IAAAA,EAAAC,GACtB,IAAMV,EAAW3D,KAAK0F,WAAU,SAAAtD,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOA,MAE9D,OAAOoD,EAAW,OAAI8B,EAAYzF,KAAK8E,YAAYnB,IAKrDlC,EAAAG,UAAAsD,eAAA,SAAe3E,EAAY6D,QAAA,IAAAA,IAAAA,EAAAC,GAGzB,IAFA,IAAMsB,EAAyB,GAEtBH,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAC9E0E,EAAUoB,EAAQjF,MAAOA,IAC3BoF,EAAQjF,KAAKV,KAAK8E,YAAYnB,EAAWgC,EAAQlF,SAIrD,OAAOkF,GAGTlE,EAAAG,UAAAmB,SAAA,WACE,IAAMc,EAAO7D,KAAK6B,MAElB,GAAIgC,EAQF,OAPA7D,KAAK6B,MAAQgC,EAAKnE,KAEdM,KAAK6B,MAAO7B,KAAK6B,MAAMS,cAAWmD,EACjCzF,KAAK8B,UAAO2D,EAEjBzF,KAAK0B,OAEEmC,GAMXpC,EAAAG,UAAAkB,SAAA,WACE,IAAMgB,EAAO9D,KAAK8B,KAElB,GAAIgC,EAQF,OAPA9D,KAAK8B,KAAOgC,EAAKxB,SAEbtC,KAAK8B,KAAM9B,KAAK8B,KAAKpC,UAAO+F,EAC3BzF,KAAK6B,WAAQ4D,EAElBzF,KAAK0B,OAEEoC,GAMXrC,EAAAG,UAAAyD,gBAAA,SAAgBD,EAAezB,GAC7B,GAAIyB,GAAS,EAAG,MAAO,GAEvB,GAAIzB,EAAW,EAAGA,EAAWiC,KAAKC,IAAIlC,EAAW3D,KAAK0B,KAAM,QACvD,GAAIiC,GAAY3D,KAAK0B,KAAM,MAAO,GAEvC0D,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,KAAOiC,GAIpC,IAFA,IAAMgC,EAAyB,GAExBP,KAAS,CACd,IAAMI,EAAUxF,KAAKwE,IAAIb,GACzBgC,EAAQjF,KAAKV,KAAK6C,OAAO2C,IAG3B,OAAOG,GAGTlE,EAAAG,UAAA0D,aAAA,SAAaF,GACX,GAAIA,GAAS,EAAG,MAAO,GAEvBA,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,MAI7B,IAFA,IAAMiE,EAAyB,GAExBP,KAASO,EAAQhB,QAAQ3E,KAAK+C,YAErC,OAAO4C,GAGTlE,EAAAG,UAAA2D,aAAA,SAAaH,GACX,GAAIA,GAAS,EAAG,MAAO,GAEvBA,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,MAI7B,IAFA,IAAMiE,EAAyB,GAExBP,KAASO,EAAQjF,KAAKV,KAAK8C,YAElC,OAAO6C,GAGTlE,EAAAG,UAAA0C,KAAA,SAAKyB,GACH,IAAK,IAAIP,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAClF,GAAIqG,EAAUP,EAAS7B,EAAU3D,MAAO,OAAOwF,GAMnD/D,EAAAG,UAAA8D,UAAA,SAAUK,GACR,IAAK,IAAIP,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAClF,GAAIqG,EAAUP,EAAS7B,EAAU3D,MAAO,OAAO2D,EAGjD,OAAQ,GAGVlC,EAAAG,UAAAoE,QAAA,SAAqBC,GACnB,IAAK,IAAI7D,EAAOpC,KAAK6B,MAAO8B,EAAW,EAAGvB,EAAMuB,IAAYvB,EAAOA,EAAK1C,KACtEuG,EAAW7D,EAAMuB,EAAU3D,OAI/ByB,EAAAG,UAAA4C,IAAA,SAAIb,GACF,OAAO3D,KAAKsE,MAAK,SAACjF,EAAG6G,GAAU,OAAAvC,IAAauC,MAK9CzE,EAAAG,UAAAuE,QAAA,SAAQ5F,EAAY6D,GAClB,YADkB,IAAAA,IAAAA,EAAAC,GACXrE,KAAK0F,WAAU,SAAAtD,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOA,OAGtDkB,EAAAG,UAAAwE,QAAA,WACE,IAAMC,EAAQ,IAAIC,MAAMtG,KAAK0B,MAI7B,OAFA1B,KAAKgG,SAAQ,SAAC5D,EAAM8D,GAAU,OAACG,EAAMH,GAAU9D,EAAK7B,SAE7C8F,GAGT5E,EAAAG,UAAAgB,YAAA,WACE,IAAMyD,EAAQ,IAAIC,MAAMtG,KAAK0B,MAI7B,OAFA1B,KAAKgG,SAAQ,SAAC5D,EAAM8D,GAAU,OAACG,EAAMH,GAAU9D,KAExCiE,GAGT5E,EAAAG,UAAA2E,SAAA,SAASC,GACP,YADO,IAAAA,IAAAA,EAA4BC,KAAKC,WACjC1G,KAAKoG,UACTxB,KAAI,SAAArE,GAAS,OAAAiG,EAASjG,MACtBoG,KAAK,UAITlF,EAAAG,UAAC9B,OAAOC,UAAT,mEACWqC,EAAOpC,KAAK6B,MAAkB,0BAAGO,EACxC,CAAA,EAAMA,EAAK7B,OADiC,CAAA,EAAA,UAC5C8C,EAAA9D,+BAD0D6C,EAAOA,EAAK1C","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index b4b0ecc72f..7a94d2b9a8 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json index b8f8dc11d4..ae4893bcac 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index 66538d80b8..34ced88d78 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index b8f8dc11d4..ae4893bcac 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"wYA6EgBA,EAAYC,EAASC,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEM,KAAMC,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BV,EAAEU,OAAOC,UAAY,WAAa,OAAOC,OAAUZ,EACvJ,SAASO,EAAKM,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIlB,EAAG,MAAM,IAAImB,UAAU,mCAC3B,KAAOf,GAAG,IACN,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARgB,EAAG,GAASjB,EAAU,OAAIiB,EAAG,GAAKjB,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEkB,KAAKnB,GAAI,GAAKA,EAAEQ,SAAWP,EAAIA,EAAEkB,KAAKnB,EAAGiB,EAAG,KAAKG,KAAM,OAAOnB,EAE3J,OADID,EAAI,EAAGC,IAAGgB,EAAK,CAAS,EAARA,EAAG,GAAQhB,EAAEoB,QACzBJ,EAAG,IACP,KAAK,EAAG,KAAK,EAAGhB,EAAIgB,EAAI,MACxB,KAAK,EAAc,OAAXd,EAAEC,QAAgB,CAAEiB,MAAOJ,EAAG,GAAIG,MAAM,GAChD,KAAK,EAAGjB,EAAEC,QAASJ,EAAIiB,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKd,EAAEI,IAAIe,MAAOnB,EAAEG,KAAKgB,MAAO,SACxC,QACI,KAAMrB,EAAIE,EAAEG,MAAML,EAAIA,EAAEsB,OAAS,GAAKtB,EAAEA,EAAEsB,OAAS,KAAkB,IAAVN,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEd,EAAI,EAAG,SACjG,GAAc,IAAVc,EAAG,MAAchB,GAAMgB,EAAG,GAAKhB,EAAE,IAAMgB,EAAG,GAAKhB,EAAE,IAAM,CAAEE,EAAEC,MAAQa,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYd,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIgB,EAAI,MAC7D,GAAIhB,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIiB,KAAKP,GAAK,MACvDhB,EAAE,IAAIE,EAAEI,IAAIe,MAChBnB,EAAEG,KAAKgB,MAAO,SAEtBL,EAAKnB,EAAKqB,KAAKtB,EAASM,GAC1B,MAAOsB,GAAKR,EAAK,CAAC,EAAGQ,GAAIzB,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARgB,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEI,MAAOJ,EAAG,GAAKA,EAAG,QAAK,EAAQG,MAAM,GArB9BM,CAAK,CAACX,EAAGC,MAyBhCW,OAAOC,gBAwBpBC,EAAOC,EAAGf,GACtB,IAAIgB,EAAsB,mBAAXnB,QAAyBkB,EAAElB,OAAOC,UACjD,IAAKkB,EAAG,OAAOD,EACf,IAAmBE,EAAYP,EAA3BQ,EAAIF,EAAEZ,KAAKW,GAAOI,EAAK,GAC3B,IACI,WAAc,IAANnB,GAAgBA,KAAM,MAAQiB,EAAIC,EAAEzB,QAAQY,MAAMc,EAAGV,KAAKQ,EAAEX,OAExE,MAAOc,GAASV,EAAI,CAAEU,MAAOA,WAEzB,IACQH,IAAMA,EAAEZ,OAASW,EAAIE,EAAU,SAAIF,EAAEZ,KAAKc,WAExC,GAAIR,EAAG,MAAMA,EAAEU,OAE7B,OAAOD,WAGKE,IACZ,IAAK,IAAIF,EAAK,GAAID,EAAI,EAAGA,EAAII,UAAUd,OAAQU,IAC3CC,EAAKA,EAAGI,OAAOT,EAAOQ,UAAUJ,KACpC,OAAOC,EA8CcP,OAAOC,aC5L9B,SAA4BP,GAAAP,KAAAO,MAAAA,gBAG9B,SAAAkB,IAGUzB,KAAA0B,KAAO,SAEfb,OAAAc,eAAIF,EAAAG,UAAA,OAAI,KAAR,WACE,OAAO5B,KAAK6B,uCAEdhB,OAAAc,eAAIF,EAAAG,UAAA,OAAI,KAAR,WACE,OAAO5B,KAAK8B,sCAEdjB,OAAAc,eAAIF,EAAAG,UAAA,SAAM,KAAV,WACE,OAAO5B,KAAK0B,sCAGND,EAAAG,UAAAG,OAAA,SACNxB,EACAyB,EACAC,GAEA,IAAKD,EAAc,OAAOhC,KAAKkC,QAAQ3B,GAEvC,IAAK0B,EAAU,OAAOjC,KAAKmC,QAAQ5B,GAEnC,IAAM6B,EAAO,IAAIC,EAAS9B,GAQ1B,OAPA6B,EAAKE,SAAWN,EAChBA,EAAatC,KAAO0C,EACpBA,EAAK1C,KAAOuC,EACZA,EAASK,SAAWF,EAEpBpC,KAAK0B,OAEEU,GAGDX,EAAAG,UAAAW,WAAA,SACNC,EACAR,EACAC,GAEA,IAAKO,EAAO/B,OAAQ,MAAO,GAE3B,IAAKuB,EAAc,OAAOhC,KAAKyC,YAAYD,GAE3C,IAAKP,EAAU,OAAOjC,KAAK0C,YAAYF,GAEvC,IAAMG,EAAO,IAAIlB,EASjB,OARAkB,EAAKD,YAAYF,GACjBG,EAAKd,MAAOS,SAAWN,EACvBA,EAAatC,KAAOiD,EAAKd,MACzBc,EAAKb,KAAMpC,KAAOuC,EAClBA,EAASK,SAAWK,EAAKb,KAEzB9B,KAAK0B,MAAQc,EAAO/B,OAEbkC,EAAKC,eAGNnB,EAAAG,UAAAiB,OAAA,SAAOT,GACb,OAAKA,EAAKE,SAELF,EAAK1C,MAEV0C,EAAKE,SAAS5C,KAAO0C,EAAK1C,KAC1B0C,EAAK1C,KAAK4C,SAAWF,EAAKE,SAE1BtC,KAAK0B,OAEEU,GAPgBpC,KAAK8C,WAFD9C,KAAK+C,YAYlCtB,EAAAG,UAAAoB,IAAA,SAAIzC,GAAJ,IAAA0C,EAAAjD,KACE,MAAO,CACLkD,MAAO,qBAACC,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACN,OAAAC,EAAAJ,EAAKK,UAASjD,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAM1C,GAAU4C,KACrCK,OAAQ,qBAACL,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACP,OAAAC,EAAAJ,EAAKQ,WAAUpD,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAM1C,GAAU4C,KACtCO,QAAS,SAACC,GAAqB,OAAAV,EAAKW,WAAWrD,EAAOoD,IACtDE,KAAM,WAAM,OAAAZ,EAAKf,QAAQ3B,IACzBuD,KAAM,WAAM,OAAAb,EAAKd,QAAQ5B,MAI7BkB,EAAAG,UAAAmC,QAAA,SAAQvB,GAAR,IAAAS,EAAAjD,KACE,MAAO,CACLkD,MAAO,qBAACC,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACN,OAAAC,EAAAJ,EAAKe,cAAa3D,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAMT,GAAWW,KAC1CK,OAAQ,qBAACL,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACP,OAAAC,EAAAJ,EAAKgB,eAAc5D,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAMT,GAAWW,KAC3CO,QAAS,SAACC,GAAqB,OAAAV,EAAKiB,eAAe1B,EAAQmB,IAC3DE,KAAM,WAAM,OAAAZ,EAAKR,YAAYD,IAC7BsB,KAAM,WAAM,OAAAb,EAAKP,YAAYF,MAMjCf,EAAAG,UAAA0B,SAAA,SAAS/C,EAAU4D,EAAoBC,QAAA,IAAAA,IAAAA,EAAAC,GACrC,IAAM/B,EAAWtC,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAO4D,MAEzD,OAAO7B,EAAWtC,KAAK+B,OAAOxB,EAAO+B,EAAUA,EAAS5C,MAAQM,KAAKmC,QAAQ5B,IAK/EkB,EAAAG,UAAA6B,UAAA,SAAUlD,EAAUgE,EAAgBH,QAAA,IAAAA,IAAAA,EAAAC,GAClC,IAAM3E,EAAOM,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOgE,MAErD,OAAO7E,EAAOM,KAAK+B,OAAOxB,EAAOb,EAAK4C,SAAU5C,GAAQM,KAAKkC,QAAQ3B,IAGvEkB,EAAAG,UAAAgC,WAAA,SAAWrD,EAAUoD,GACnB,GAAIA,EAAW,EAAGA,GAAY3D,KAAK0B,UAC9B,GAAIiC,GAAY3D,KAAK0B,KAAM,OAAO1B,KAAKmC,QAAQ5B,GAEpD,GAAIoD,GAAY,EAAG,OAAO3D,KAAKkC,QAAQ3B,GAEvC,IAAMb,EAAOM,KAAKwE,IAAIb,GAEtB,OAAO3D,KAAK+B,OAAOxB,EAAOb,EAAK4C,SAAU5C,IAG3C+B,EAAAG,UAAAM,QAAA,SAAQ3B,GACN,IAAM6B,EAAO,IAAIC,EAAS9B,GAU1B,OARA6B,EAAK1C,KAAOM,KAAK6B,MAEb7B,KAAK6B,MAAO7B,KAAK6B,MAAMS,SAAWF,EACjCpC,KAAK8B,KAAOM,EAEjBpC,KAAK6B,MAAQO,EACbpC,KAAK0B,OAEEU,GAGTX,EAAAG,UAAAO,QAAA,SAAQ5B,GACN,IAAM6B,EAAO,IAAIC,EAAS9B,GAa1B,OAXIP,KAAK6B,OACPO,EAAKE,SAAWtC,KAAK8B,KACrB9B,KAAK8B,KAAMpC,KAAO0C,EAClBpC,KAAK8B,KAAOM,IAEZpC,KAAK6B,MAAQO,EACbpC,KAAK8B,KAAOM,GAGdpC,KAAK0B,OAEEU,GAKTX,EAAAG,UAAAoC,aAAA,SACExB,EACA2B,EACAC,QAAA,IAAAA,IAAAA,EAAAC,GAEA,IAAM/B,EAAWtC,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAO4D,MAEzD,OAAO7B,EAAWtC,KAAKuC,WAAWC,EAAQF,EAAUA,EAAS5C,MAAQM,KAAK0C,YAAYF,IAKxFf,EAAAG,UAAAqC,cAAA,SACEzB,EACA+B,EACAH,QAAA,IAAAA,IAAAA,EAAAC,GAEA,IAAM3E,EAAOM,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOgE,MAErD,OAAO7E,EAAOM,KAAKuC,WAAWC,EAAQ9C,EAAK4C,SAAU5C,GAAQM,KAAKyC,YAAYD,IAGhFf,EAAAG,UAAAsC,eAAA,SAAe1B,EAAamB,GAG1B,GAFIA,EAAW,IAAGA,GAAY3D,KAAK0B,MAE/BiC,GAAY,EAAG,OAAO3D,KAAKyC,YAAYD,GAE3C,GAAImB,GAAY3D,KAAK0B,KAAM,OAAO1B,KAAK0C,YAAYF,GAEnD,IAAM9C,EAAOM,KAAKwE,IAAIb,GAEtB,OAAO3D,KAAKuC,WAAWC,EAAQ9C,EAAK4C,SAAU5C,IAGhD+B,EAAAG,UAAAa,YAAA,SAAYD,GAAZ,IAAAS,EAAAjD,KACE,OAAOwC,EAAOiC,aAA2B,SAACC,EAAOnE,GAE/C,OADAmE,EAAMC,QAAQ1B,EAAKf,QAAQ3B,IACpBmE,IACN,KAGLjD,EAAAG,UAAAc,YAAA,SAAYF,GAAZ,IAAAS,EAAAjD,KACE,OAAOwC,EAAOoC,KAAI,SAAArE,GAAS,OAAA0C,EAAKd,QAAQ5B,OAG1CkB,EAAAG,UAAAiD,KAAA,WAAA,IAAA5B,EAAAjD,KACE,MAAO,CACL0D,QAAS,SAACC,GAAqB,OAAAV,EAAK6B,YAAYnB,IAChDoB,QAAS,eAAC,IAAA5B,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACR,OAAAH,EAAK+B,YAAYzB,MAAMN,EAAME,IAC/B8B,WAAY,eAAC,IAAA9B,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACX,OAAAH,EAAKiC,eAAe3B,MAAMN,EAAME,IAClCU,KAAM,WAAM,OAAAZ,EAAKF,YACjBe,KAAM,WAAM,OAAAb,EAAKH,cAIrBrB,EAAAG,UAAAuD,SAAA,SAASC,GAAT,IAAAnC,EAAAjD,KACE,MAAO,CACL0D,QAAS,SAACC,GAAqB,OAAAV,EAAKoC,gBAAgBD,EAAOzB,IAC3DE,KAAM,WAAM,OAAAZ,EAAKqC,aAAaF,IAC9BtB,KAAM,WAAM,OAAAb,EAAKsC,aAAaH,MAIlC3D,EAAAG,UAAAkD,YAAA,SAAYnB,GACNA,EAAW,IAAGA,GAAY3D,KAAK0B,MAEnC,IAAM8D,EAAUxF,KAAKwE,IAAIb,GAEzB,OAAO6B,EAAUxF,KAAK6C,OAAO2C,QAAWC,GAK1ChE,EAAAG,UAAAoD,YAAA,SAAYzE,EAAY6D,QAAA,IAAAA,IAAAA,EAAAC,GACtB,IAAMV,EAAW3D,KAAK0F,WAAU,SAAAtD,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOA,MAE9D,OAAOoD,EAAW,OAAI8B,EAAYzF,KAAK8E,YAAYnB,IAKrDlC,EAAAG,UAAAsD,eAAA,SAAe3E,EAAY6D,QAAA,IAAAA,IAAAA,EAAAC,GAGzB,IAFA,IAAMsB,EAAyB,GAEtBH,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAC9E0E,EAAUoB,EAAQjF,MAAOA,IAC3BoF,EAAQjF,KAAKV,KAAK8E,YAAYnB,EAAWgC,EAAQlF,SAIrD,OAAOkF,GAGTlE,EAAAG,UAAAmB,SAAA,WACE,IAAMc,EAAO7D,KAAK6B,MAElB,GAAIgC,EAQF,OAPA7D,KAAK6B,MAAQgC,EAAKnE,KAEdM,KAAK6B,MAAO7B,KAAK6B,MAAMS,cAAWmD,EACjCzF,KAAK8B,UAAO2D,EAEjBzF,KAAK0B,OAEEmC,GAMXpC,EAAAG,UAAAkB,SAAA,WACE,IAAMgB,EAAO9D,KAAK8B,KAElB,GAAIgC,EAQF,OAPA9D,KAAK8B,KAAOgC,EAAKxB,SAEbtC,KAAK8B,KAAM9B,KAAK8B,KAAKpC,UAAO+F,EAC3BzF,KAAK6B,WAAQ4D,EAElBzF,KAAK0B,OAEEoC,GAMXrC,EAAAG,UAAAyD,gBAAA,SAAgBD,EAAezB,GAC7B,GAAIyB,GAAS,EAAG,MAAO,GAEvB,GAAIzB,EAAW,EAAGA,EAAWiC,KAAKC,IAAIlC,EAAW3D,KAAK0B,KAAM,QACvD,GAAIiC,GAAY3D,KAAK0B,KAAM,MAAO,GAEvC0D,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,KAAOiC,GAIpC,IAFA,IAAMgC,EAAyB,GAExBP,KAAS,CACd,IAAMI,EAAUxF,KAAKwE,IAAIb,GACzBgC,EAAQjF,KAAKV,KAAK6C,OAAO2C,IAG3B,OAAOG,GAGTlE,EAAAG,UAAA0D,aAAA,SAAaF,GACX,GAAIA,GAAS,EAAG,MAAO,GAEvBA,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,MAI7B,IAFA,IAAMiE,EAAyB,GAExBP,KAASO,EAAQhB,QAAQ3E,KAAK+C,YAErC,OAAO4C,GAGTlE,EAAAG,UAAA2D,aAAA,SAAaH,GACX,GAAIA,GAAS,EAAG,MAAO,GAEvBA,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,MAI7B,IAFA,IAAMiE,EAAyB,GAExBP,KAASO,EAAQjF,KAAKV,KAAK8C,YAElC,OAAO6C,GAGTlE,EAAAG,UAAA0C,KAAA,SAAKyB,GACH,IAAK,IAAIP,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAClF,GAAIqG,EAAUP,EAAS7B,EAAU3D,MAAO,OAAOwF,GAMnD/D,EAAAG,UAAA8D,UAAA,SAAUK,GACR,IAAK,IAAIP,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAClF,GAAIqG,EAAUP,EAAS7B,EAAU3D,MAAO,OAAO2D,EAGjD,OAAQ,GAGVlC,EAAAG,UAAAoE,QAAA,SAAqBC,GACnB,IAAK,IAAI7D,EAAOpC,KAAK6B,MAAO8B,EAAW,EAAGvB,EAAMuB,IAAYvB,EAAOA,EAAK1C,KACtEuG,EAAW7D,EAAMuB,EAAU3D,OAI/ByB,EAAAG,UAAA4C,IAAA,SAAIb,GACF,OAAO3D,KAAKsE,MAAK,SAACjF,EAAG6G,GAAU,OAAAvC,IAAauC,MAK9CzE,EAAAG,UAAAuE,QAAA,SAAQ5F,EAAY6D,GAClB,YADkB,IAAAA,IAAAA,EAAAC,GACXrE,KAAK0F,WAAU,SAAAtD,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOA,OAGtDkB,EAAAG,UAAAwE,QAAA,WACE,IAAMC,EAAQ,IAAIC,MAAMtG,KAAK0B,MAI7B,OAFA1B,KAAKgG,SAAQ,SAAC5D,EAAM8D,GAAU,OAACG,EAAMH,GAAU9D,EAAK7B,SAE7C8F,GAGT5E,EAAAG,UAAAgB,YAAA,WACE,IAAMyD,EAAQ,IAAIC,MAAMtG,KAAK0B,MAI7B,OAFA1B,KAAKgG,SAAQ,SAAC5D,EAAM8D,GAAU,OAACG,EAAMH,GAAU9D,KAExCiE,GAGT5E,EAAAG,UAAA2E,SAAA,SAASC,GACP,YADO,IAAAA,IAAAA,EAA4BC,KAAKC,WACjC1G,KAAKoG,UACTxB,KAAI,SAAArE,GAAS,OAAAiG,EAASjG,MACtBoG,KAAK,UAITlF,EAAAG,UAAC9B,OAAOC,UAAT,mEACWqC,EAAOpC,KAAK6B,MAAkB,0BAAGO,EACxC,CAAA,EAAMA,EAAK7B,OADiC,CAAA,EAAA,UAC5C8C,EAAA9D,+BAD0D6C,EAAOA,EAAK1C","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index a771f5d7c2..032e7504c1 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index 2ece95d962..64eaeb6c7e 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4", - "@abp/docs": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0", + "@abp/docs": "^3.1.0" } } diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index 19dc607f8a..62fb7291c7 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,45 +2,45 @@ # yarn lockfile v1 -"@abp/anchor-js@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.1.0-rc.4.tgz#29bd7c04c7f71c4e3caf8e7ea4215d765bcb3301" - integrity sha512-mAQMbKWDM8l8JLElITn+sYBkuAVOGsAhZXyL7B5wjBJEmsn4p+8tx060PnciUmSV3FL9TSD3UJkVL0CBdrYENg== +"@abp/anchor-js@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.1.0.tgz#ef19fb00dee826f7ec13a17d4ff8917b8a7ad3d8" + integrity sha512-L4Oow3fk7AoiBxEXhGY2C9aYyuC0QYWMrXVbllWfFKZVwItErI3ItNQjgVGOAk2k5D8ahEYEtp+KnlZm6ROW2Q== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" anchor-js "^4.2.2" -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -49,180 +49,180 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/clipboard@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0-rc.4.tgz#b095bab123d9035cdfb32599a64b9381f6feba86" - integrity sha512-Q5UrZXIcXIfkuh1iVv23da2aVsOew/Fz32NlPQKhHczQfC2+/x1XlWHxbc5CyvVVxXusZJt/wqjSlM7oQGLqFg== +"@abp/clipboard@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.1.0.tgz#3d994bee312beb3f4977e734a2e4da98b8617279" + integrity sha512-HE9X86G471eOJYrVEM9NIJFLjzvfiW0vtqj4gGjhrwAPin2p44Jby5r8UGOKFY1wr/qZQbbuwmhVih78maDwIA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" clipboard "^2.0.6" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/docs@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.1.0-rc.4.tgz#34281484ffd633c97f465b4b0e1ac49c8c39d0d4" - integrity sha512-DdOl4GiXR6JbIgVae0tlgQQQoUosnNS7WK28BTM9662IMyPh1I4TYc/WLfoANXWDKA024Hqx9b6aIS5YHFj/uQ== +"@abp/docs@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.1.0.tgz#7a36d134de0c722e52c9096245cf3c45cc8a113a" + integrity sha512-qbLB4l3aIEqYYEpKGdb89wk2CaAJJuL2Ww0psPwsIJjDFjxOveBUwzATpQ7rKxM7i7gxQCKXbaTDYi404FI+ZA== dependencies: - "@abp/anchor-js" "~3.1.0-rc.4" - "@abp/clipboard" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/popper.js" "~3.1.0-rc.4" - "@abp/prismjs" "~3.1.0-rc.4" + "@abp/anchor-js" "~3.1.0" + "@abp/clipboard" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/popper.js" "~3.1.0" + "@abp/prismjs" "~3.1.0" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/popper.js@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.1.0-rc.4.tgz#44be628f539b0d2a8a4d0c16eba9a977301931ae" - integrity sha512-SinHKulmRZLwl4UVQuz0TrFp6f4aBMFBPmCNlztKTkTsDESGnoa4UaQ84xj5gbyoPa7ytHRTQIxa6dDEI2CCow== +"@abp/popper.js@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.1.0.tgz#d8b2e7fc6ec3e080f225d76e02909da682b9592b" + integrity sha512-4dUR6aPeZS+VQi1ByG/Rgo9mKD+vP38Tq0f41//EDu8xqvnl7JYNaCEFZzbOBcDuSUC+akGJrYWjCbJ0vRJKXw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" popper.js "^1.16.0" -"@abp/prismjs@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0-rc.4.tgz#8fe68b4b96f7938e09aecfcd56bf9c2fa5f2fe4d" - integrity sha512-8WO9nk4Jw6kKGkMaXTO3DqljVxKVz55kMFrKcdxtpLRZ0LOlqQn7VlV8tmFRn0K85xXD0lWU4g/C2+G+wiBoqw== +"@abp/prismjs@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.1.0.tgz#11dee74a803c4d79b0a41ed0c3a4f1946c44968a" + integrity sha512-SJ3bWT9UXLSGKMiNKyJeRt/3WjD4qXc4DuEAD2RxRT+tBDd17FG18VTfjLMPcSGtTt+zTK2+tbcxZN5hUfVW9g== dependencies: - "@abp/clipboard" "~3.1.0-rc.4" - "@abp/core" "~3.1.0-rc.4" + "@abp/clipboard" "~3.1.0" + "@abp/core" "~3.1.0" prismjs "^1.20.0" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/npm/lerna.json b/npm/lerna.json index 96089bbbad..7055076496 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "packages": [ "packs/*" ], diff --git a/npm/ng-packs/lerna.version.json b/npm/ng-packs/lerna.version.json index a0103e95c8..24308035e9 100644 --- a/npm/ng-packs/lerna.version.json +++ b/npm/ng-packs/lerna.version.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "packages": [ "packages/*" ], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 7c1514e29f..1c3aaf5fef 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -25,17 +25,17 @@ "postinstall": "npm run compile:ivy" }, "devDependencies": { - "@abp/ng.account": "~3.1.0-rc.4", - "@abp/ng.core": "~3.1.0-rc.4", - "@abp/ng.feature-management": "~3.1.0-rc.4", - "@abp/ng.identity": "~3.1.0-rc.4", - "@abp/ng.permission-management": "~3.1.0-rc.4", - "@abp/ng.schematics": "~3.1.0-rc.4", - "@abp/ng.setting-management": "~3.1.0-rc.4", - "@abp/ng.tenant-management": "~3.1.0-rc.4", - "@abp/ng.theme.basic": "~3.1.0-rc.4", - "@abp/ng.theme.shared": "~3.1.0-rc.4", - "@abp/utils": "^3.1.0-rc.4", + "@abp/ng.account": "~3.1.0", + "@abp/ng.core": "~3.1.0", + "@abp/ng.feature-management": "~3.1.0", + "@abp/ng.identity": "~3.1.0", + "@abp/ng.permission-management": "~3.1.0", + "@abp/ng.schematics": "~3.1.0", + "@abp/ng.setting-management": "~3.1.0", + "@abp/ng.tenant-management": "~3.1.0", + "@abp/ng.theme.basic": "~3.1.0", + "@abp/ng.theme.shared": "~3.1.0", + "@abp/utils": "^3.1.0", "@angular-builders/jest": "^10.0.0", "@angular-devkit/build-angular": "~0.1000.6", "@angular-devkit/build-ng-packagr": "~0.1000.6", diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json index c3c2a96d18..11580f385a 100644 --- a/npm/ng-packs/packages/account/package.json +++ b/npm/ng-packs/packages/account/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.account", - "version": "3.1.0-rc.4", + "version": "3.1.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.4", + "@abp/ng.theme.shared": "~3.1.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json index 219b696685..cae42678fc 100644 --- a/npm/ng-packs/packages/components/package.json +++ b/npm/ng-packs/packages/components/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.components", - "version": "3.1.0-rc.4", + "version": "3.1.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": ">=3.1.0-rc.4", + "@abp/ng.core": ">=3.1.0", "@ng-bootstrap/ng-bootstrap": ">=6.0.0" }, "dependencies": { diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index 5e425c5994..06eeb447a5 100644 --- a/npm/ng-packs/packages/core/package.json +++ b/npm/ng-packs/packages/core/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.core", - "version": "3.1.0-rc.4", + "version": "3.1.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/utils": "^3.1.0-rc.4", + "@abp/utils": "^3.1.0", "@angular/localize": "~10.0.10", "@ngxs/router-plugin": "^3.6.2", "@ngxs/storage-plugin": "^3.6.2", diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index c7b90fb0bb..ce8a8622fb 100644 --- a/npm/ng-packs/packages/feature-management/package.json +++ b/npm/ng-packs/packages/feature-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.feature-management", - "version": "3.1.0-rc.4", + "version": "3.1.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.4", + "@abp/ng.theme.shared": "~3.1.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index 3cc0e1c4c0..632b8a20b4 100644 --- a/npm/ng-packs/packages/identity/package.json +++ b/npm/ng-packs/packages/identity/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.identity", - "version": "3.1.0-rc.4", + "version": "3.1.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.permission-management": "~3.1.0-rc.4", - "@abp/ng.theme.shared": "~3.1.0-rc.4", + "@abp/ng.permission-management": "~3.1.0", + "@abp/ng.theme.shared": "~3.1.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index 791835d527..bbc69f7ad7 100644 --- a/npm/ng-packs/packages/permission-management/package.json +++ b/npm/ng-packs/packages/permission-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.permission-management", - "version": "3.1.0-rc.4", + "version": "3.1.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.4", + "@abp/ng.theme.shared": "~3.1.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index 350a041118..3b77e8560d 100644 --- a/npm/ng-packs/packages/schematics/package.json +++ b/npm/ng-packs/packages/schematics/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.schematics", - "version": "3.1.0-rc.4", + "version": "3.1.0", "description": "Schematics that works with ABP Backend", "keywords": [ "schematics" diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index fc9b83ff67..5bfa6cb1d2 100644 --- a/npm/ng-packs/packages/setting-management/package.json +++ b/npm/ng-packs/packages/setting-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.setting-management", - "version": "3.1.0-rc.4", + "version": "3.1.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.4", + "@abp/ng.theme.shared": "~3.1.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index 9b7257ffec..df09c1cd37 100644 --- a/npm/ng-packs/packages/tenant-management/package.json +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.tenant-management", - "version": "3.1.0-rc.4", + "version": "3.1.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.feature-management": "~3.1.0-rc.4", - "@abp/ng.theme.shared": "~3.1.0-rc.4", + "@abp/ng.feature-management": "~3.1.0", + "@abp/ng.theme.shared": "~3.1.0", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json index 73c3f7de4d..3e53c79cbf 100644 --- a/npm/ng-packs/packages/theme-basic/package.json +++ b/npm/ng-packs/packages/theme-basic/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.basic", - "version": "3.1.0-rc.4", + "version": "3.1.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~3.1.0-rc.4", + "@abp/ng.theme.shared": "~3.1.0", "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 a648985334..e9976aa5e9 100644 --- a/npm/ng-packs/packages/theme-shared/package.json +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.shared", - "version": "3.1.0-rc.4", + "version": "3.1.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~3.1.0-rc.4", + "@abp/ng.core": "~3.1.0", "@fortawesome/fontawesome-free": "^5.14.0", "@ng-bootstrap/ng-bootstrap": "^7.0.0", "@ngx-validate/core": "^0.0.11", diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index f077d92e0a..1508bdb84b 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "anchor-js": "^4.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index 990ba37ef5..e8f9945f2b 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index 6e9daec192..ce8331444e 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json @@ -1,24 +1,24 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "~3.1.0-rc.4", - "@abp/bootstrap": "~3.1.0-rc.4", - "@abp/bootstrap-datepicker": "~3.1.0-rc.4", - "@abp/datatables.net-bs4": "~3.1.0-rc.4", - "@abp/font-awesome": "~3.1.0-rc.4", - "@abp/jquery-form": "~3.1.0-rc.4", - "@abp/jquery-validation-unobtrusive": "~3.1.0-rc.4", - "@abp/lodash": "~3.1.0-rc.4", - "@abp/luxon": "~3.1.0-rc.4", - "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.4", - "@abp/select2": "~3.1.0-rc.4", - "@abp/sweetalert": "~3.1.0-rc.4", - "@abp/timeago": "~3.1.0-rc.4", - "@abp/toastr": "~3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui": "~3.1.0", + "@abp/bootstrap": "~3.1.0", + "@abp/bootstrap-datepicker": "~3.1.0", + "@abp/datatables.net-bs4": "~3.1.0", + "@abp/font-awesome": "~3.1.0", + "@abp/jquery-form": "~3.1.0", + "@abp/jquery-validation-unobtrusive": "~3.1.0", + "@abp/lodash": "~3.1.0", + "@abp/luxon": "~3.1.0", + "@abp/malihu-custom-scrollbar-plugin": "~3.1.0", + "@abp/select2": "~3.1.0", + "@abp/sweetalert": "~3.1.0", + "@abp/timeago": "~3.1.0", + "@abp/toastr": "~3.1.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index 220ad17a69..76e6f2e001 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/aspnetcore.mvc.ui", "publishConfig": { "access": "public" diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index a2a48e5ba2..eebc5579c6 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,14 +1,14 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0-rc.4", - "@abp/owl.carousel": "~3.1.0-rc.4", - "@abp/prismjs": "~3.1.0-rc.4", - "@abp/tui-editor": "~3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.shared": "~3.1.0", + "@abp/owl.carousel": "~3.1.0", + "@abp/prismjs": "~3.1.0", + "@abp/tui-editor": "~3.1.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index b3ea4aad9a..a49933b2d4 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/bootstrap-datepicker", "publishConfig": { "access": "public" diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index f5a03c226e..8e762f27cd 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/bootstrap", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "bootstrap": "^4.5.0", "bootstrap-v4-rtl": "4.4.1-2" }, diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index 8e8f966d96..ee2e8b4567 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/chart.js", "publishConfig": { "access": "public" diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index 41cd460dfe..13f8df28df 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "clipboard": "^2.0.6" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index 7dc04efcc3..ee1a4b1bfd 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "codemirror": "^5.54.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index e32507abd0..070c09f328 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/core", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/utils": "^3.1.0-rc.4" + "@abp/utils": "^3.1.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index 6647bfc145..26d4eb840d 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/datatables.net-bs4", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "~3.1.0-rc.4", + "@abp/datatables.net": "~3.1.0", "datatables.net-bs4": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index 0685f73e6f..e9a1277bdf 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/datatables.net", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.4", + "@abp/jquery": "~3.1.0", "datatables.net": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index 1eb3628ea3..876a80e8c9 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "~3.1.0-rc.4", - "@abp/clipboard": "~3.1.0-rc.4", - "@abp/malihu-custom-scrollbar-plugin": "~3.1.0-rc.4", - "@abp/popper.js": "~3.1.0-rc.4", - "@abp/prismjs": "~3.1.0-rc.4" + "@abp/anchor-js": "~3.1.0", + "@abp/clipboard": "~3.1.0", + "@abp/malihu-custom-scrollbar-plugin": "~3.1.0", + "@abp/popper.js": "~3.1.0", + "@abp/prismjs": "~3.1.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index 828061f321..bb19b34390 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index 3f2679411a..72f5d47d06 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/font-awesome", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "@fortawesome/fontawesome-free": "^5.13.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index 46db4e6a44..b8e4dcab1f 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4" + "@abp/core": "~3.1.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index 6a7226cbb8..b2b1920ac4 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/jquery-form", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.4", + "@abp/jquery": "~3.1.0", "jquery-form": "^4.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index bff4e0176f..f05ee33449 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/jquery-validation-unobtrusive", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery-validation": "~3.1.0-rc.4", + "@abp/jquery-validation": "~3.1.0", "jquery-validation-unobtrusive": "^3.2.11" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index dca7ce8b37..ec5b0d4df5 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/jquery-validation", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.4", + "@abp/jquery": "~3.1.0", "jquery-validation": "^1.19.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index 98256daabc..a0d01fb534 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/jquery", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "jquery": "~3.5.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json index d4033f7055..2dd63959d6 100644 --- a/npm/packs/jstree/package.json +++ b/npm/packs/jstree/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/jstree", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.4", + "@abp/jquery": "~3.1.0", "jstree": "^3.3.9" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index 31a8074d96..1a2ddddfcb 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/lodash", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "lodash": "^4.17.15" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index 6e12bad596..a5685b3f2a 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/luxon", "publishConfig": { "access": "public" diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index 6cbc36c53f..5db7e457af 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/malihu-custom-scrollbar-plugin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "malihu-custom-scrollbar-plugin": "^3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index 88a68b8208..d267d2dd4d 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "markdown-it": "^11.0.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index 34ac09e8bc..b838133a59 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "owl.carousel": "^2.3.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index 0b5eb26c7e..12f6d5c8cf 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "popper.js": "^1.16.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 5e886e9287..d3649b8ff3 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~3.1.0-rc.4", - "@abp/core": "~3.1.0-rc.4", + "@abp/clipboard": "~3.1.0", + "@abp/core": "~3.1.0", "prismjs": "^1.20.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index daa561e1e2..6ebcf8657a 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/select2", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "select2": "^4.0.13" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json index 6b4850bc2b..42e42c0a00 100644 --- a/npm/packs/signalr/package.json +++ b/npm/packs/signalr/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/signalr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "@microsoft/signalr": "~3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/sweetalert/package.json b/npm/packs/sweetalert/package.json index 98dab0f5e1..5a86201ceb 100644 --- a/npm/packs/sweetalert/package.json +++ b/npm/packs/sweetalert/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/sweetalert", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "sweetalert": "^2.1.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index 1d4017f307..f485a74847 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/timeago", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.4", + "@abp/jquery": "~3.1.0", "timeago": "^1.6.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index 93f6f78422..f2400c47e5 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/toastr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~3.1.0-rc.4", + "@abp/jquery": "~3.1.0", "toastr": "^2.1.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index 1792b8e950..74dfa64185 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,14 +1,14 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/codemirror": "~3.1.0-rc.4", - "@abp/highlight.js": "~3.1.0-rc.4", - "@abp/jquery": "~3.1.0-rc.4", - "@abp/markdown-it": "~3.1.0-rc.4", + "@abp/codemirror": "~3.1.0", + "@abp/highlight.js": "~3.1.0", + "@abp/jquery": "~3.1.0", + "@abp/markdown-it": "~3.1.0", "tui-editor": "^1.4.10" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json index 88c5700eef..6063e0936e 100644 --- a/npm/packs/uppy/package.json +++ b/npm/packs/uppy/package.json @@ -1,11 +1,11 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/uppy", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~3.1.0-rc.4", + "@abp/core": "~3.1.0", "uppy": "^1.16.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json index 605e443a6b..4edf25af68 100644 --- a/npm/packs/utils/package.json +++ b/npm/packs/utils/package.json @@ -1,6 +1,6 @@ { "name": "@abp/utils", - "version": "3.1.0-rc.4", + "version": "3.1.0", "scripts": { "prepublish": "yarn install --ignore-scripts && node prepublish.js", "ng": "ng", diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json index 432d990088..850891cab5 100644 --- a/npm/packs/virtual-file-explorer/package.json +++ b/npm/packs/virtual-file-explorer/package.json @@ -1,12 +1,12 @@ { - "version": "3.1.0-rc.4", + "version": "3.1.0", "name": "@abp/virtual-file-explorer", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~3.1.0-rc.4", - "@abp/prismjs": "~3.1.0-rc.4" + "@abp/clipboard": "~3.1.0", + "@abp/prismjs": "~3.1.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json index 1edefcdddb..6d08310167 100644 --- a/templates/app/angular/package.json +++ b/templates/app/angular/package.json @@ -12,11 +12,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.1.0-rc.4", - "@abp/ng.identity": "~3.1.0-rc.4", - "@abp/ng.setting-management": "~3.1.0-rc.4", - "@abp/ng.tenant-management": "~3.1.0-rc.4", - "@abp/ng.theme.basic": "~3.1.0-rc.4", + "@abp/ng.account": "~3.1.0", + "@abp/ng.identity": "~3.1.0", + "@abp/ng.setting-management": "~3.1.0", + "@abp/ng.tenant-management": "~3.1.0", + "@abp/ng.theme.basic": "~3.1.0", "@angular/animations": "~10.0.10", "@angular/common": "~10.0.10", "@angular/compiler": "~10.0.10", @@ -30,7 +30,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~3.1.0-rc.4", + "@abp/ng.schematics": "~3.1.0", "@angular-devkit/build-angular": "~0.1000.6", "@angular-devkit/build-ng-packagr": "~0.1000.6", "@angular/cli": "~10.0.6", diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json index b8f8dc11d4..ae4893bcac 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock index 9551cc1509..ea621f9df6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json index 4b220b0935..54a0658921 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"wYA6EgBA,EAAYC,EAASC,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEM,KAAMC,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BV,EAAEU,OAAOC,UAAY,WAAa,OAAOC,OAAUZ,EACvJ,SAASO,EAAKM,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIlB,EAAG,MAAM,IAAImB,UAAU,mCAC3B,KAAOf,GAAG,IACN,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARgB,EAAG,GAASjB,EAAU,OAAIiB,EAAG,GAAKjB,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEkB,KAAKnB,GAAI,GAAKA,EAAEQ,SAAWP,EAAIA,EAAEkB,KAAKnB,EAAGiB,EAAG,KAAKG,KAAM,OAAOnB,EAE3J,OADID,EAAI,EAAGC,IAAGgB,EAAK,CAAS,EAARA,EAAG,GAAQhB,EAAEoB,QACzBJ,EAAG,IACP,KAAK,EAAG,KAAK,EAAGhB,EAAIgB,EAAI,MACxB,KAAK,EAAc,OAAXd,EAAEC,QAAgB,CAAEiB,MAAOJ,EAAG,GAAIG,MAAM,GAChD,KAAK,EAAGjB,EAAEC,QAASJ,EAAIiB,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKd,EAAEI,IAAIe,MAAOnB,EAAEG,KAAKgB,MAAO,SACxC,QACI,KAAMrB,EAAIE,EAAEG,MAAML,EAAIA,EAAEsB,OAAS,GAAKtB,EAAEA,EAAEsB,OAAS,KAAkB,IAAVN,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEd,EAAI,EAAG,SACjG,GAAc,IAAVc,EAAG,MAAchB,GAAMgB,EAAG,GAAKhB,EAAE,IAAMgB,EAAG,GAAKhB,EAAE,IAAM,CAAEE,EAAEC,MAAQa,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYd,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIgB,EAAI,MAC7D,GAAIhB,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIiB,KAAKP,GAAK,MACvDhB,EAAE,IAAIE,EAAEI,IAAIe,MAChBnB,EAAEG,KAAKgB,MAAO,SAEtBL,EAAKnB,EAAKqB,KAAKtB,EAASM,GAC1B,MAAOsB,GAAKR,EAAK,CAAC,EAAGQ,GAAIzB,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARgB,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEI,MAAOJ,EAAG,GAAKA,EAAG,QAAK,EAAQG,MAAM,GArB9BM,CAAK,CAACX,EAAGC,MAyBhCW,OAAOC,gBAwBpBC,EAAOC,EAAGf,GACtB,IAAIgB,EAAsB,mBAAXnB,QAAyBkB,EAAElB,OAAOC,UACjD,IAAKkB,EAAG,OAAOD,EACf,IAAmBE,EAAYP,EAA3BQ,EAAIF,EAAEZ,KAAKW,GAAOI,EAAK,GAC3B,IACI,WAAc,IAANnB,GAAgBA,KAAM,MAAQiB,EAAIC,EAAEzB,QAAQY,MAAMc,EAAGV,KAAKQ,EAAEX,OAExE,MAAOc,GAASV,EAAI,CAAEU,MAAOA,WAEzB,IACQH,IAAMA,EAAEZ,OAASW,EAAIE,EAAU,SAAIF,EAAEZ,KAAKc,WAExC,GAAIR,EAAG,MAAMA,EAAEU,OAE7B,OAAOD,WAGKE,IACZ,IAAK,IAAIF,EAAK,GAAID,EAAI,EAAGA,EAAII,UAAUd,OAAQU,IAC3CC,EAAKA,EAAGI,OAAOT,EAAOQ,UAAUJ,KACpC,OAAOC,EA8CcP,OAAOC,aC5L9B,SAA4BP,GAAAP,KAAAO,MAAAA,gBAG9B,SAAAkB,IAGUzB,KAAA0B,KAAO,SAEfb,OAAAc,eAAIF,EAAAG,UAAA,OAAI,KAAR,WACE,OAAO5B,KAAK6B,uCAEdhB,OAAAc,eAAIF,EAAAG,UAAA,OAAI,KAAR,WACE,OAAO5B,KAAK8B,sCAEdjB,OAAAc,eAAIF,EAAAG,UAAA,SAAM,KAAV,WACE,OAAO5B,KAAK0B,sCAGND,EAAAG,UAAAG,OAAA,SACNxB,EACAyB,EACAC,GAEA,IAAKD,EAAc,OAAOhC,KAAKkC,QAAQ3B,GAEvC,IAAK0B,EAAU,OAAOjC,KAAKmC,QAAQ5B,GAEnC,IAAM6B,EAAO,IAAIC,EAAS9B,GAQ1B,OAPA6B,EAAKE,SAAWN,EAChBA,EAAatC,KAAO0C,EACpBA,EAAK1C,KAAOuC,EACZA,EAASK,SAAWF,EAEpBpC,KAAK0B,OAEEU,GAGDX,EAAAG,UAAAW,WAAA,SACNC,EACAR,EACAC,GAEA,IAAKO,EAAO/B,OAAQ,MAAO,GAE3B,IAAKuB,EAAc,OAAOhC,KAAKyC,YAAYD,GAE3C,IAAKP,EAAU,OAAOjC,KAAK0C,YAAYF,GAEvC,IAAMG,EAAO,IAAIlB,EASjB,OARAkB,EAAKD,YAAYF,GACjBG,EAAKd,MAAOS,SAAWN,EACvBA,EAAatC,KAAOiD,EAAKd,MACzBc,EAAKb,KAAMpC,KAAOuC,EAClBA,EAASK,SAAWK,EAAKb,KAEzB9B,KAAK0B,MAAQc,EAAO/B,OAEbkC,EAAKC,eAGNnB,EAAAG,UAAAiB,OAAA,SAAOT,GACb,OAAKA,EAAKE,SAELF,EAAK1C,MAEV0C,EAAKE,SAAS5C,KAAO0C,EAAK1C,KAC1B0C,EAAK1C,KAAK4C,SAAWF,EAAKE,SAE1BtC,KAAK0B,OAEEU,GAPgBpC,KAAK8C,WAFD9C,KAAK+C,YAYlCtB,EAAAG,UAAAoB,IAAA,SAAIzC,GAAJ,IAAA0C,EAAAjD,KACE,MAAO,CACLkD,MAAO,qBAACC,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACN,OAAAC,EAAAJ,EAAKK,UAASjD,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAM1C,GAAU4C,KACrCK,OAAQ,qBAACL,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACP,OAAAC,EAAAJ,EAAKQ,WAAUpD,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAM1C,GAAU4C,KACtCO,QAAS,SAACC,GAAqB,OAAAV,EAAKW,WAAWrD,EAAOoD,IACtDE,KAAM,WAAM,OAAAZ,EAAKf,QAAQ3B,IACzBuD,KAAM,WAAM,OAAAb,EAAKd,QAAQ5B,MAI7BkB,EAAAG,UAAAmC,QAAA,SAAQvB,GAAR,IAAAS,EAAAjD,KACE,MAAO,CACLkD,MAAO,qBAACC,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACN,OAAAC,EAAAJ,EAAKe,cAAa3D,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAMT,GAAWW,KAC1CK,OAAQ,qBAACL,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACP,OAAAC,EAAAJ,EAAKgB,eAAc5D,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAMT,GAAWW,KAC3CO,QAAS,SAACC,GAAqB,OAAAV,EAAKiB,eAAe1B,EAAQmB,IAC3DE,KAAM,WAAM,OAAAZ,EAAKR,YAAYD,IAC7BsB,KAAM,WAAM,OAAAb,EAAKP,YAAYF,MAMjCf,EAAAG,UAAA0B,SAAA,SAAS/C,EAAU4D,EAAoBC,QAAA,IAAAA,IAAAA,EAAAC,GACrC,IAAM/B,EAAWtC,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAO4D,MAEzD,OAAO7B,EAAWtC,KAAK+B,OAAOxB,EAAO+B,EAAUA,EAAS5C,MAAQM,KAAKmC,QAAQ5B,IAK/EkB,EAAAG,UAAA6B,UAAA,SAAUlD,EAAUgE,EAAgBH,QAAA,IAAAA,IAAAA,EAAAC,GAClC,IAAM3E,EAAOM,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOgE,MAErD,OAAO7E,EAAOM,KAAK+B,OAAOxB,EAAOb,EAAK4C,SAAU5C,GAAQM,KAAKkC,QAAQ3B,IAGvEkB,EAAAG,UAAAgC,WAAA,SAAWrD,EAAUoD,GACnB,GAAIA,EAAW,EAAGA,GAAY3D,KAAK0B,UAC9B,GAAIiC,GAAY3D,KAAK0B,KAAM,OAAO1B,KAAKmC,QAAQ5B,GAEpD,GAAIoD,GAAY,EAAG,OAAO3D,KAAKkC,QAAQ3B,GAEvC,IAAMb,EAAOM,KAAKwE,IAAIb,GAEtB,OAAO3D,KAAK+B,OAAOxB,EAAOb,EAAK4C,SAAU5C,IAG3C+B,EAAAG,UAAAM,QAAA,SAAQ3B,GACN,IAAM6B,EAAO,IAAIC,EAAS9B,GAU1B,OARA6B,EAAK1C,KAAOM,KAAK6B,MAEb7B,KAAK6B,MAAO7B,KAAK6B,MAAMS,SAAWF,EACjCpC,KAAK8B,KAAOM,EAEjBpC,KAAK6B,MAAQO,EACbpC,KAAK0B,OAEEU,GAGTX,EAAAG,UAAAO,QAAA,SAAQ5B,GACN,IAAM6B,EAAO,IAAIC,EAAS9B,GAa1B,OAXIP,KAAK6B,OACPO,EAAKE,SAAWtC,KAAK8B,KACrB9B,KAAK8B,KAAMpC,KAAO0C,EAClBpC,KAAK8B,KAAOM,IAEZpC,KAAK6B,MAAQO,EACbpC,KAAK8B,KAAOM,GAGdpC,KAAK0B,OAEEU,GAKTX,EAAAG,UAAAoC,aAAA,SACExB,EACA2B,EACAC,QAAA,IAAAA,IAAAA,EAAAC,GAEA,IAAM/B,EAAWtC,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAO4D,MAEzD,OAAO7B,EAAWtC,KAAKuC,WAAWC,EAAQF,EAAUA,EAAS5C,MAAQM,KAAK0C,YAAYF,IAKxFf,EAAAG,UAAAqC,cAAA,SACEzB,EACA+B,EACAH,QAAA,IAAAA,IAAAA,EAAAC,GAEA,IAAM3E,EAAOM,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOgE,MAErD,OAAO7E,EAAOM,KAAKuC,WAAWC,EAAQ9C,EAAK4C,SAAU5C,GAAQM,KAAKyC,YAAYD,IAGhFf,EAAAG,UAAAsC,eAAA,SAAe1B,EAAamB,GAG1B,GAFIA,EAAW,IAAGA,GAAY3D,KAAK0B,MAE/BiC,GAAY,EAAG,OAAO3D,KAAKyC,YAAYD,GAE3C,GAAImB,GAAY3D,KAAK0B,KAAM,OAAO1B,KAAK0C,YAAYF,GAEnD,IAAM9C,EAAOM,KAAKwE,IAAIb,GAEtB,OAAO3D,KAAKuC,WAAWC,EAAQ9C,EAAK4C,SAAU5C,IAGhD+B,EAAAG,UAAAa,YAAA,SAAYD,GAAZ,IAAAS,EAAAjD,KACE,OAAOwC,EAAOiC,aAA2B,SAACC,EAAOnE,GAE/C,OADAmE,EAAMC,QAAQ1B,EAAKf,QAAQ3B,IACpBmE,IACN,KAGLjD,EAAAG,UAAAc,YAAA,SAAYF,GAAZ,IAAAS,EAAAjD,KACE,OAAOwC,EAAOoC,KAAI,SAAArE,GAAS,OAAA0C,EAAKd,QAAQ5B,OAG1CkB,EAAAG,UAAAiD,KAAA,WAAA,IAAA5B,EAAAjD,KACE,MAAO,CACL0D,QAAS,SAACC,GAAqB,OAAAV,EAAK6B,YAAYnB,IAChDoB,QAAS,eAAC,IAAA5B,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACR,OAAAH,EAAK+B,YAAYzB,MAAMN,EAAME,IAC/B8B,WAAY,eAAC,IAAA9B,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACX,OAAAH,EAAKiC,eAAe3B,MAAMN,EAAME,IAClCU,KAAM,WAAM,OAAAZ,EAAKF,YACjBe,KAAM,WAAM,OAAAb,EAAKH,cAIrBrB,EAAAG,UAAAuD,SAAA,SAASC,GAAT,IAAAnC,EAAAjD,KACE,MAAO,CACL0D,QAAS,SAACC,GAAqB,OAAAV,EAAKoC,gBAAgBD,EAAOzB,IAC3DE,KAAM,WAAM,OAAAZ,EAAKqC,aAAaF,IAC9BtB,KAAM,WAAM,OAAAb,EAAKsC,aAAaH,MAIlC3D,EAAAG,UAAAkD,YAAA,SAAYnB,GACNA,EAAW,IAAGA,GAAY3D,KAAK0B,MAEnC,IAAM8D,EAAUxF,KAAKwE,IAAIb,GAEzB,OAAO6B,EAAUxF,KAAK6C,OAAO2C,QAAWC,GAK1ChE,EAAAG,UAAAoD,YAAA,SAAYzE,EAAY6D,QAAA,IAAAA,IAAAA,EAAAC,GACtB,IAAMV,EAAW3D,KAAK0F,WAAU,SAAAtD,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOA,MAE9D,OAAOoD,EAAW,OAAI8B,EAAYzF,KAAK8E,YAAYnB,IAKrDlC,EAAAG,UAAAsD,eAAA,SAAe3E,EAAY6D,QAAA,IAAAA,IAAAA,EAAAC,GAGzB,IAFA,IAAMsB,EAAyB,GAEtBH,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAC9E0E,EAAUoB,EAAQjF,MAAOA,IAC3BoF,EAAQjF,KAAKV,KAAK8E,YAAYnB,EAAWgC,EAAQlF,SAIrD,OAAOkF,GAGTlE,EAAAG,UAAAmB,SAAA,WACE,IAAMc,EAAO7D,KAAK6B,MAElB,GAAIgC,EAQF,OAPA7D,KAAK6B,MAAQgC,EAAKnE,KAEdM,KAAK6B,MAAO7B,KAAK6B,MAAMS,cAAWmD,EACjCzF,KAAK8B,UAAO2D,EAEjBzF,KAAK0B,OAEEmC,GAMXpC,EAAAG,UAAAkB,SAAA,WACE,IAAMgB,EAAO9D,KAAK8B,KAElB,GAAIgC,EAQF,OAPA9D,KAAK8B,KAAOgC,EAAKxB,SAEbtC,KAAK8B,KAAM9B,KAAK8B,KAAKpC,UAAO+F,EAC3BzF,KAAK6B,WAAQ4D,EAElBzF,KAAK0B,OAEEoC,GAMXrC,EAAAG,UAAAyD,gBAAA,SAAgBD,EAAezB,GAC7B,GAAIyB,GAAS,EAAG,MAAO,GAEvB,GAAIzB,EAAW,EAAGA,EAAWiC,KAAKC,IAAIlC,EAAW3D,KAAK0B,KAAM,QACvD,GAAIiC,GAAY3D,KAAK0B,KAAM,MAAO,GAEvC0D,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,KAAOiC,GAIpC,IAFA,IAAMgC,EAAyB,GAExBP,KAAS,CACd,IAAMI,EAAUxF,KAAKwE,IAAIb,GACzBgC,EAAQjF,KAAKV,KAAK6C,OAAO2C,IAG3B,OAAOG,GAGTlE,EAAAG,UAAA0D,aAAA,SAAaF,GACX,GAAIA,GAAS,EAAG,MAAO,GAEvBA,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,MAI7B,IAFA,IAAMiE,EAAyB,GAExBP,KAASO,EAAQhB,QAAQ3E,KAAK+C,YAErC,OAAO4C,GAGTlE,EAAAG,UAAA2D,aAAA,SAAaH,GACX,GAAIA,GAAS,EAAG,MAAO,GAEvBA,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,MAI7B,IAFA,IAAMiE,EAAyB,GAExBP,KAASO,EAAQjF,KAAKV,KAAK8C,YAElC,OAAO6C,GAGTlE,EAAAG,UAAA0C,KAAA,SAAKyB,GACH,IAAK,IAAIP,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAClF,GAAIqG,EAAUP,EAAS7B,EAAU3D,MAAO,OAAOwF,GAMnD/D,EAAAG,UAAA8D,UAAA,SAAUK,GACR,IAAK,IAAIP,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAClF,GAAIqG,EAAUP,EAAS7B,EAAU3D,MAAO,OAAO2D,EAGjD,OAAQ,GAGVlC,EAAAG,UAAAoE,QAAA,SAAqBC,GACnB,IAAK,IAAI7D,EAAOpC,KAAK6B,MAAO8B,EAAW,EAAGvB,EAAMuB,IAAYvB,EAAOA,EAAK1C,KACtEuG,EAAW7D,EAAMuB,EAAU3D,OAI/ByB,EAAAG,UAAA4C,IAAA,SAAIb,GACF,OAAO3D,KAAKsE,MAAK,SAACjF,EAAG6G,GAAU,OAAAvC,IAAauC,MAK9CzE,EAAAG,UAAAuE,QAAA,SAAQ5F,EAAY6D,GAClB,YADkB,IAAAA,IAAAA,EAAAC,GACXrE,KAAK0F,WAAU,SAAAtD,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOA,OAGtDkB,EAAAG,UAAAwE,QAAA,WACE,IAAMC,EAAQ,IAAIC,MAAMtG,KAAK0B,MAI7B,OAFA1B,KAAKgG,SAAQ,SAAC5D,EAAM8D,GAAU,OAACG,EAAMH,GAAU9D,EAAK7B,SAE7C8F,GAGT5E,EAAAG,UAAAgB,YAAA,WACE,IAAMyD,EAAQ,IAAIC,MAAMtG,KAAK0B,MAI7B,OAFA1B,KAAKgG,SAAQ,SAAC5D,EAAM8D,GAAU,OAACG,EAAMH,GAAU9D,KAExCiE,GAGT5E,EAAAG,UAAA2E,SAAA,SAASC,GACP,YADO,IAAAA,IAAAA,EAA4BC,KAAKC,WACjC1G,KAAKoG,UACTxB,KAAI,SAAArE,GAAS,OAAAiG,EAASjG,MACtBoG,KAAK,UAITlF,EAAAG,UAAC9B,OAAOC,UAAT,mEACWqC,EAAOpC,KAAK6B,MAAkB,0BAAGO,EACxC,CAAA,EAAMA,EAAK7B,OADiC,CAAA,EAAA,UAC5C8C,EAAA9D,+BAD0D6C,EAAOA,EAAK1C","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index b4b0ecc72f..7a94d2b9a8 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json index b8f8dc11d4..ae4893bcac 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"wYA6EgBA,EAAYC,EAASC,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEM,KAAMC,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BV,EAAEU,OAAOC,UAAY,WAAa,OAAOC,OAAUZ,EACvJ,SAASO,EAAKM,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIlB,EAAG,MAAM,IAAImB,UAAU,mCAC3B,KAAOf,GAAG,IACN,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARgB,EAAG,GAASjB,EAAU,OAAIiB,EAAG,GAAKjB,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEkB,KAAKnB,GAAI,GAAKA,EAAEQ,SAAWP,EAAIA,EAAEkB,KAAKnB,EAAGiB,EAAG,KAAKG,KAAM,OAAOnB,EAE3J,OADID,EAAI,EAAGC,IAAGgB,EAAK,CAAS,EAARA,EAAG,GAAQhB,EAAEoB,QACzBJ,EAAG,IACP,KAAK,EAAG,KAAK,EAAGhB,EAAIgB,EAAI,MACxB,KAAK,EAAc,OAAXd,EAAEC,QAAgB,CAAEiB,MAAOJ,EAAG,GAAIG,MAAM,GAChD,KAAK,EAAGjB,EAAEC,QAASJ,EAAIiB,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKd,EAAEI,IAAIe,MAAOnB,EAAEG,KAAKgB,MAAO,SACxC,QACI,KAAMrB,EAAIE,EAAEG,MAAML,EAAIA,EAAEsB,OAAS,GAAKtB,EAAEA,EAAEsB,OAAS,KAAkB,IAAVN,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEd,EAAI,EAAG,SACjG,GAAc,IAAVc,EAAG,MAAchB,GAAMgB,EAAG,GAAKhB,EAAE,IAAMgB,EAAG,GAAKhB,EAAE,IAAM,CAAEE,EAAEC,MAAQa,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYd,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIgB,EAAI,MAC7D,GAAIhB,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIiB,KAAKP,GAAK,MACvDhB,EAAE,IAAIE,EAAEI,IAAIe,MAChBnB,EAAEG,KAAKgB,MAAO,SAEtBL,EAAKnB,EAAKqB,KAAKtB,EAASM,GAC1B,MAAOsB,GAAKR,EAAK,CAAC,EAAGQ,GAAIzB,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARgB,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEI,MAAOJ,EAAG,GAAKA,EAAG,QAAK,EAAQG,MAAM,GArB9BM,CAAK,CAACX,EAAGC,MAyBhCW,OAAOC,gBAwBpBC,EAAOC,EAAGf,GACtB,IAAIgB,EAAsB,mBAAXnB,QAAyBkB,EAAElB,OAAOC,UACjD,IAAKkB,EAAG,OAAOD,EACf,IAAmBE,EAAYP,EAA3BQ,EAAIF,EAAEZ,KAAKW,GAAOI,EAAK,GAC3B,IACI,WAAc,IAANnB,GAAgBA,KAAM,MAAQiB,EAAIC,EAAEzB,QAAQY,MAAMc,EAAGV,KAAKQ,EAAEX,OAExE,MAAOc,GAASV,EAAI,CAAEU,MAAOA,WAEzB,IACQH,IAAMA,EAAEZ,OAASW,EAAIE,EAAU,SAAIF,EAAEZ,KAAKc,WAExC,GAAIR,EAAG,MAAMA,EAAEU,OAE7B,OAAOD,WAGKE,IACZ,IAAK,IAAIF,EAAK,GAAID,EAAI,EAAGA,EAAII,UAAUd,OAAQU,IAC3CC,EAAKA,EAAGI,OAAOT,EAAOQ,UAAUJ,KACpC,OAAOC,EA8CcP,OAAOC,aC5L9B,SAA4BP,GAAAP,KAAAO,MAAAA,gBAG9B,SAAAkB,IAGUzB,KAAA0B,KAAO,SAEfb,OAAAc,eAAIF,EAAAG,UAAA,OAAI,KAAR,WACE,OAAO5B,KAAK6B,uCAEdhB,OAAAc,eAAIF,EAAAG,UAAA,OAAI,KAAR,WACE,OAAO5B,KAAK8B,sCAEdjB,OAAAc,eAAIF,EAAAG,UAAA,SAAM,KAAV,WACE,OAAO5B,KAAK0B,sCAGND,EAAAG,UAAAG,OAAA,SACNxB,EACAyB,EACAC,GAEA,IAAKD,EAAc,OAAOhC,KAAKkC,QAAQ3B,GAEvC,IAAK0B,EAAU,OAAOjC,KAAKmC,QAAQ5B,GAEnC,IAAM6B,EAAO,IAAIC,EAAS9B,GAQ1B,OAPA6B,EAAKE,SAAWN,EAChBA,EAAatC,KAAO0C,EACpBA,EAAK1C,KAAOuC,EACZA,EAASK,SAAWF,EAEpBpC,KAAK0B,OAEEU,GAGDX,EAAAG,UAAAW,WAAA,SACNC,EACAR,EACAC,GAEA,IAAKO,EAAO/B,OAAQ,MAAO,GAE3B,IAAKuB,EAAc,OAAOhC,KAAKyC,YAAYD,GAE3C,IAAKP,EAAU,OAAOjC,KAAK0C,YAAYF,GAEvC,IAAMG,EAAO,IAAIlB,EASjB,OARAkB,EAAKD,YAAYF,GACjBG,EAAKd,MAAOS,SAAWN,EACvBA,EAAatC,KAAOiD,EAAKd,MACzBc,EAAKb,KAAMpC,KAAOuC,EAClBA,EAASK,SAAWK,EAAKb,KAEzB9B,KAAK0B,MAAQc,EAAO/B,OAEbkC,EAAKC,eAGNnB,EAAAG,UAAAiB,OAAA,SAAOT,GACb,OAAKA,EAAKE,SAELF,EAAK1C,MAEV0C,EAAKE,SAAS5C,KAAO0C,EAAK1C,KAC1B0C,EAAK1C,KAAK4C,SAAWF,EAAKE,SAE1BtC,KAAK0B,OAEEU,GAPgBpC,KAAK8C,WAFD9C,KAAK+C,YAYlCtB,EAAAG,UAAAoB,IAAA,SAAIzC,GAAJ,IAAA0C,EAAAjD,KACE,MAAO,CACLkD,MAAO,qBAACC,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACN,OAAAC,EAAAJ,EAAKK,UAASjD,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAM1C,GAAU4C,KACrCK,OAAQ,qBAACL,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACP,OAAAC,EAAAJ,EAAKQ,WAAUpD,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAM1C,GAAU4C,KACtCO,QAAS,SAACC,GAAqB,OAAAV,EAAKW,WAAWrD,EAAOoD,IACtDE,KAAM,WAAM,OAAAZ,EAAKf,QAAQ3B,IACzBuD,KAAM,WAAM,OAAAb,EAAKd,QAAQ5B,MAI7BkB,EAAAG,UAAAmC,QAAA,SAAQvB,GAAR,IAAAS,EAAAjD,KACE,MAAO,CACLkD,MAAO,qBAACC,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACN,OAAAC,EAAAJ,EAAKe,cAAa3D,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAMT,GAAWW,KAC1CK,OAAQ,qBAACL,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACP,OAAAC,EAAAJ,EAAKgB,eAAc5D,KAAIkD,MAAAF,EAAA/B,EAAA,CAAC2B,EAAMT,GAAWW,KAC3CO,QAAS,SAACC,GAAqB,OAAAV,EAAKiB,eAAe1B,EAAQmB,IAC3DE,KAAM,WAAM,OAAAZ,EAAKR,YAAYD,IAC7BsB,KAAM,WAAM,OAAAb,EAAKP,YAAYF,MAMjCf,EAAAG,UAAA0B,SAAA,SAAS/C,EAAU4D,EAAoBC,QAAA,IAAAA,IAAAA,EAAAC,GACrC,IAAM/B,EAAWtC,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAO4D,MAEzD,OAAO7B,EAAWtC,KAAK+B,OAAOxB,EAAO+B,EAAUA,EAAS5C,MAAQM,KAAKmC,QAAQ5B,IAK/EkB,EAAAG,UAAA6B,UAAA,SAAUlD,EAAUgE,EAAgBH,QAAA,IAAAA,IAAAA,EAAAC,GAClC,IAAM3E,EAAOM,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOgE,MAErD,OAAO7E,EAAOM,KAAK+B,OAAOxB,EAAOb,EAAK4C,SAAU5C,GAAQM,KAAKkC,QAAQ3B,IAGvEkB,EAAAG,UAAAgC,WAAA,SAAWrD,EAAUoD,GACnB,GAAIA,EAAW,EAAGA,GAAY3D,KAAK0B,UAC9B,GAAIiC,GAAY3D,KAAK0B,KAAM,OAAO1B,KAAKmC,QAAQ5B,GAEpD,GAAIoD,GAAY,EAAG,OAAO3D,KAAKkC,QAAQ3B,GAEvC,IAAMb,EAAOM,KAAKwE,IAAIb,GAEtB,OAAO3D,KAAK+B,OAAOxB,EAAOb,EAAK4C,SAAU5C,IAG3C+B,EAAAG,UAAAM,QAAA,SAAQ3B,GACN,IAAM6B,EAAO,IAAIC,EAAS9B,GAU1B,OARA6B,EAAK1C,KAAOM,KAAK6B,MAEb7B,KAAK6B,MAAO7B,KAAK6B,MAAMS,SAAWF,EACjCpC,KAAK8B,KAAOM,EAEjBpC,KAAK6B,MAAQO,EACbpC,KAAK0B,OAEEU,GAGTX,EAAAG,UAAAO,QAAA,SAAQ5B,GACN,IAAM6B,EAAO,IAAIC,EAAS9B,GAa1B,OAXIP,KAAK6B,OACPO,EAAKE,SAAWtC,KAAK8B,KACrB9B,KAAK8B,KAAMpC,KAAO0C,EAClBpC,KAAK8B,KAAOM,IAEZpC,KAAK6B,MAAQO,EACbpC,KAAK8B,KAAOM,GAGdpC,KAAK0B,OAEEU,GAKTX,EAAAG,UAAAoC,aAAA,SACExB,EACA2B,EACAC,QAAA,IAAAA,IAAAA,EAAAC,GAEA,IAAM/B,EAAWtC,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAO4D,MAEzD,OAAO7B,EAAWtC,KAAKuC,WAAWC,EAAQF,EAAUA,EAAS5C,MAAQM,KAAK0C,YAAYF,IAKxFf,EAAAG,UAAAqC,cAAA,SACEzB,EACA+B,EACAH,QAAA,IAAAA,IAAAA,EAAAC,GAEA,IAAM3E,EAAOM,KAAKsE,MAAK,SAAAlC,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOgE,MAErD,OAAO7E,EAAOM,KAAKuC,WAAWC,EAAQ9C,EAAK4C,SAAU5C,GAAQM,KAAKyC,YAAYD,IAGhFf,EAAAG,UAAAsC,eAAA,SAAe1B,EAAamB,GAG1B,GAFIA,EAAW,IAAGA,GAAY3D,KAAK0B,MAE/BiC,GAAY,EAAG,OAAO3D,KAAKyC,YAAYD,GAE3C,GAAImB,GAAY3D,KAAK0B,KAAM,OAAO1B,KAAK0C,YAAYF,GAEnD,IAAM9C,EAAOM,KAAKwE,IAAIb,GAEtB,OAAO3D,KAAKuC,WAAWC,EAAQ9C,EAAK4C,SAAU5C,IAGhD+B,EAAAG,UAAAa,YAAA,SAAYD,GAAZ,IAAAS,EAAAjD,KACE,OAAOwC,EAAOiC,aAA2B,SAACC,EAAOnE,GAE/C,OADAmE,EAAMC,QAAQ1B,EAAKf,QAAQ3B,IACpBmE,IACN,KAGLjD,EAAAG,UAAAc,YAAA,SAAYF,GAAZ,IAAAS,EAAAjD,KACE,OAAOwC,EAAOoC,KAAI,SAAArE,GAAS,OAAA0C,EAAKd,QAAQ5B,OAG1CkB,EAAAG,UAAAiD,KAAA,WAAA,IAAA5B,EAAAjD,KACE,MAAO,CACL0D,QAAS,SAACC,GAAqB,OAAAV,EAAK6B,YAAYnB,IAChDoB,QAAS,eAAC,IAAA5B,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACR,OAAAH,EAAK+B,YAAYzB,MAAMN,EAAME,IAC/B8B,WAAY,eAAC,IAAA9B,EAAA,GAAAC,EAAA,EAAAA,EAAA7B,UAAAd,OAAA2C,IAAAD,EAAAC,GAAA7B,UAAA6B,GACX,OAAAH,EAAKiC,eAAe3B,MAAMN,EAAME,IAClCU,KAAM,WAAM,OAAAZ,EAAKF,YACjBe,KAAM,WAAM,OAAAb,EAAKH,cAIrBrB,EAAAG,UAAAuD,SAAA,SAASC,GAAT,IAAAnC,EAAAjD,KACE,MAAO,CACL0D,QAAS,SAACC,GAAqB,OAAAV,EAAKoC,gBAAgBD,EAAOzB,IAC3DE,KAAM,WAAM,OAAAZ,EAAKqC,aAAaF,IAC9BtB,KAAM,WAAM,OAAAb,EAAKsC,aAAaH,MAIlC3D,EAAAG,UAAAkD,YAAA,SAAYnB,GACNA,EAAW,IAAGA,GAAY3D,KAAK0B,MAEnC,IAAM8D,EAAUxF,KAAKwE,IAAIb,GAEzB,OAAO6B,EAAUxF,KAAK6C,OAAO2C,QAAWC,GAK1ChE,EAAAG,UAAAoD,YAAA,SAAYzE,EAAY6D,QAAA,IAAAA,IAAAA,EAAAC,GACtB,IAAMV,EAAW3D,KAAK0F,WAAU,SAAAtD,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOA,MAE9D,OAAOoD,EAAW,OAAI8B,EAAYzF,KAAK8E,YAAYnB,IAKrDlC,EAAAG,UAAAsD,eAAA,SAAe3E,EAAY6D,QAAA,IAAAA,IAAAA,EAAAC,GAGzB,IAFA,IAAMsB,EAAyB,GAEtBH,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAC9E0E,EAAUoB,EAAQjF,MAAOA,IAC3BoF,EAAQjF,KAAKV,KAAK8E,YAAYnB,EAAWgC,EAAQlF,SAIrD,OAAOkF,GAGTlE,EAAAG,UAAAmB,SAAA,WACE,IAAMc,EAAO7D,KAAK6B,MAElB,GAAIgC,EAQF,OAPA7D,KAAK6B,MAAQgC,EAAKnE,KAEdM,KAAK6B,MAAO7B,KAAK6B,MAAMS,cAAWmD,EACjCzF,KAAK8B,UAAO2D,EAEjBzF,KAAK0B,OAEEmC,GAMXpC,EAAAG,UAAAkB,SAAA,WACE,IAAMgB,EAAO9D,KAAK8B,KAElB,GAAIgC,EAQF,OAPA9D,KAAK8B,KAAOgC,EAAKxB,SAEbtC,KAAK8B,KAAM9B,KAAK8B,KAAKpC,UAAO+F,EAC3BzF,KAAK6B,WAAQ4D,EAElBzF,KAAK0B,OAEEoC,GAMXrC,EAAAG,UAAAyD,gBAAA,SAAgBD,EAAezB,GAC7B,GAAIyB,GAAS,EAAG,MAAO,GAEvB,GAAIzB,EAAW,EAAGA,EAAWiC,KAAKC,IAAIlC,EAAW3D,KAAK0B,KAAM,QACvD,GAAIiC,GAAY3D,KAAK0B,KAAM,MAAO,GAEvC0D,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,KAAOiC,GAIpC,IAFA,IAAMgC,EAAyB,GAExBP,KAAS,CACd,IAAMI,EAAUxF,KAAKwE,IAAIb,GACzBgC,EAAQjF,KAAKV,KAAK6C,OAAO2C,IAG3B,OAAOG,GAGTlE,EAAAG,UAAA0D,aAAA,SAAaF,GACX,GAAIA,GAAS,EAAG,MAAO,GAEvBA,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,MAI7B,IAFA,IAAMiE,EAAyB,GAExBP,KAASO,EAAQhB,QAAQ3E,KAAK+C,YAErC,OAAO4C,GAGTlE,EAAAG,UAAA2D,aAAA,SAAaH,GACX,GAAIA,GAAS,EAAG,MAAO,GAEvBA,EAAQQ,KAAKE,IAAIV,EAAOpF,KAAK0B,MAI7B,IAFA,IAAMiE,EAAyB,GAExBP,KAASO,EAAQjF,KAAKV,KAAK8C,YAElC,OAAO6C,GAGTlE,EAAAG,UAAA0C,KAAA,SAAKyB,GACH,IAAK,IAAIP,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAClF,GAAIqG,EAAUP,EAAS7B,EAAU3D,MAAO,OAAOwF,GAMnD/D,EAAAG,UAAA8D,UAAA,SAAUK,GACR,IAAK,IAAIP,EAAUxF,KAAK6B,MAAO8B,EAAW,EAAG6B,EAAS7B,IAAY6B,EAAUA,EAAQ9F,KAClF,GAAIqG,EAAUP,EAAS7B,EAAU3D,MAAO,OAAO2D,EAGjD,OAAQ,GAGVlC,EAAAG,UAAAoE,QAAA,SAAqBC,GACnB,IAAK,IAAI7D,EAAOpC,KAAK6B,MAAO8B,EAAW,EAAGvB,EAAMuB,IAAYvB,EAAOA,EAAK1C,KACtEuG,EAAW7D,EAAMuB,EAAU3D,OAI/ByB,EAAAG,UAAA4C,IAAA,SAAIb,GACF,OAAO3D,KAAKsE,MAAK,SAACjF,EAAG6G,GAAU,OAAAvC,IAAauC,MAK9CzE,EAAAG,UAAAuE,QAAA,SAAQ5F,EAAY6D,GAClB,YADkB,IAAAA,IAAAA,EAAAC,GACXrE,KAAK0F,WAAU,SAAAtD,GAAQ,OAAAgC,EAAUhC,EAAK7B,MAAOA,OAGtDkB,EAAAG,UAAAwE,QAAA,WACE,IAAMC,EAAQ,IAAIC,MAAMtG,KAAK0B,MAI7B,OAFA1B,KAAKgG,SAAQ,SAAC5D,EAAM8D,GAAU,OAACG,EAAMH,GAAU9D,EAAK7B,SAE7C8F,GAGT5E,EAAAG,UAAAgB,YAAA,WACE,IAAMyD,EAAQ,IAAIC,MAAMtG,KAAK0B,MAI7B,OAFA1B,KAAKgG,SAAQ,SAAC5D,EAAM8D,GAAU,OAACG,EAAMH,GAAU9D,KAExCiE,GAGT5E,EAAAG,UAAA2E,SAAA,SAASC,GACP,YADO,IAAAA,IAAAA,EAA4BC,KAAKC,WACjC1G,KAAKoG,UACTxB,KAAI,SAAArE,GAAS,OAAAiG,EAASjG,MACtBoG,KAAK,UAITlF,EAAAG,UAAC9B,OAAOC,UAAT,mEACWqC,EAAOpC,KAAK6B,MAAkB,0BAAGO,EACxC,CAAA,EAAMA,EAAK7B,OADiC,CAAA,EAAA,UAC5C8C,EAAA9D,+BAD0D6C,EAAOA,EAAK1C","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock index b4b0ecc72f..7a94d2b9a8 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json index b8f8dc11d4..ae4893bcac 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;IAAA;;;;;;;;;;;;;;IAcA;IAEA,IAAI,aAAa,GAAG,UAAS,CAAC,EAAE,CAAC;QAC7B,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;oBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;aAEc,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IAEM,IAAI,QAAQ,GAAG;QAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC;YAC3C,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAChF;YACD,OAAO,CAAC,CAAC;SACZ,CAAA;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAA;aAEe,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACzB;QACL,OAAO,CAAC,CAAC;IACb,CAAC;aAEe,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACpD,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;YAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;oBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;aAEe,OAAO,CAAC,UAAU,EAAE,SAAS;QACzC,OAAO,UAAU,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;aAEe,UAAU,CAAC,WAAW,EAAE,aAAa;QACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;aAEe,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS;QACvD,SAAS,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAC5G,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM;YACrD,SAAS,SAAS,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC3F,SAAS,QAAQ,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC9F,SAAS,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;YAC9G,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE,CAAC,CAAC;IACP,CAAC;aAEe,WAAW,CAAC,OAAO,EAAE,IAAI;QACrC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAa,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzJ,SAAS,IAAI,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClE,SAAS,IAAI,CAAC,EAAE;YACZ,IAAI,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAC9D,OAAO,CAAC;gBAAE,IAAI;oBACV,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;wBAAE,OAAO,CAAC,CAAC;oBAC7J,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBACxC,QAAQ,EAAE,CAAC,CAAC,CAAC;wBACT,KAAK,CAAC,CAAC;wBAAC,KAAK,CAAC;4BAAE,CAAC,GAAG,EAAE,CAAC;4BAAC,MAAM;wBAC9B,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wBACxD,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBACjD,KAAK,CAAC;4BAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;wBACjD;4BACI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gCAAE,CAAC,GAAG,CAAC,CAAC;gCAAC,SAAS;6BAAE;4BAC5G,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACtF,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,GAAG,EAAE,CAAC;gCAAC,MAAM;6BAAE;4BACrE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;gCAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BACtB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;qBAC9B;oBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBAAC,OAAO,CAAC,EAAE;oBAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC;iBAAE;wBAAS;oBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAAE;YAC1D,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACpF;IACL,CAAC;IAEM,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9D,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,cAAa,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC,KAAK,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;aAEa,YAAY,CAAC,CAAC,EAAE,OAAO;QACnC,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;gBAAE,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;aAEe,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9E,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;gBAC1C,IAAI,EAAE;oBACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;wBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;oBACnC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBAC3C;aACJ,CAAC;QACF,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;IAC3F,CAAC;aAEe,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;YACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC9E;QACD,OAAO,KAAK,EAAE;YAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SAAE;gBAC/B;YACJ,IAAI;gBACA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACpD;oBACO;gBAAE,IAAI,CAAC;oBAAE,MAAM,CAAC,CAAC,KAAK,CAAC;aAAE;SACpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;aAEe,QAAQ;QACpB,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;YAC9C,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC;IACd,CAAC;aAEe,cAAc;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAC5C,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,CAAC,CAAC;IACb,CAAC;IAAA,CAAC;aAEc,OAAO,CAAC,CAAC;QACrB,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;aAEe,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS;QAC3D,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACtH,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAC1I,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAAE;QAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAAE,EAAE;QAClF,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACxH,SAAS,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;aAEe,gBAAgB,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5I,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;aAEe,aAAa,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjN,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAChK,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAS,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;IAChI,CAAC;aAEe,oBAAoB,CAAC,MAAM,EAAE,GAAG;QAC5C,IAAI,MAAM,CAAC,cAAc,EAAE;YAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;SAAE;aAAM;YAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;SAAE;QAC/G,OAAO,MAAM,CAAC;IAClB,CAAC;IAAA,CAAC;IAEF,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,IAAI,UAAS,CAAC,EAAE,CAAC;QACd,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;aAEc,YAAY,CAAC,GAAG;QAC5B,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;YAAE,OAAO,GAAG,CAAC;QACtC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,GAAG,IAAI,IAAI;YAAE,KAAK,IAAI,CAAC,IAAI,GAAG;gBAAE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC5G,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IAClB,CAAC;aAEe,eAAe,CAAC,GAAG;QAC/B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;aAEe,sBAAsB,CAAC,QAAQ,EAAE,UAAU;QACvD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;SACzE;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;aAEe,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK;QAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;SACzE;QACD,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACjB;;;QC3NE,kBAA4B,KAAQ;YAAR,UAAK,GAAL,KAAK,CAAG;SAAI;uBACzC;KAAA,IAAA;;QAED;YAGU,SAAI,GAAG,CAAC,CAAC;SA+XlB;QA7XC,sBAAI,4BAAI;iBAAR;gBACE,OAAO,IAAI,CAAC,KAAK,CAAC;aACnB;;;WAAA;QACD,sBAAI,4BAAI;iBAAR;gBACE,OAAO,IAAI,CAAC,IAAI,CAAC;aAClB;;;WAAA;QACD,sBAAI,8BAAM;iBAAV;gBACE,OAAO,IAAI,CAAC,IAAI,CAAC;aAClB;;;WAAA;QAEO,2BAAM,GAAN,UACN,KAAQ,EACR,YAAqC,EACrC,QAAiC;YAEjC,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE9C,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE1C,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;YAC7B,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;YACrB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;YAEzB,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAEO,+BAAU,GAAV,UACN,MAAW,EACX,YAAqC,EACrC,QAAiC;YAEjC,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YAE9B,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAM,IAAI,GAAG,IAAI,UAAU,EAAK,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,IAAI,CAAC,KAAM,CAAC,QAAQ,GAAG,YAAY,CAAC;YACpC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,IAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC3B,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAE9B,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;YAE3B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC3B;QAEO,2BAAM,GAAN,UAAO,IAAiB;YAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE3C,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEvC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAED,wBAAG,GAAH,UAAI,KAAQ;YAAZ,iBAUC;YATC,OAAO;gBACL,KAAK,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACjD,OAAA,CAAA,KAAA,KAAI,CAAC,QAAQ,EAAC,IAAI,qBAAC,KAAI,EAAE,KAAK,GAAK,MAAM;iBAAC;gBAC5C,MAAM,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBAClD,OAAA,CAAA,KAAA,KAAI,CAAC,SAAS,EAAC,IAAI,qBAAC,KAAI,EAAE,KAAK,GAAK,MAAM;iBAAC;gBAC7C,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAA;gBAC/D,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAA;gBAC/B,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAA;aAChC,CAAC;SACH;QAED,4BAAO,GAAP,UAAQ,MAAW;YAAnB,iBAUC;YATC,OAAO;gBACL,KAAK,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACjD,OAAA,CAAA,KAAA,KAAI,CAAC,YAAY,EAAC,IAAI,qBAAC,KAAI,EAAE,MAAM,GAAK,MAAM;iBAAC;gBACjD,MAAM,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBAClD,OAAA,CAAA,KAAA,KAAI,CAAC,aAAa,EAAC,IAAI,qBAAC,KAAI,EAAE,MAAM,GAAK,MAAM;iBAAC;gBAClD,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAA;gBACpE,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAA;gBACpC,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAA;aACrC,CAAC;SACH;QAID,6BAAQ,GAAR,UAAS,KAAQ,EAAE,aAAkB,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC7E,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,GAAA,CAAC,CAAC;YAEzE,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACrF;QAID,8BAAS,GAAT,UAAU,KAAQ,EAAE,SAAc,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC1E,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,GAAA,CAAC,CAAC;YAEjE,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC7E;QAED,+BAAU,GAAV,UAAW,KAAQ,EAAE,QAAgB;YACnC,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;iBACnC,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE3D,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE9C,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAEjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAChD;QAED,4BAAO,GAAP,UAAQ,KAAQ;YACd,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAEvB,IAAI,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;;gBACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAEtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAED,4BAAO,GAAP,UAAQ,KAAQ;YACd,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC1B,IAAI,CAAC,IAAK,CAAC,IAAI,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAID,iCAAY,GAAZ,UACE,MAAW,EACX,aAAkB,EAClB,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAExC,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,GAAA,CAAC,CAAC;YAEzE,OAAO,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC/F;QAID,kCAAa,GAAb,UACE,MAAW,EACX,SAAc,EACd,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAExC,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,GAAA,CAAC,CAAC;YAEjE,OAAO,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SACvF;QAED,mCAAc,GAAd,UAAe,MAAW,EAAE,QAAgB;YAC1C,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;YAExC,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE3D,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAEjC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACrD;QAED,gCAAW,GAAX,UAAY,MAAW;YAAvB,iBAKC;YAJC,OAAO,MAAM,CAAC,WAAW,CAAgB,UAAC,KAAK,EAAE,KAAK;gBACpD,KAAK,CAAC,OAAO,CAAC,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnC,OAAO,KAAK,CAAC;aACd,EAAE,EAAE,CAAC,CAAC;SACR;QAED,gCAAW,GAAX,UAAY,MAAW;YAAvB,iBAEC;YADC,OAAO,MAAM,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC;SACjD;QAED,yBAAI,GAAJ;YAAA,iBAUC;YATC,OAAO;gBACL,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAA;gBACzD,OAAO,EAAE;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACnD,OAAA,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAI,EAAE,MAAM,CAAC;iBAAA;gBACtC,UAAU,EAAE;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACtD,OAAA,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAI,EAAE,MAAM,CAAC;iBAAA;gBACzC,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,QAAQ,EAAE,GAAA;gBAC3B,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,QAAQ,EAAE,GAAA;aAC5B,CAAC;SACH;QAED,6BAAQ,GAAR,UAAS,KAAa;YAAtB,iBAMC;YALC,OAAO;gBACL,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAA;gBACpE,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAA;gBACpC,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAA;aACrC,CAAC;SACH;QAED,gCAAW,GAAX,UAAY,QAAgB;YAC1B,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;YAExC,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnC,OAAO,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;SACnD;QAID,gCAAW,GAAX,UAAY,KAAU,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC9D,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAA,CAAC,CAAC;YAEtE,OAAO,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC9D;QAID,mCAAc,GAAd,UAAe,KAAU,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YACjE,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE;gBACxF,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAE,CAAC,CAAC;iBAC5D;aACF;YAED,OAAO,OAAO,CAAC;SAChB;QAED,6BAAQ,GAAR;YACE,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAExB,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;gBAEvB,IAAI,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;;oBAC3C,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;gBAE3B,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,OAAO,IAAI,CAAC;aACb;YAED,OAAO,SAAS,CAAC;SAClB;QAED,6BAAQ,GAAR;YACE,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAEvB,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAE1B,IAAI,IAAI,CAAC,IAAI;oBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;;oBACrC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBAE5B,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,OAAO,IAAI,CAAC;aACb;YAED,OAAO,SAAS,CAAC;SAClB;QAED,oCAAe,GAAf,UAAgB,KAAa,EAAE,QAAgB;YAC7C,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE1B,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;iBAC1D,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAC;YAE1C,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;YAE9C,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,OAAO,KAAK,EAAE,EAAE;gBACd,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAQ,CAAE,CAAC,CAAC;aACtC;YAED,OAAO,OAAO,CAAC;SAChB;QAED,iCAAY,GAAZ,UAAa,KAAyB;YACpC,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE1B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,OAAO,KAAK,EAAE;gBAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,CAAC;YAElD,OAAO,OAAO,CAAC;SAChB;QAED,iCAAY,GAAZ,UAAa,KAAyB;YACpC,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE1B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,OAAO,KAAK,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,CAAC;YAE/C,OAAO,OAAO,CAAC;SAChB;QAED,yBAAI,GAAJ,UAAK,SAA4B;YAC/B,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE;gBACxF,IAAI,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;oBAAE,OAAO,OAAO,CAAC;aACxD;YAED,OAAO,SAAS,CAAC;SAClB;QAED,8BAAS,GAAT,UAAU,SAA4B;YACpC,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE;gBACxF,IAAI,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;oBAAE,OAAO,QAAQ,CAAC;aACzD;YAED,OAAO,CAAC,CAAC,CAAC;SACX;QAED,4BAAO,GAAP,UAAqB,UAAgC;YACnD,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;gBAC5E,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;aAClC;SACF;QAED,wBAAG,GAAH,UAAI,QAAgB;YAClB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,KAAK,IAAK,OAAA,QAAQ,KAAK,KAAK,GAAA,CAAC,CAAC;SACpD;QAID,4BAAO,GAAP,UAAQ,KAAU,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAA,CAAC,CAAC;SAC7D;QAED,4BAAO,GAAP;YACE,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,QAAC,KAAK,CAAC,KAAM,CAAC,GAAG,IAAI,CAAC,KAAK,IAAC,CAAC,CAAC;YAE5D,OAAO,KAAK,CAAC;SACd;QAED,gCAAW,GAAX;YACE,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,QAAC,KAAK,CAAC,KAAM,CAAC,GAAG,IAAI,IAAC,CAAC,CAAC;YAEtD,OAAO,KAAK,CAAC;SACd;QAED,6BAAQ,GAAR,UAAS,QAA0C;YAA1C,yBAAA,EAAA,WAA4B,IAAI,CAAC,SAAS;YACjD,OAAO,IAAI,CAAC,OAAO,EAAE;iBAClB,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,QAAQ,CAAC,KAAK,CAAC,GAAA,CAAC;iBAC7B,IAAI,CAAC,OAAO,CAAC,CAAC;SAClB;;QAGA,qBAAC,MAAM,CAAC,QAAQ,CAAC,GAAlB;;;;;wBACW,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC;;;6BAAE,IAAI;wBAC5C,qBAAM,IAAI,CAAC,KAAK,EAAA;;wBAAhB,SAAgB,CAAC;;;wBAD6B,QAAQ,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;;;;;SAG7E;yBACF;KAAA;;IC5YD;;;;ICAA;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock index 9551cc1509..ea621f9df6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json index 730e289961..f743a565ba 100644 --- a/templates/module/angular/package.json +++ b/templates/module/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~3.1.0-rc.4", - "@abp/ng.identity": "~3.1.0-rc.4", - "@abp/ng.setting-management": "~3.1.0-rc.4", - "@abp/ng.tenant-management": "~3.1.0-rc.4", - "@abp/ng.theme.basic": "~3.1.0-rc.4", + "@abp/ng.account": "~3.1.0", + "@abp/ng.identity": "~3.1.0", + "@abp/ng.setting-management": "~3.1.0", + "@abp/ng.tenant-management": "~3.1.0", + "@abp/ng.theme.basic": "~3.1.0", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", @@ -33,7 +33,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~3.1.0-rc.4", + "@abp/ng.schematics": "~3.1.0", "@angular-devkit/build-angular": "~0.1000.0", "@angular-devkit/build-ng-packagr": "~0.1000.0", "@angular/cli": "~10.0.0", diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json index a1c82a3672..3533eca706 100644 --- a/templates/module/angular/projects/my-project-name/package.json +++ b/templates/module/angular/projects/my-project-name/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=3.1.0-rc.4", - "@abp/ng.theme.shared": ">=3.1.0-rc.4" + "@abp/ng.core": ">=3.1.0", + "@abp/ng.theme.shared": ">=3.1.0" }, "dependencies": { "tslib": "^2.0.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json index 4b220b0935..54a0658921 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;IAAA;;;;;;;;;;;;;;IAcA;IAEA,IAAI,aAAa,GAAG,UAAS,CAAC,EAAE,CAAC;QAC7B,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;oBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;aAEc,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IAEM,IAAI,QAAQ,GAAG;QAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC;YAC3C,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAChF;YACD,OAAO,CAAC,CAAC;SACZ,CAAA;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAA;aAEe,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACzB;QACL,OAAO,CAAC,CAAC;IACb,CAAC;aAEe,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACpD,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;YAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;oBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;aAEe,OAAO,CAAC,UAAU,EAAE,SAAS;QACzC,OAAO,UAAU,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;aAEe,UAAU,CAAC,WAAW,EAAE,aAAa;QACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;aAEe,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS;QACvD,SAAS,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAC5G,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM;YACrD,SAAS,SAAS,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC3F,SAAS,QAAQ,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC9F,SAAS,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;YAC9G,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE,CAAC,CAAC;IACP,CAAC;aAEe,WAAW,CAAC,OAAO,EAAE,IAAI;QACrC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAa,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzJ,SAAS,IAAI,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClE,SAAS,IAAI,CAAC,EAAE;YACZ,IAAI,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAC9D,OAAO,CAAC;gBAAE,IAAI;oBACV,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;wBAAE,OAAO,CAAC,CAAC;oBAC7J,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBACxC,QAAQ,EAAE,CAAC,CAAC,CAAC;wBACT,KAAK,CAAC,CAAC;wBAAC,KAAK,CAAC;4BAAE,CAAC,GAAG,EAAE,CAAC;4BAAC,MAAM;wBAC9B,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wBACxD,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBACjD,KAAK,CAAC;4BAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;wBACjD;4BACI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gCAAE,CAAC,GAAG,CAAC,CAAC;gCAAC,SAAS;6BAAE;4BAC5G,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACtF,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,GAAG,EAAE,CAAC;gCAAC,MAAM;6BAAE;4BACrE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;gCAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BACtB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;qBAC9B;oBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBAAC,OAAO,CAAC,EAAE;oBAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC;iBAAE;wBAAS;oBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAAE;YAC1D,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACpF;IACL,CAAC;IAEM,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9D,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,cAAa,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC,KAAK,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;aAEa,YAAY,CAAC,CAAC,EAAE,OAAO;QACnC,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;gBAAE,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;aAEe,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9E,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;gBAC1C,IAAI,EAAE;oBACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;wBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;oBACnC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBAC3C;aACJ,CAAC;QACF,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;IAC3F,CAAC;aAEe,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;YACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC9E;QACD,OAAO,KAAK,EAAE;YAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SAAE;gBAC/B;YACJ,IAAI;gBACA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACpD;oBACO;gBAAE,IAAI,CAAC;oBAAE,MAAM,CAAC,CAAC,KAAK,CAAC;aAAE;SACpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;aAEe,QAAQ;QACpB,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;YAC9C,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC;IACd,CAAC;aAEe,cAAc;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAC5C,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,CAAC,CAAC;IACb,CAAC;IAAA,CAAC;aAEc,OAAO,CAAC,CAAC;QACrB,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;aAEe,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS;QAC3D,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACtH,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAC1I,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAAE;QAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAAE,EAAE;QAClF,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACxH,SAAS,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;aAEe,gBAAgB,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5I,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;aAEe,aAAa,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjN,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAChK,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAS,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;IAChI,CAAC;aAEe,oBAAoB,CAAC,MAAM,EAAE,GAAG;QAC5C,IAAI,MAAM,CAAC,cAAc,EAAE;YAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;SAAE;aAAM;YAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;SAAE;QAC/G,OAAO,MAAM,CAAC;IAClB,CAAC;IAAA,CAAC;IAEF,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,IAAI,UAAS,CAAC,EAAE,CAAC;QACd,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;aAEc,YAAY,CAAC,GAAG;QAC5B,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;YAAE,OAAO,GAAG,CAAC;QACtC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,GAAG,IAAI,IAAI;YAAE,KAAK,IAAI,CAAC,IAAI,GAAG;gBAAE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC5G,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IAClB,CAAC;aAEe,eAAe,CAAC,GAAG;QAC/B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;aAEe,sBAAsB,CAAC,QAAQ,EAAE,UAAU;QACvD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;SACzE;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;aAEe,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK;QAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;SACzE;QACD,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACjB;;;QC3NE,kBAA4B,KAAQ;YAAR,UAAK,GAAL,KAAK,CAAG;SAAI;uBACzC;KAAA,IAAA;;QAED;YAGU,SAAI,GAAG,CAAC,CAAC;SA+XlB;QA7XC,sBAAI,4BAAI;iBAAR;gBACE,OAAO,IAAI,CAAC,KAAK,CAAC;aACnB;;;WAAA;QACD,sBAAI,4BAAI;iBAAR;gBACE,OAAO,IAAI,CAAC,IAAI,CAAC;aAClB;;;WAAA;QACD,sBAAI,8BAAM;iBAAV;gBACE,OAAO,IAAI,CAAC,IAAI,CAAC;aAClB;;;WAAA;QAEO,2BAAM,GAAN,UACN,KAAQ,EACR,YAAqC,EACrC,QAAiC;YAEjC,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE9C,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE1C,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;YAC7B,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;YACrB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;YAEzB,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAEO,+BAAU,GAAV,UACN,MAAW,EACX,YAAqC,EACrC,QAAiC;YAEjC,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YAE9B,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAM,IAAI,GAAG,IAAI,UAAU,EAAK,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,IAAI,CAAC,KAAM,CAAC,QAAQ,GAAG,YAAY,CAAC;YACpC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,IAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC3B,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAE9B,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;YAE3B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC3B;QAEO,2BAAM,GAAN,UAAO,IAAiB;YAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE3C,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEvC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAED,wBAAG,GAAH,UAAI,KAAQ;YAAZ,iBAUC;YATC,OAAO;gBACL,KAAK,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACjD,OAAA,CAAA,KAAA,KAAI,CAAC,QAAQ,EAAC,IAAI,qBAAC,KAAI,EAAE,KAAK,GAAK,MAAM;iBAAC;gBAC5C,MAAM,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBAClD,OAAA,CAAA,KAAA,KAAI,CAAC,SAAS,EAAC,IAAI,qBAAC,KAAI,EAAE,KAAK,GAAK,MAAM;iBAAC;gBAC7C,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAA;gBAC/D,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAA;gBAC/B,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAA;aAChC,CAAC;SACH;QAED,4BAAO,GAAP,UAAQ,MAAW;YAAnB,iBAUC;YATC,OAAO;gBACL,KAAK,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACjD,OAAA,CAAA,KAAA,KAAI,CAAC,YAAY,EAAC,IAAI,qBAAC,KAAI,EAAE,MAAM,GAAK,MAAM;iBAAC;gBACjD,MAAM,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBAClD,OAAA,CAAA,KAAA,KAAI,CAAC,aAAa,EAAC,IAAI,qBAAC,KAAI,EAAE,MAAM,GAAK,MAAM;iBAAC;gBAClD,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAA;gBACpE,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAA;gBACpC,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAA;aACrC,CAAC;SACH;QAID,6BAAQ,GAAR,UAAS,KAAQ,EAAE,aAAkB,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC7E,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,GAAA,CAAC,CAAC;YAEzE,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACrF;QAID,8BAAS,GAAT,UAAU,KAAQ,EAAE,SAAc,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC1E,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,GAAA,CAAC,CAAC;YAEjE,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC7E;QAED,+BAAU,GAAV,UAAW,KAAQ,EAAE,QAAgB;YACnC,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;iBACnC,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE3D,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE9C,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAEjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAChD;QAED,4BAAO,GAAP,UAAQ,KAAQ;YACd,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAEvB,IAAI,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;;gBACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAEtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAED,4BAAO,GAAP,UAAQ,KAAQ;YACd,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC1B,IAAI,CAAC,IAAK,CAAC,IAAI,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAID,iCAAY,GAAZ,UACE,MAAW,EACX,aAAkB,EAClB,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAExC,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,GAAA,CAAC,CAAC;YAEzE,OAAO,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC/F;QAID,kCAAa,GAAb,UACE,MAAW,EACX,SAAc,EACd,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAExC,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,GAAA,CAAC,CAAC;YAEjE,OAAO,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SACvF;QAED,mCAAc,GAAd,UAAe,MAAW,EAAE,QAAgB;YAC1C,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;YAExC,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE3D,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAEjC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACrD;QAED,gCAAW,GAAX,UAAY,MAAW;YAAvB,iBAKC;YAJC,OAAO,MAAM,CAAC,WAAW,CAAgB,UAAC,KAAK,EAAE,KAAK;gBACpD,KAAK,CAAC,OAAO,CAAC,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnC,OAAO,KAAK,CAAC;aACd,EAAE,EAAE,CAAC,CAAC;SACR;QAED,gCAAW,GAAX,UAAY,MAAW;YAAvB,iBAEC;YADC,OAAO,MAAM,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC;SACjD;QAED,yBAAI,GAAJ;YAAA,iBAUC;YATC,OAAO;gBACL,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAA;gBACzD,OAAO,EAAE;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACnD,OAAA,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAI,EAAE,MAAM,CAAC;iBAAA;gBACtC,UAAU,EAAE;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACtD,OAAA,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAI,EAAE,MAAM,CAAC;iBAAA;gBACzC,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,QAAQ,EAAE,GAAA;gBAC3B,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,QAAQ,EAAE,GAAA;aAC5B,CAAC;SACH;QAED,6BAAQ,GAAR,UAAS,KAAa;YAAtB,iBAMC;YALC,OAAO;gBACL,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAA;gBACpE,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAA;gBACpC,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAA;aACrC,CAAC;SACH;QAED,gCAAW,GAAX,UAAY,QAAgB;YAC1B,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;YAExC,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnC,OAAO,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;SACnD;QAID,gCAAW,GAAX,UAAY,KAAU,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC9D,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAA,CAAC,CAAC;YAEtE,OAAO,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC9D;QAID,mCAAc,GAAd,UAAe,KAAU,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YACjE,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE;gBACxF,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAE,CAAC,CAAC;iBAC5D;aACF;YAED,OAAO,OAAO,CAAC;SAChB;QAED,6BAAQ,GAAR;YACE,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAExB,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;gBAEvB,IAAI,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;;oBAC3C,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;gBAE3B,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,OAAO,IAAI,CAAC;aACb;YAED,OAAO,SAAS,CAAC;SAClB;QAED,6BAAQ,GAAR;YACE,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAEvB,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAE1B,IAAI,IAAI,CAAC,IAAI;oBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;;oBACrC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBAE5B,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,OAAO,IAAI,CAAC;aACb;YAED,OAAO,SAAS,CAAC;SAClB;QAED,oCAAe,GAAf,UAAgB,KAAa,EAAE,QAAgB;YAC7C,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE1B,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;iBAC1D,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAC;YAE1C,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;YAE9C,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,OAAO,KAAK,EAAE,EAAE;gBACd,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAQ,CAAE,CAAC,CAAC;aACtC;YAED,OAAO,OAAO,CAAC;SAChB;QAED,iCAAY,GAAZ,UAAa,KAAyB;YACpC,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE1B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,OAAO,KAAK,EAAE;gBAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,CAAC;YAElD,OAAO,OAAO,CAAC;SAChB;QAED,iCAAY,GAAZ,UAAa,KAAyB;YACpC,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE1B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,OAAO,KAAK,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,CAAC;YAE/C,OAAO,OAAO,CAAC;SAChB;QAED,yBAAI,GAAJ,UAAK,SAA4B;YAC/B,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE;gBACxF,IAAI,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;oBAAE,OAAO,OAAO,CAAC;aACxD;YAED,OAAO,SAAS,CAAC;SAClB;QAED,8BAAS,GAAT,UAAU,SAA4B;YACpC,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE;gBACxF,IAAI,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;oBAAE,OAAO,QAAQ,CAAC;aACzD;YAED,OAAO,CAAC,CAAC,CAAC;SACX;QAED,4BAAO,GAAP,UAAqB,UAAgC;YACnD,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;gBAC5E,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;aAClC;SACF;QAED,wBAAG,GAAH,UAAI,QAAgB;YAClB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,KAAK,IAAK,OAAA,QAAQ,KAAK,KAAK,GAAA,CAAC,CAAC;SACpD;QAID,4BAAO,GAAP,UAAQ,KAAU,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAA,CAAC,CAAC;SAC7D;QAED,4BAAO,GAAP;YACE,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,QAAC,KAAK,CAAC,KAAM,CAAC,GAAG,IAAI,CAAC,KAAK,IAAC,CAAC,CAAC;YAE5D,OAAO,KAAK,CAAC;SACd;QAED,gCAAW,GAAX;YACE,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,QAAC,KAAK,CAAC,KAAM,CAAC,GAAG,IAAI,IAAC,CAAC,CAAC;YAEtD,OAAO,KAAK,CAAC;SACd;QAED,6BAAQ,GAAR,UAAS,QAA0C;YAA1C,yBAAA,EAAA,WAA4B,IAAI,CAAC,SAAS;YACjD,OAAO,IAAI,CAAC,OAAO,EAAE;iBAClB,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,QAAQ,CAAC,KAAK,CAAC,GAAA,CAAC;iBAC7B,IAAI,CAAC,OAAO,CAAC,CAAC;SAClB;;QAGA,qBAAC,MAAM,CAAC,QAAQ,CAAC,GAAlB;;;;;wBACW,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC;;;6BAAE,IAAI;wBAC5C,qBAAM,IAAI,CAAC,KAAK,EAAA;;wBAAhB,SAAgB,CAAC;;;wBAD6B,QAAQ,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;;;;;SAG7E;yBACF;KAAA;;IC5YD;;;;ICAA;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index b4b0ecc72f..7a94d2b9a8 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json index b8f8dc11d4..ae4893bcac 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock index b4b0ecc72f..7a94d2b9a8 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json index b8f8dc11d4..ae4893bcac 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0-rc.4" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.0" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.js.map b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.js.map index 2c5d45ddcb..c8cf999f3b 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.js.map +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib/linked-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"abp-utils.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts","../../projects/utils/src/public-api.ts","../../projects/utils/src/abp-utils.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/linked-list';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;IAAA;;;;;;;;;;;;;;IAcA;IAEA,IAAI,aAAa,GAAG,UAAS,CAAC,EAAE,CAAC;QAC7B,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;oBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;aAEc,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IAEM,IAAI,QAAQ,GAAG;QAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC;YAC3C,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAChF;YACD,OAAO,CAAC,CAAC;SACZ,CAAA;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAA;aAEe,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACzB;QACL,OAAO,CAAC,CAAC;IACb,CAAC;aAEe,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACpD,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;YAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;oBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;aAEe,OAAO,CAAC,UAAU,EAAE,SAAS;QACzC,OAAO,UAAU,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;aAEe,UAAU,CAAC,WAAW,EAAE,aAAa;QACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;aAEe,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS;QACvD,SAAS,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAC5G,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM;YACrD,SAAS,SAAS,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC3F,SAAS,QAAQ,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC9F,SAAS,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;YAC9G,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE,CAAC,CAAC;IACP,CAAC;aAEe,WAAW,CAAC,OAAO,EAAE,IAAI;QACrC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAa,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzJ,SAAS,IAAI,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClE,SAAS,IAAI,CAAC,EAAE;YACZ,IAAI,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAC9D,OAAO,CAAC;gBAAE,IAAI;oBACV,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;wBAAE,OAAO,CAAC,CAAC;oBAC7J,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBACxC,QAAQ,EAAE,CAAC,CAAC,CAAC;wBACT,KAAK,CAAC,CAAC;wBAAC,KAAK,CAAC;4BAAE,CAAC,GAAG,EAAE,CAAC;4BAAC,MAAM;wBAC9B,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wBACxD,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBACjD,KAAK,CAAC;4BAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;wBACjD;4BACI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gCAAE,CAAC,GAAG,CAAC,CAAC;gCAAC,SAAS;6BAAE;4BAC5G,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACtF,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,GAAG,EAAE,CAAC;gCAAC,MAAM;6BAAE;4BACrE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;gCAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BACtB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;qBAC9B;oBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBAAC,OAAO,CAAC,EAAE;oBAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC;iBAAE;wBAAS;oBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAAE;YAC1D,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACpF;IACL,CAAC;IAEM,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9D,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,cAAa,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC,KAAK,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;aAEa,YAAY,CAAC,CAAC,EAAE,OAAO;QACnC,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;gBAAE,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;aAEe,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9E,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;gBAC1C,IAAI,EAAE;oBACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;wBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;oBACnC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBAC3C;aACJ,CAAC;QACF,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;IAC3F,CAAC;aAEe,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;YACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC9E;QACD,OAAO,KAAK,EAAE;YAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SAAE;gBAC/B;YACJ,IAAI;gBACA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACpD;oBACO;gBAAE,IAAI,CAAC;oBAAE,MAAM,CAAC,CAAC,KAAK,CAAC;aAAE;SACpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;aAEe,QAAQ;QACpB,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;YAC9C,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC;IACd,CAAC;aAEe,cAAc;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAC5C,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,CAAC,CAAC;IACb,CAAC;IAAA,CAAC;aAEc,OAAO,CAAC,CAAC;QACrB,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;aAEe,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS;QAC3D,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACtH,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAC1I,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAAE;QAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAAE,EAAE;QAClF,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACxH,SAAS,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;aAEe,gBAAgB,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5I,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;aAEe,aAAa,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjN,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAChK,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAS,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;IAChI,CAAC;aAEe,oBAAoB,CAAC,MAAM,EAAE,GAAG;QAC5C,IAAI,MAAM,CAAC,cAAc,EAAE;YAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;SAAE;aAAM;YAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;SAAE;QAC/G,OAAO,MAAM,CAAC;IAClB,CAAC;IAAA,CAAC;IAEF,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,IAAI,UAAS,CAAC,EAAE,CAAC;QACd,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;aAEc,YAAY,CAAC,GAAG;QAC5B,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;YAAE,OAAO,GAAG,CAAC;QACtC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,GAAG,IAAI,IAAI;YAAE,KAAK,IAAI,CAAC,IAAI,GAAG;gBAAE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC5G,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IAClB,CAAC;aAEe,eAAe,CAAC,GAAG;QAC/B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;aAEe,sBAAsB,CAAC,QAAQ,EAAE,UAAU;QACvD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;SACzE;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;aAEe,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK;QAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;SACzE;QACD,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACjB;;;QC3NE,kBAA4B,KAAQ;YAAR,UAAK,GAAL,KAAK,CAAG;SAAI;uBACzC;KAAA,IAAA;;QAED;YAGU,SAAI,GAAG,CAAC,CAAC;SA+XlB;QA7XC,sBAAI,4BAAI;iBAAR;gBACE,OAAO,IAAI,CAAC,KAAK,CAAC;aACnB;;;WAAA;QACD,sBAAI,4BAAI;iBAAR;gBACE,OAAO,IAAI,CAAC,IAAI,CAAC;aAClB;;;WAAA;QACD,sBAAI,8BAAM;iBAAV;gBACE,OAAO,IAAI,CAAC,IAAI,CAAC;aAClB;;;WAAA;QAEO,2BAAM,GAAN,UACN,KAAQ,EACR,YAAqC,EACrC,QAAiC;YAEjC,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE9C,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE1C,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;YAC7B,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;YACrB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;YAEzB,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAEO,+BAAU,GAAV,UACN,MAAW,EACX,YAAqC,EACrC,QAAiC;YAEjC,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YAE9B,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAM,IAAI,GAAG,IAAI,UAAU,EAAK,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,IAAI,CAAC,KAAM,CAAC,QAAQ,GAAG,YAAY,CAAC;YACpC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,IAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC3B,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAE9B,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;YAE3B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC3B;QAEO,2BAAM,GAAN,UAAO,IAAiB;YAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE3C,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEvC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAED,wBAAG,GAAH,UAAI,KAAQ;YAAZ,iBAUC;YATC,OAAO;gBACL,KAAK,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACjD,OAAA,CAAA,KAAA,KAAI,CAAC,QAAQ,EAAC,IAAI,qBAAC,KAAI,EAAE,KAAK,GAAK,MAAM;iBAAC;gBAC5C,MAAM,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBAClD,OAAA,CAAA,KAAA,KAAI,CAAC,SAAS,EAAC,IAAI,qBAAC,KAAI,EAAE,KAAK,GAAK,MAAM;iBAAC;gBAC7C,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAA;gBAC/D,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAA;gBAC/B,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAA;aAChC,CAAC;SACH;QAED,4BAAO,GAAP,UAAQ,MAAW;YAAnB,iBAUC;YATC,OAAO;gBACL,KAAK,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACjD,OAAA,CAAA,KAAA,KAAI,CAAC,YAAY,EAAC,IAAI,qBAAC,KAAI,EAAE,MAAM,GAAK,MAAM;iBAAC;gBACjD,MAAM,EAAE;;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBAClD,OAAA,CAAA,KAAA,KAAI,CAAC,aAAa,EAAC,IAAI,qBAAC,KAAI,EAAE,MAAM,GAAK,MAAM;iBAAC;gBAClD,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAA;gBACpE,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAA;gBACpC,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAA;aACrC,CAAC;SACH;QAID,6BAAQ,GAAR,UAAS,KAAQ,EAAE,aAAkB,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC7E,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,GAAA,CAAC,CAAC;YAEzE,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACrF;QAID,8BAAS,GAAT,UAAU,KAAQ,EAAE,SAAc,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC1E,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,GAAA,CAAC,CAAC;YAEjE,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC7E;QAED,+BAAU,GAAV,UAAW,KAAQ,EAAE,QAAgB;YACnC,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;iBACnC,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE3D,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE9C,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAEjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAChD;QAED,4BAAO,GAAP,UAAQ,KAAQ;YACd,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAEvB,IAAI,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;;gBACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAEtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAED,4BAAO,GAAP,UAAQ,KAAQ;YACd,IAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC1B,IAAI,CAAC,IAAK,CAAC,IAAI,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aAClB;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,OAAO,IAAI,CAAC;SACb;QAID,iCAAY,GAAZ,UACE,MAAW,EACX,aAAkB,EAClB,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAExC,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,GAAA,CAAC,CAAC;YAEzE,OAAO,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC/F;QAID,kCAAa,GAAb,UACE,MAAW,EACX,SAAc,EACd,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAExC,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,GAAA,CAAC,CAAC;YAEjE,OAAO,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SACvF;QAED,mCAAc,GAAd,UAAe,MAAW,EAAE,QAAgB;YAC1C,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;YAExC,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE3D,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAEjC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACrD;QAED,gCAAW,GAAX,UAAY,MAAW;YAAvB,iBAKC;YAJC,OAAO,MAAM,CAAC,WAAW,CAAgB,UAAC,KAAK,EAAE,KAAK;gBACpD,KAAK,CAAC,OAAO,CAAC,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnC,OAAO,KAAK,CAAC;aACd,EAAE,EAAE,CAAC,CAAC;SACR;QAED,gCAAW,GAAX,UAAY,MAAW;YAAvB,iBAEC;YADC,OAAO,MAAM,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC;SACjD;QAED,yBAAI,GAAJ;YAAA,iBAUC;YATC,OAAO;gBACL,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAA;gBACzD,OAAO,EAAE;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACnD,OAAA,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAI,EAAE,MAAM,CAAC;iBAAA;gBACtC,UAAU,EAAE;oBAAC,gBAA2C;yBAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;wBAA3C,2BAA2C;;oBACtD,OAAA,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAI,EAAE,MAAM,CAAC;iBAAA;gBACzC,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,QAAQ,EAAE,GAAA;gBAC3B,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,QAAQ,EAAE,GAAA;aAC5B,CAAC;SACH;QAED,6BAAQ,GAAR,UAAS,KAAa;YAAtB,iBAMC;YALC,OAAO;gBACL,OAAO,EAAE,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAA;gBACpE,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAA;gBACpC,IAAI,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAA;aACrC,CAAC;SACH;QAED,gCAAW,GAAX,UAAY,QAAgB;YAC1B,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;YAExC,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnC,OAAO,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;SACnD;QAID,gCAAW,GAAX,UAAY,KAAU,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC9D,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAA,CAAC,CAAC;YAEtE,OAAO,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC9D;QAID,mCAAc,GAAd,UAAe,KAAU,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YACjE,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE;gBACxF,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAE,CAAC,CAAC;iBAC5D;aACF;YAED,OAAO,OAAO,CAAC;SAChB;QAED,6BAAQ,GAAR;YACE,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAExB,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;gBAEvB,IAAI,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;;oBAC3C,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;gBAE3B,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,OAAO,IAAI,CAAC;aACb;YAED,OAAO,SAAS,CAAC;SAClB;QAED,6BAAQ,GAAR;YACE,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAEvB,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAE1B,IAAI,IAAI,CAAC,IAAI;oBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;;oBACrC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBAE5B,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEZ,OAAO,IAAI,CAAC;aACb;YAED,OAAO,SAAS,CAAC;SAClB;QAED,oCAAe,GAAf,UAAgB,KAAa,EAAE,QAAgB;YAC7C,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE1B,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;iBAC1D,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAC;YAE1C,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;YAE9C,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,OAAO,KAAK,EAAE,EAAE;gBACd,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAQ,CAAE,CAAC,CAAC;aACtC;YAED,OAAO,OAAO,CAAC;SAChB;QAED,iCAAY,GAAZ,UAAa,KAAyB;YACpC,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE1B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,OAAO,KAAK,EAAE;gBAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,CAAC;YAElD,OAAO,OAAO,CAAC;SAChB;QAED,iCAAY,GAAZ,UAAa,KAAyB;YACpC,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,EAAE,CAAC;YAE1B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAM,OAAO,GAAkB,EAAE,CAAC;YAElC,OAAO,KAAK,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,CAAC;YAE/C,OAAO,OAAO,CAAC;SAChB;QAED,yBAAI,GAAJ,UAAK,SAA4B;YAC/B,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE;gBACxF,IAAI,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;oBAAE,OAAO,OAAO,CAAC;aACxD;YAED,OAAO,SAAS,CAAC;SAClB;QAED,8BAAS,GAAT,UAAU,SAA4B;YACpC,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE;gBACxF,IAAI,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;oBAAE,OAAO,QAAQ,CAAC;aACzD;YAED,OAAO,CAAC,CAAC,CAAC;SACX;QAED,4BAAO,GAAP,UAAqB,UAAgC;YACnD,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;gBAC5E,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;aAClC;SACF;QAED,wBAAG,GAAH,UAAI,QAAgB;YAClB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,KAAK,IAAK,OAAA,QAAQ,KAAK,KAAK,GAAA,CAAC,CAAC;SACpD;QAID,4BAAO,GAAP,UAAQ,KAAU,EAAE,SAAwC;YAAxC,0BAAA,EAAA,mBAAwC;YAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAA,CAAC,CAAC;SAC7D;QAED,4BAAO,GAAP;YACE,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,QAAC,KAAK,CAAC,KAAM,CAAC,GAAG,IAAI,CAAC,KAAK,IAAC,CAAC,CAAC;YAE5D,OAAO,KAAK,CAAC;SACd;QAED,gCAAW,GAAX;YACE,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,QAAC,KAAK,CAAC,KAAM,CAAC,GAAG,IAAI,IAAC,CAAC,CAAC;YAEtD,OAAO,KAAK,CAAC;SACd;QAED,6BAAQ,GAAR,UAAS,QAA0C;YAA1C,yBAAA,EAAA,WAA4B,IAAI,CAAC,SAAS;YACjD,OAAO,IAAI,CAAC,OAAO,EAAE;iBAClB,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,QAAQ,CAAC,KAAK,CAAC,GAAA,CAAC;iBAC7B,IAAI,CAAC,OAAO,CAAC,CAAC;SAClB;;QAGA,qBAAC,MAAM,CAAC,QAAQ,CAAC,GAAlB;;;;;wBACW,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC;;;6BAAE,IAAI;wBAC5C,qBAAM,IAAI,CAAC,KAAK,EAAA;;wBAAhB,SAAgB,CAAC;;;wBAD6B,QAAQ,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;;;;;SAG7E;yBACF;KAAA;;IC5YD;;;;ICAA;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map index b4e4d3e0a1..529ba4c447 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\n\nimport compare from 'just-compare';\n\nexport class ListNode {\n next: ListNode | undefined;\n previous: ListNode | undefined;\n constructor(public readonly value: T) {}\n}\n\nexport class LinkedList {\n private first: ListNode | undefined;\n private last: ListNode | undefined;\n private size = 0;\n\n get head(): ListNode | undefined {\n return this.first;\n }\n get tail(): ListNode | undefined {\n return this.last;\n }\n get length(): number {\n return this.size;\n }\n\n private attach(\n value: T,\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode {\n if (!previousNode) return this.addHead(value);\n\n if (!nextNode) return this.addTail(value);\n\n const node = new ListNode(value);\n node.previous = previousNode;\n previousNode.next = node;\n node.next = nextNode;\n nextNode.previous = node;\n\n this.size++;\n\n return node;\n }\n\n private attachMany(\n values: T[],\n previousNode: ListNode | undefined,\n nextNode: ListNode | undefined,\n ): ListNode[] {\n if (!values.length) return [];\n\n if (!previousNode) return this.addManyHead(values);\n\n if (!nextNode) return this.addManyTail(values);\n\n const list = new LinkedList();\n list.addManyTail(values);\n list.first!.previous = previousNode;\n previousNode.next = list.first;\n list.last!.next = nextNode;\n nextNode.previous = list.last;\n\n this.size += values.length;\n\n return list.toNodeArray();\n }\n\n private detach(node: ListNode) {\n if (!node.previous) return this.dropHead();\n\n if (!node.next) return this.dropTail();\n\n node.previous.next = node.next;\n node.next.previous = node.previous;\n\n this.size--;\n\n return node;\n }\n\n add(value: T) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addAfter.call(this, value, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addBefore.call(this, value, ...params),\n byIndex: (position: number) => this.addByIndex(value, position),\n head: () => this.addHead(value),\n tail: () => this.addTail(value),\n };\n }\n\n addMany(values: T[]) {\n return {\n after: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyAfter.call(this, values, ...params),\n before: (...params: [T] | [any, ListComparisonFn]) =>\n this.addManyBefore.call(this, values, ...params),\n byIndex: (position: number) => this.addManyByIndex(values, position),\n head: () => this.addManyHead(values),\n tail: () => this.addManyTail(values),\n };\n }\n\n addAfter(value: T, previousValue: T): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\n }\n\n addBefore(value: T, nextValue: T): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\n }\n\n addByIndex(value: T, position: number): ListNode {\n if (position < 0) position += this.size;\n else if (position >= this.size) return this.addTail(value);\n\n if (position <= 0) return this.addHead(value);\n\n const next = this.get(position)!;\n\n return this.attach(value, next.previous, next);\n }\n\n addHead(value: T): ListNode {\n const node = new ListNode(value);\n\n node.next = this.first;\n\n if (this.first) this.first.previous = node;\n else this.last = node;\n\n this.first = node;\n this.size++;\n\n return node;\n }\n\n addTail(value: T): ListNode {\n const node = new ListNode(value);\n\n if (this.first) {\n node.previous = this.last;\n this.last!.next = node;\n this.last = node;\n } else {\n this.first = node;\n this.last = node;\n }\n\n this.size++;\n\n return node;\n }\n\n addManyAfter(values: T[], previousValue: T): ListNode[];\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyAfter(\n values: T[],\n previousValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const previous = this.find(node => compareFn(node.value, previousValue));\n\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\n }\n\n addManyBefore(values: T[], nextValue: T): ListNode[];\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\n addManyBefore(\n values: T[],\n nextValue: any,\n compareFn: ListComparisonFn = compare,\n ): ListNode[] {\n const next = this.find(node => compareFn(node.value, nextValue));\n\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\n }\n\n addManyByIndex(values: T[], position: number): ListNode[] {\n if (position < 0) position += this.size;\n\n if (position <= 0) return this.addManyHead(values);\n\n if (position >= this.size) return this.addManyTail(values);\n\n const next = this.get(position)!;\n\n return this.attachMany(values, next.previous, next);\n }\n\n addManyHead(values: T[]): ListNode[] {\n return values.reduceRight[]>((nodes, value) => {\n nodes.unshift(this.addHead(value));\n return nodes;\n }, []);\n }\n\n addManyTail(values: T[]): ListNode[] {\n return values.map(value => this.addTail(value));\n }\n\n drop() {\n return {\n byIndex: (position: number) => this.dropByIndex(position),\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValue.apply(this, params),\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\n this.dropByValueAll.apply(this, params),\n head: () => this.dropHead(),\n tail: () => this.dropTail(),\n };\n }\n\n dropMany(count: number) {\n return {\n byIndex: (position: number) => this.dropManyByIndex(count, position),\n head: () => this.dropManyHead(count),\n tail: () => this.dropManyTail(count),\n };\n }\n\n dropByIndex(position: number): ListNode | undefined {\n if (position < 0) position += this.size;\n\n const current = this.get(position);\n\n return current ? this.detach(current) : undefined;\n }\n\n dropByValue(value: T): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\n const position = this.findIndex(node => compareFn(node.value, value));\n\n return position < 0 ? undefined : this.dropByIndex(position);\n }\n\n dropByValueAll(value: T): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\n const dropped: ListNode[] = [];\n\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (compareFn(current.value, value)) {\n dropped.push(this.dropByIndex(position - dropped.length)!);\n }\n }\n\n return dropped;\n }\n\n dropHead(): ListNode | undefined {\n const head = this.first;\n\n if (head) {\n this.first = head.next;\n\n if (this.first) this.first.previous = undefined;\n else this.last = undefined;\n\n this.size--;\n\n return head;\n }\n\n return undefined;\n }\n\n dropTail(): ListNode | undefined {\n const tail = this.last;\n\n if (tail) {\n this.last = tail.previous;\n\n if (this.last) this.last.next = undefined;\n else this.first = undefined;\n\n this.size--;\n\n return tail;\n }\n\n return undefined;\n }\n\n dropManyByIndex(count: number, position: number): ListNode[] {\n if (count <= 0) return [];\n\n if (position < 0) position = Math.max(position + this.size, 0);\n else if (position >= this.size) return [];\n\n count = Math.min(count, this.size - position);\n\n const dropped: ListNode[] = [];\n\n while (count--) {\n const current = this.get(position);\n dropped.push(this.detach(current!)!);\n }\n\n return dropped;\n }\n\n dropManyHead(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.unshift(this.dropHead()!);\n\n return dropped;\n }\n\n dropManyTail(count: Exclude): ListNode[] {\n if (count <= 0) return [];\n\n count = Math.min(count, this.size);\n\n const dropped: ListNode[] = [];\n\n while (count--) dropped.push(this.dropTail()!);\n\n return dropped;\n }\n\n find(predicate: ListIteratorFn): ListNode | undefined {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return current;\n }\n\n return undefined;\n }\n\n findIndex(predicate: ListIteratorFn): number {\n for (let current = this.first, position = 0; current; position++, current = current.next) {\n if (predicate(current, position, this)) return position;\n }\n\n return -1;\n }\n\n forEach(iteratorFn: ListIteratorFn) {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n iteratorFn(node, position, this);\n }\n }\n\n get(position: number): ListNode | undefined {\n return this.find((_, index) => position === index);\n }\n\n indexOf(value: T): number;\n indexOf(value: any, compareFn: ListComparisonFn): number;\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\n return this.findIndex(node => compareFn(node.value, value));\n }\n\n toArray(): T[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node.value));\n\n return array;\n }\n\n toNodeArray(): ListNode[] {\n const array = new Array(this.size);\n\n this.forEach((node, index) => (array[index!] = node));\n\n return array;\n }\n\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\n return this.toArray()\n .map(value => mapperFn(value))\n .join(' <-> ');\n }\n\n // Cannot use Generator type because of ng-packagr\n *[Symbol.iterator](): any {\n for (let node = this.first, position = 0; node; position++, node = node.next) {\n yield node.value;\n }\n }\n}\n\nexport type ListMapperFn = (value: T) => any;\n\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\n\nexport type ListIteratorFn = (\n node: ListNode,\n index?: number,\n list?: LinkedList,\n) => R;\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../projects/utils/src/lib/linked-list.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","done","value","pop","length","push","e","step","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","LinkedList","size","defineProperty","prototype","first","last","attach","previousNode","nextNode","addHead","addTail","node","ListNode","previous","attachMany","values","addManyHead","addManyTail","list","toNodeArray","detach","dropTail","dropHead","add","_this","after","params","_i","_a","addAfter","apply","before","addBefore","byIndex","position","addByIndex","head","tail","addMany","addManyAfter","addManyBefore","addManyByIndex","previousValue","compareFn","compare","find","nextValue","get","reduceRight","nodes","unshift","map","drop","dropByIndex","byValue","dropByValue","byValueAll","dropByValueAll","dropMany","count","dropManyByIndex","dropManyHead","dropManyTail","current","undefined","findIndex","dropped","Math","max","min","predicate","forEach","iteratorFn","index","indexOf","toArray","array","Array","toString","mapperFn","JSON","stringify","join"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/* tslint:disable:no-non-null-assertion */\r\n\r\nimport compare from 'just-compare';\r\n\r\nexport class ListNode {\r\n next: ListNode | undefined;\r\n previous: ListNode | undefined;\r\n constructor(public readonly value: T) {}\r\n}\r\n\r\nexport class LinkedList {\r\n private first: ListNode | undefined;\r\n private last: ListNode | undefined;\r\n private size = 0;\r\n\r\n get head(): ListNode | undefined {\r\n return this.first;\r\n }\r\n get tail(): ListNode | undefined {\r\n return this.last;\r\n }\r\n get length(): number {\r\n return this.size;\r\n }\r\n\r\n private attach(\r\n value: T,\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode {\r\n if (!previousNode) return this.addHead(value);\r\n\r\n if (!nextNode) return this.addTail(value);\r\n\r\n const node = new ListNode(value);\r\n node.previous = previousNode;\r\n previousNode.next = node;\r\n node.next = nextNode;\r\n nextNode.previous = node;\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n private attachMany(\r\n values: T[],\r\n previousNode: ListNode | undefined,\r\n nextNode: ListNode | undefined,\r\n ): ListNode[] {\r\n if (!values.length) return [];\r\n\r\n if (!previousNode) return this.addManyHead(values);\r\n\r\n if (!nextNode) return this.addManyTail(values);\r\n\r\n const list = new LinkedList();\r\n list.addManyTail(values);\r\n list.first!.previous = previousNode;\r\n previousNode.next = list.first;\r\n list.last!.next = nextNode;\r\n nextNode.previous = list.last;\r\n\r\n this.size += values.length;\r\n\r\n return list.toNodeArray();\r\n }\r\n\r\n private detach(node: ListNode) {\r\n if (!node.previous) return this.dropHead();\r\n\r\n if (!node.next) return this.dropTail();\r\n\r\n node.previous.next = node.next;\r\n node.next.previous = node.previous;\r\n\r\n this.size--;\r\n\r\n return node;\r\n }\r\n\r\n add(value: T) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addAfter.call(this, value, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addBefore.call(this, value, ...params),\r\n byIndex: (position: number) => this.addByIndex(value, position),\r\n head: () => this.addHead(value),\r\n tail: () => this.addTail(value),\r\n };\r\n }\r\n\r\n addMany(values: T[]) {\r\n return {\r\n after: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyAfter.call(this, values, ...params),\r\n before: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.addManyBefore.call(this, values, ...params),\r\n byIndex: (position: number) => this.addManyByIndex(values, position),\r\n head: () => this.addManyHead(values),\r\n tail: () => this.addManyTail(values),\r\n };\r\n }\r\n\r\n addAfter(value: T, previousValue: T): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn): ListNode;\r\n addAfter(value: T, previousValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attach(value, previous, previous.next) : this.addTail(value);\r\n }\r\n\r\n addBefore(value: T, nextValue: T): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn): ListNode;\r\n addBefore(value: T, nextValue: any, compareFn: ListComparisonFn = compare): ListNode {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attach(value, next.previous, next) : this.addHead(value);\r\n }\r\n\r\n addByIndex(value: T, position: number): ListNode {\r\n if (position < 0) position += this.size;\r\n else if (position >= this.size) return this.addTail(value);\r\n\r\n if (position <= 0) return this.addHead(value);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attach(value, next.previous, next);\r\n }\r\n\r\n addHead(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n node.next = this.first;\r\n\r\n if (this.first) this.first.previous = node;\r\n else this.last = node;\r\n\r\n this.first = node;\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addTail(value: T): ListNode {\r\n const node = new ListNode(value);\r\n\r\n if (this.first) {\r\n node.previous = this.last;\r\n this.last!.next = node;\r\n this.last = node;\r\n } else {\r\n this.first = node;\r\n this.last = node;\r\n }\r\n\r\n this.size++;\r\n\r\n return node;\r\n }\r\n\r\n addManyAfter(values: T[], previousValue: T): ListNode[];\r\n addManyAfter(values: T[], previousValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyAfter(\r\n values: T[],\r\n previousValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const previous = this.find(node => compareFn(node.value, previousValue));\r\n\r\n return previous ? this.attachMany(values, previous, previous.next) : this.addManyTail(values);\r\n }\r\n\r\n addManyBefore(values: T[], nextValue: T): ListNode[];\r\n addManyBefore(values: T[], nextValue: any, compareFn: ListComparisonFn): ListNode[];\r\n addManyBefore(\r\n values: T[],\r\n nextValue: any,\r\n compareFn: ListComparisonFn = compare,\r\n ): ListNode[] {\r\n const next = this.find(node => compareFn(node.value, nextValue));\r\n\r\n return next ? this.attachMany(values, next.previous, next) : this.addManyHead(values);\r\n }\r\n\r\n addManyByIndex(values: T[], position: number): ListNode[] {\r\n if (position < 0) position += this.size;\r\n\r\n if (position <= 0) return this.addManyHead(values);\r\n\r\n if (position >= this.size) return this.addManyTail(values);\r\n\r\n const next = this.get(position)!;\r\n\r\n return this.attachMany(values, next.previous, next);\r\n }\r\n\r\n addManyHead(values: T[]): ListNode[] {\r\n return values.reduceRight[]>((nodes, value) => {\r\n nodes.unshift(this.addHead(value));\r\n return nodes;\r\n }, []);\r\n }\r\n\r\n addManyTail(values: T[]): ListNode[] {\r\n return values.map(value => this.addTail(value));\r\n }\r\n\r\n drop() {\r\n return {\r\n byIndex: (position: number) => this.dropByIndex(position),\r\n byValue: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValue.apply(this, params),\r\n byValueAll: (...params: [T] | [any, ListComparisonFn]) =>\r\n this.dropByValueAll.apply(this, params),\r\n head: () => this.dropHead(),\r\n tail: () => this.dropTail(),\r\n };\r\n }\r\n\r\n dropMany(count: number) {\r\n return {\r\n byIndex: (position: number) => this.dropManyByIndex(count, position),\r\n head: () => this.dropManyHead(count),\r\n tail: () => this.dropManyTail(count),\r\n };\r\n }\r\n\r\n dropByIndex(position: number): ListNode | undefined {\r\n if (position < 0) position += this.size;\r\n\r\n const current = this.get(position);\r\n\r\n return current ? this.detach(current) : undefined;\r\n }\r\n\r\n dropByValue(value: T): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn): ListNode | undefined;\r\n dropByValue(value: any, compareFn: ListComparisonFn = compare): ListNode | undefined {\r\n const position = this.findIndex(node => compareFn(node.value, value));\r\n\r\n return position < 0 ? undefined : this.dropByIndex(position);\r\n }\r\n\r\n dropByValueAll(value: T): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn): ListNode[];\r\n dropByValueAll(value: any, compareFn: ListComparisonFn = compare): ListNode[] {\r\n const dropped: ListNode[] = [];\r\n\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (compareFn(current.value, value)) {\r\n dropped.push(this.dropByIndex(position - dropped.length)!);\r\n }\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropHead(): ListNode | undefined {\r\n const head = this.first;\r\n\r\n if (head) {\r\n this.first = head.next;\r\n\r\n if (this.first) this.first.previous = undefined;\r\n else this.last = undefined;\r\n\r\n this.size--;\r\n\r\n return head;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropTail(): ListNode | undefined {\r\n const tail = this.last;\r\n\r\n if (tail) {\r\n this.last = tail.previous;\r\n\r\n if (this.last) this.last.next = undefined;\r\n else this.first = undefined;\r\n\r\n this.size--;\r\n\r\n return tail;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n dropManyByIndex(count: number, position: number): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n if (position < 0) position = Math.max(position + this.size, 0);\r\n else if (position >= this.size) return [];\r\n\r\n count = Math.min(count, this.size - position);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) {\r\n const current = this.get(position);\r\n dropped.push(this.detach(current!)!);\r\n }\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyHead(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.unshift(this.dropHead()!);\r\n\r\n return dropped;\r\n }\r\n\r\n dropManyTail(count: Exclude): ListNode[] {\r\n if (count <= 0) return [];\r\n\r\n count = Math.min(count, this.size);\r\n\r\n const dropped: ListNode[] = [];\r\n\r\n while (count--) dropped.push(this.dropTail()!);\r\n\r\n return dropped;\r\n }\r\n\r\n find(predicate: ListIteratorFn): ListNode | undefined {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return current;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: ListIteratorFn): number {\r\n for (let current = this.first, position = 0; current; position++, current = current.next) {\r\n if (predicate(current, position, this)) return position;\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n forEach(iteratorFn: ListIteratorFn) {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n iteratorFn(node, position, this);\r\n }\r\n }\r\n\r\n get(position: number): ListNode | undefined {\r\n return this.find((_, index) => position === index);\r\n }\r\n\r\n indexOf(value: T): number;\r\n indexOf(value: any, compareFn: ListComparisonFn): number;\r\n indexOf(value: any, compareFn: ListComparisonFn = compare): number {\r\n return this.findIndex(node => compareFn(node.value, value));\r\n }\r\n\r\n toArray(): T[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node.value));\r\n\r\n return array;\r\n }\r\n\r\n toNodeArray(): ListNode[] {\r\n const array = new Array(this.size);\r\n\r\n this.forEach((node, index) => (array[index!] = node));\r\n\r\n return array;\r\n }\r\n\r\n toString(mapperFn: ListMapperFn = JSON.stringify): string {\r\n return this.toArray()\r\n .map(value => mapperFn(value))\r\n .join(' <-> ');\r\n }\r\n\r\n // Cannot use Generator type because of ng-packagr\r\n *[Symbol.iterator](): any {\r\n for (let node = this.first, position = 0; node; position++, node = node.next) {\r\n yield node.value;\r\n }\r\n }\r\n}\r\n\r\nexport type ListMapperFn = (value: T) => any;\r\n\r\nexport type ListComparisonFn = (value1: T, value2: any) => boolean;\r\n\r\nexport type ListIteratorFn = (\r\n node: ListNode,\r\n index?: number,\r\n list?: LinkedList,\r\n) => R;\r\n"]} \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock index a771f5d7c2..032e7504c1 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0-rc.4.tgz#54f6e75e2736c9c97a55146e9dc2af82f106c676" - integrity sha512-g5mRdK1F/BbhJVff9W5BIeH0Ca9GClyVXRHOIj9VWxYmR4DI3cQUpKS5uTKBp4injTswLYFntZP4RsEeyBRg2g== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0-rc.4.tgz#d5dc9d7d032a434ec49554a3f672dfed637edd61" - integrity sha512-IqZ1B/5SohPJ27g/VxFkvk1ljirTw0gJbpqNLXsnfqZ0OAwBM2yhDB6DE+CAKbi/908flzdNSujFvm0/MaleCA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~3.1.0-rc.4" - "@abp/bootstrap" "~3.1.0-rc.4" - "@abp/bootstrap-datepicker" "~3.1.0-rc.4" - "@abp/datatables.net-bs4" "~3.1.0-rc.4" - "@abp/font-awesome" "~3.1.0-rc.4" - "@abp/jquery-form" "~3.1.0-rc.4" - "@abp/jquery-validation-unobtrusive" "~3.1.0-rc.4" - "@abp/lodash" "~3.1.0-rc.4" - "@abp/luxon" "~3.1.0-rc.4" - "@abp/malihu-custom-scrollbar-plugin" "~3.1.0-rc.4" - "@abp/select2" "~3.1.0-rc.4" - "@abp/sweetalert" "~3.1.0-rc.4" - "@abp/timeago" "~3.1.0-rc.4" - "@abp/toastr" "~3.1.0-rc.4" - -"@abp/aspnetcore.mvc.ui@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0-rc.4.tgz#3f3f49d967802ab6cb024615642b84391bd00817" - integrity sha512-m55je2589BKMOC6m7CUqZ84iS+GOt5mzTEfviHHCb5jR4l1djzdzBXepDyXrJNC7I0yyYQ23WCkv5Hq9Z6LOlg== +"@abp/aspnetcore.mvc.ui.theme.basic@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.1.0.tgz#5f1f308621cced2f0a4272fe612f485558bcab07" + integrity sha512-zaRw34HwEESbYPYPsn0wH4lE4o9PuwJzovS1T2vmRg8wDgeOSkxC7uFU5If1QcFHuADkI3jfsyk8Xe9nEqz2Jg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~3.1.0" + +"@abp/aspnetcore.mvc.ui.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.1.0.tgz#9a9cc4a2c2bdfada9c69e35e15cc5491f1256712" + integrity sha512-DnLebcBACGTlCyJ05CRP3KXCGqWw1X3aXsdDnqQlohrLGwZHxDMZfS8HswhclG2Ak44MQn/4VtuUqRAs1PKlLg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~3.1.0" + "@abp/bootstrap" "~3.1.0" + "@abp/bootstrap-datepicker" "~3.1.0" + "@abp/datatables.net-bs4" "~3.1.0" + "@abp/font-awesome" "~3.1.0" + "@abp/jquery-form" "~3.1.0" + "@abp/jquery-validation-unobtrusive" "~3.1.0" + "@abp/lodash" "~3.1.0" + "@abp/luxon" "~3.1.0" + "@abp/malihu-custom-scrollbar-plugin" "~3.1.0" + "@abp/select2" "~3.1.0" + "@abp/sweetalert" "~3.1.0" + "@abp/timeago" "~3.1.0" + "@abp/toastr" "~3.1.0" + +"@abp/aspnetcore.mvc.ui@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.1.0.tgz#4a80efec4d1c41d266af919068dfbb6f6324fa7f" + integrity sha512-y6kVikbuCJlQbAvMdA/j2DwxLX0Fv8rRhjmmfr/ocEDrMridt1a5rO5JqDab8WvJKJjDudoobf1mSk9ZNxtyvQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ path "^0.12.7" rimraf "^3.0.2" -"@abp/bootstrap-datepicker@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0-rc.4.tgz#8addc10d8db4e2339d5650ebc04ff40d8405565c" - integrity sha512-ZIKQ/rZP+y3P7OPvZvlp/asIbEzKHVqHVrZwkvX6nZk/0n5o/Siu4Hy/FTBIm+d6Zyx2Y40ux6k5uJEG84TBMg== +"@abp/bootstrap-datepicker@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.1.0.tgz#47198667eafa4a920dd72f38a22452bdeadf0edd" + integrity sha512-yBmEuiorGNa5LSvjXfVGJ/CLlW/fGwij07I+gbGnwY0gVp4ydfA15LJfuCdfHBo2ZIDFXe7hQuVYFEH1gbLpkA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0-rc.4.tgz#7c92965c2a35edebb3a529bdd97c0fd6596d281c" - integrity sha512-V8/R9EI0rQkTAtvsQwSHf/cQoJXBvQ/JvqUPNysPM+SQXaSvcyojwDBS7iL/QYsOvoK/gQ9mdLMU9ZCBy7DCZA== +"@abp/bootstrap@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.1.0.tgz#7bd7b81a67712154fa12d01b6051e71f316be048" + integrity sha512-I64cCBo0OS14A29y/dEhKBPeXPt1djNoxZo4OXhHZAAmOM3fP3t8y9nDNCr3L2r6/FT8RQH7AW0/jJjER94KvA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" bootstrap "^4.5.0" bootstrap-v4-rtl "4.4.1-2" -"@abp/core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0-rc.4.tgz#ed4c409255a88693592919314fe1eb27775bee68" - integrity sha512-V4qC3f5WjY76fl26rwT/QXgTrIKivCv3qHurrv04Ni68kxC4lRqHEKaElZh5ZLXWUrwTLs8CHTwQ6oD9jZzO8A== +"@abp/core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.1.0.tgz#13ce01a68f0e2e9ab976f30d7bf892a9037af4f7" + integrity sha512-hLN0W5/0PuyIBIGxmLQvnbec0eBlXB1vS7YqrmiMv0WPgnHXx36FXfUUuX74JHTfTQFMGWL3EOrzm6UBe2+0VA== dependencies: - "@abp/utils" "^3.1.0-rc.4" + "@abp/utils" "^3.1.0" -"@abp/datatables.net-bs4@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0-rc.4.tgz#dd42fe0cc9e71a34d72b87b569c8d9bb9c576815" - integrity sha512-TgOIWIA7qgW+Z8zp1RtPoZoE6CNUWYOVC7bJ8ZfwXuBpTbIOJyuzYFLySR2seYae4uePbVZpSmuMNgrtPKkGdA== +"@abp/datatables.net-bs4@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.1.0.tgz#c8033ffff1a360c6cb98f8871ecec5d8f94c3ef6" + integrity sha512-3xx3Er8i8IJ/mYEYl+MxGyY+sZo965f0MCoIAGPV7dNuULfiNYPhvym+4LXzocRZUlF4qrXxXPLo3njiCQNAUQ== dependencies: - "@abp/datatables.net" "~3.1.0-rc.4" + "@abp/datatables.net" "~3.1.0" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0-rc.4.tgz#98861ee58eb2527f07cf3352af55b782cc13e3fc" - integrity sha512-rsQpMhy5QVSzNG0zdhxR0I9lJf10tK0xLOkM+aIjxNjGnylIUeconDABp+bGZeZNOVHo7nWE9g0hL9MDKXhbgw== +"@abp/datatables.net@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.1.0.tgz#db4fe94cf4216a59a3121d0d38b57092d7524f2a" + integrity sha512-9av6Dk1qEMAahjZCEn3hAP9mNCvr8HBcYBEqhGMACCk+rLjAJgzKKzV80cvlerg1VGoBTdQ0NgN22ywsWqDyOg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" datatables.net "^1.10.21" -"@abp/font-awesome@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0-rc.4.tgz#d63ff941b541a29a5689938feb4f681eae33ee99" - integrity sha512-NrU/4E3si71gC6ty9JH5KRqMKco0ZINReOqAqTQelWGshxClybLHjodf6QXuk2GOYK3RAmnUX7/33cm8g0S3zA== +"@abp/font-awesome@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.1.0.tgz#00792619894b8d0f15801df641ee57eda1d7cdba" + integrity sha512-fRd8QtVmfBiEoQpYgvVoNUcoyje3mtGqfIVtzeH2wnwEWKEO8SFfMcuWetyY2pk06VgpRnKNHGumyHnaNTCiUQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0-rc.4.tgz#8eb717e1bfa589b45762c418ca7e4a230660d9d4" - integrity sha512-Luz1b2E8rQA34c7UP6tBXKvX40SbwGJ3Q/NoAJEuEBxuWMx/SFZCbQ0JX8OqtyvH7A/GTBM+LqQGC2vXATrm7g== +"@abp/jquery-form@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.1.0.tgz#d095dea5200a13714dddd4ff1067126a01944440" + integrity sha512-Bs1BJ1coJMC8kFme9SffIicUSx7ULGzvdHfatzEbL6oH7KCSU/smBRTdAuZ/l85Qfftd0C6R9ibXehgKlagQKw== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0-rc.4.tgz#f675c916c7992e1868dd763bd737581d0182d35a" - integrity sha512-rCgtfpDKUOM+nsZ5NC3tLsTZ5TfQch6XJXrrJq5PDwpdyQkbth5vBbEQrWawSy/m0omGJWS074GcqQBdOPCVLw== +"@abp/jquery-validation-unobtrusive@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.1.0.tgz#c4a6e99f8cadc437b83574fbb2437beaccb23241" + integrity sha512-WpZPnfx0MR9E1c7TB9M/hU4AkToTaPsLg+P7HfCihB6g7SVrjdLxP4w90lIejro3raK2BjU4726FHqgFQSygTA== dependencies: - "@abp/jquery-validation" "~3.1.0-rc.4" + "@abp/jquery-validation" "~3.1.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0-rc.4.tgz#d1624a2b232729ac3d71dc4c02d91cdc92044250" - integrity sha512-uID9mOupRGvvevsnHAEZeijLTREY2sVR+eHs9ecxr4c2j2UuFuIk0ebuxMD4yY6PkjH3a/odKlAw3ddtAYVF3Q== +"@abp/jquery-validation@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.1.0.tgz#ace497b864df008385a2fcabf6ef7e014a663a1d" + integrity sha512-kq36uSs54SVTYcGsy/CQZlIW98mfmhfNOHsnxn/W4U1prMSZdH7yegCEfHlHN2ERtubD6UEWHxx5D1JUyDsmvg== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" jquery-validation "^1.19.2" -"@abp/jquery@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0-rc.4.tgz#a143bec2bebd2c22ae1f6fb9d29423627ecbb452" - integrity sha512-jfWIG8vZ8La3pBMxD4B7ffhL1KXdRPZfC/E5jOQmozDxygGC9/2OL/OAPrD0o9cwirYq3Yofd2KbLr0WDIQGRQ== +"@abp/jquery@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.1.0.tgz#e110148d13478ea86de8cff092164d7bd7a9ef63" + integrity sha512-8QzEMTHW0HNYrQbC11w28DxD3jGdaWlrGvAExmitBYIv9i1BYg/6M4bcKOVJPhiQoR50aCe+6xInFhNgfRNBCw== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" jquery "~3.5.1" -"@abp/lodash@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0-rc.4.tgz#2263a2554e44b577d0a25a3eaec9d2d658b9f3f0" - integrity sha512-tXekVHdI55J52J4GUYC5gNz8J9uc85YCnDJA3X5C+eLNJoHd/RJXVemTuQLS0KugZjic0alVbRuTvjt61CkL7A== +"@abp/lodash@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.1.0.tgz#a4175342b4fc14a92b8344ea783554c40e4e450c" + integrity sha512-RVclkRFjrjPtNVaAPJVPJJmI9QFbc2vZfwG+utDV4aZzytZOgESN8q8IbOGaCIj8KzvX1LeBSqvDRP81l9c5Tg== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" lodash "^4.17.15" -"@abp/luxon@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0-rc.4.tgz#73c667c8fa3e951031b8a3cc217640d704c437f3" - integrity sha512-IlzB1eLBH336gQSxJ/ZKjqXUCGCqS4nssvWNgeK/heONwDdIhqQ6ERYtEoAA0MWxYSJhWcOEkTiiWErnt4YneA== +"@abp/luxon@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.1.0.tgz#867f4395315b0727b39f9b5a5f4dc9bca7cfafde" + integrity sha512-Pf+g5yGCqKDEhGMM/V75zX/8pPJUoIv7xJdF9sLRTERr5NpsS8/23DZIn2KmzbNLThHDkAmayBxHZko4Ri1ykw== dependencies: luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0-rc.4.tgz#f8ee4c03220e1cd8e3f069a859ba20b6cfe40fcf" - integrity sha512-oq6Od+FukngrvofLrMX1Y94ivRrqNfmu/UDzBzBs95zGW97EPSrYl4/8YUFT2Vp7a7OBf/VCbb9gjGwrLh4u5w== +"@abp/malihu-custom-scrollbar-plugin@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.0.tgz#eab16ac9cddfbe9982baf946a468718dee34589e" + integrity sha512-/6TXbzyUh8qSMwZss1tTWkAeAnrAvSHeJRF32iVCYx769+6HJ4QZt1BWyT6/jgAdEHZspePh1+xAsrPRDZJ5aA== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0-rc.4.tgz#c97c968544197754b4ed57308672b1f106260019" - integrity sha512-sqKffeoDvItb2CRrQjHGEuLJTY1Uiw9U1xg7VQqd/rRRO6IimvPNsjy2m26uzPrhg9MFdzGW22pMf8oaE8KoYw== +"@abp/select2@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.1.0.tgz#459386918f15c591549e7c5b1d411536f781c2a0" + integrity sha512-I0dOXi9oPdzWQVZ5s4Lo4q6tTezQuqXSzZClmnJaQzkf7pCftnji+S727bkUIjwjkFAsT/YNMBCzgJBaiHS3uQ== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" select2 "^4.0.13" -"@abp/sweetalert@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0-rc.4.tgz#7ab26bf10425de59be2c9aabbec44ae5389b0532" - integrity sha512-lZNo2Qo9TUsYkiT64CB3An8EHzzIcqX1FSf706RRJs6sf/hDNhiX0uWeBY8p0OyHTa/cphT/AUsLMkZOXZqmJw== +"@abp/sweetalert@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.1.0.tgz#498df5abb8f68b660cd37f10e287188b6417c3ff" + integrity sha512-9YxVZQfrsGWdVmKeWAG4CoD+B0VObR94SsQQgUiYcl/07PPDxDPZHX/sh1H+pqHXv9/qpPOTS3/PCQAeIfuG/w== dependencies: - "@abp/core" "~3.1.0-rc.4" + "@abp/core" "~3.1.0" sweetalert "^2.1.2" -"@abp/timeago@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0-rc.4.tgz#d4c814e9d90d020eb96325ec2269c9aa7b4d732c" - integrity sha512-EnbmgteH2a98pAPhPWAMbNvE+ilkf7Ro+p6lw7TKZydpuUE/hYHqYbWB8Hd7aVuQQ+Hlki0bnZwV32ID13ZPDA== +"@abp/timeago@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.1.0.tgz#abae5287e01d36107516416256a1ccfcb0ca7953" + integrity sha512-xVOq5/5l/0w9vmWIF7dZzqa+7nl7NNG7ER8gbrdPOX86rCsD12DIOkFDLi+Q41kxzp7wbphDZIT/7RsPrhgDDQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" timeago "^1.6.7" -"@abp/toastr@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0-rc.4.tgz#eb73f4b4d938362c66b58edfd16c238b8343cd3a" - integrity sha512-MgxqZdoim9EhUxMztZa7d1aGUsuspLp0FwrSidrPz7Bp1d1sPqTmDwUbHOLDLvvT9GmLPexhI/A3ACX95elPZA== +"@abp/toastr@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.1.0.tgz#cebbb95c1f0b36306a0a58215dfda48a3ebe5f20" + integrity sha512-94PqZmbayVJnDKMrqbVhW0Z3D/sL3sV5gXfd53Ac5KNQvsBmQZ5/SvuuwuDzWYMQm0XwZ1h4fLAiTuoBMIxWCQ== dependencies: - "@abp/jquery" "~3.1.0-rc.4" + "@abp/jquery" "~3.1.0" toastr "^2.1.4" -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" From 7e290f4ba64c87d07a78af0c3f6e5c01b235b025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 15:47:05 +0300 Subject: [PATCH 230/474] Initialize blazorise --- .../MyProjectNameBlazorModule.cs | 20 +++++++++++++++++++ .../_Imports.razor | 3 ++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs index 459fede935..996c8a4925 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs @@ -1,8 +1,12 @@ using System; using System.Net.Http; +using Blazorise; +using Blazorise.Bootstrap; +using Blazorise.Icons.FontAwesome; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; using Volo.Abp.AspNetCore.Components.WebAssembly; using Volo.Abp.Autofac; using Volo.Abp.Http.Client.IdentityModel.WebAssembly; @@ -27,9 +31,18 @@ namespace MyCompanyName.MyProjectName.Blazor ConfigureAuthentication(builder); ConfigureHttpClient(context, environment); + ConfigureBlazorise(context); ConfigureUI(builder); } + private void ConfigureBlazorise(ServiceConfigurationContext context) + { + context.Services + .AddBlazorise() + .AddBootstrapProviders() + .AddFontAwesomeIcons(); + } + private static void ConfigureAuthentication(WebAssemblyHostBuilder builder) { builder.Services.AddOidcAuthentication(options => @@ -51,5 +64,12 @@ namespace MyCompanyName.MyProjectName.Blazor BaseAddress = new Uri(environment.BaseAddress) }); } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + context.ServiceProvider + .UseBootstrapProviders() + .UseFontAwesomeIcons(); + } } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor index e6569dd1cb..c1ac73cf4c 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor @@ -7,4 +7,5 @@ @using Microsoft.JSInterop @using MyCompanyName.MyProjectName.Blazor @using MyCompanyName.MyProjectName.Blazor.Shared -@using Blazorise \ No newline at end of file +@using Blazorise +@using Blazorise.DataGrid \ No newline at end of file From 16a7fcbb45e45d6f94d133f37d44d322641e5975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 15:47:25 +0300 Subject: [PATCH 231/474] User blazorise datagrid for the role management page. --- .../Pages/RoleManagement.razor | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index efb95d799c..bff7a5e623 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -10,21 +10,13 @@

    @L["Roles"]

    -@if (_roles != null) -{ -
      - @foreach (var role in _roles.Items) - { -
    • - @role.Id / @role.Name - - () - -
    • - } -
    -

    Total role count: @_roles.TotalCount

    -} + + +

    New Role

    @@ -33,9 +25,20 @@ @code { + + async Task OnReadGridData(DataGridReadDataEventArgs e) + { + currentPage = e.Page - 1; + await GetRolesAsync(); + StateHasChanged(); + } + private IdentityRoleCreateDto _newRole = new IdentityRoleCreateDto(); - PagedResultDto _roles; + int currentPage = 0; + readonly int pageSize = LimitedResultRequestDto.DefaultMaxResultCount; + int? totalCount = 0; + IReadOnlyList roles = Array.Empty(); protected override async Task OnInitializedAsync() { @@ -44,7 +47,15 @@ private async Task GetRolesAsync() { - _roles = await RoleAppService.GetListAsync(new PagedAndSortedResultRequestDto()); + var result = await RoleAppService.GetListAsync( + new PagedAndSortedResultRequestDto + { + SkipCount = currentPage * pageSize, + MaxResultCount = pageSize + }); + + roles = result.Items; + totalCount = (int?)result.TotalCount; } private async Task CreateRoleAsync() From 6facd14ea4deb32e47d39200e9deec3ecc6b38bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 15:57:25 +0300 Subject: [PATCH 232/474] Move role management to a code behind file --- .../Pages/RoleManagement.razor | 57 ++--------------- .../Pages/RoleManagement.razor.cs | 62 +++++++++++++++++++ 2 files changed, 66 insertions(+), 53 deletions(-) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index bff7a5e623..44dadebd9d 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -3,7 +3,6 @@ @using Volo.Abp.Identity @using Microsoft.AspNetCore.Authorization @using Microsoft.Extensions.Localization -@using Volo.Abp.Application.Dtos @using Volo.Abp.Identity.Localization @inject IIdentityRoleAppService RoleAppService @inject IStringLocalizer L @@ -11,9 +10,9 @@

    @L["Roles"]

    @@ -22,52 +21,4 @@ - - -@code { - - async Task OnReadGridData(DataGridReadDataEventArgs e) - { - currentPage = e.Page - 1; - await GetRolesAsync(); - StateHasChanged(); - } - - private IdentityRoleCreateDto _newRole = new IdentityRoleCreateDto(); - - int currentPage = 0; - readonly int pageSize = LimitedResultRequestDto.DefaultMaxResultCount; - int? totalCount = 0; - IReadOnlyList roles = Array.Empty(); - - protected override async Task OnInitializedAsync() - { - await GetRolesAsync(); - } - - private async Task GetRolesAsync() - { - var result = await RoleAppService.GetListAsync( - new PagedAndSortedResultRequestDto - { - SkipCount = currentPage * pageSize, - MaxResultCount = pageSize - }); - - roles = result.Items; - totalCount = (int?)result.TotalCount; - } - - private async Task CreateRoleAsync() - { - await RoleAppService.CreateAsync(_newRole); - _newRole = new IdentityRoleCreateDto(); - await GetRolesAsync(); - } - - private async Task DeleteRoleAsync(Guid id) - { - await RoleAppService.DeleteAsync(id); - await GetRolesAsync(); - } -} \ No newline at end of file + \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs new file mode 100644 index 0000000000..74fb85de70 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Blazorise.DataGrid; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Identity; + +namespace MyCompanyName.MyProjectName.Blazor.Pages +{ + //TODO: Idea: Can we create a base class to simplify all these, like CrudPage<...>..? + + public partial class RoleManagement + { + private int _currentPage; + private int? _totalCount; + private IReadOnlyList _roles; + private IdentityRoleCreateDto _newRole; + + public RoleManagement() + { + _newRole = new IdentityRoleCreateDto(); + } + + protected override async Task OnInitializedAsync() + { + await GetRolesAsync(); + } + + private async Task GetRolesAsync() + { + var result = await RoleAppService.GetListAsync( + new PagedAndSortedResultRequestDto + { + SkipCount = _currentPage * LimitedResultRequestDto.DefaultMaxResultCount, + MaxResultCount = LimitedResultRequestDto.DefaultMaxResultCount + }); + + _roles = result.Items; + _totalCount = (int?)result.TotalCount; + } + + private async Task OnDataGridReadAsync(DataGridReadDataEventArgs e) + { + _currentPage = e.Page - 1; + await GetRolesAsync(); + StateHasChanged(); + } + + private async Task CreateRoleAsync() + { + await RoleAppService.CreateAsync(_newRole); + _newRole = new IdentityRoleCreateDto(); + await GetRolesAsync(); + } + + private async Task DeleteRoleAsync(Guid id) + { + await RoleAppService.DeleteAsync(id); + await GetRolesAsync(); + } + } +} From 5902c7c81c9bf430b702dc2642aa202ac52d0d9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 15:58:41 +0300 Subject: [PATCH 233/474] Update RoleManagement.razor --- .../Pages/RoleManagement.razor | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index 44dadebd9d..859de40ff0 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -14,7 +14,9 @@ ReadData="OnDataGridReadAsync" TotalItems="_totalCount" ShowPager="true"> - + + +

    New Role

    From d73f005adb490caec521ea8b705959b9b3c0025a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 16:12:55 +0300 Subject: [PATCH 234/474] Created actions column and implemented deleting a role --- .../Pages/RoleManagement.razor | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index 859de40ff0..d3a4818632 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -15,7 +15,22 @@ TotalItems="_totalCount" ShowPager="true"> - + + + + + Actions + + + Edit + Manage Permissions + + Delete + + + + + From e9d4095723560bc6e312e9750449f95810785bc8 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Thu, 3 Sep 2020 16:24:48 +0300 Subject: [PATCH 235/474] feat: add new field to EntityProp --- .../theme-shared/extensions/src/lib/models/entity-props.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts index 14fd37ad84..8e5e42e186 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts @@ -28,6 +28,7 @@ export class EntityProp extends Prop { readonly sortable: boolean; readonly valueResolver: PropCallback>; readonly action: ActionCallback; + readonly actionProvided: boolean; constructor(options: EntityPropOptions) { super( @@ -43,6 +44,7 @@ export class EntityProp extends Prop { this.sortable = options.sortable || false; this.valueResolver = options.valueResolver || (data => of(data.record[this.name])); this.action = options.action || (_ => {}); + this.actionProvided = !!options.action; } static create(options: EntityPropOptions) { From 4e82aae0fc11dd2f03c3f6795d90fc9610dd2846 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 3 Sep 2020 16:24:58 +0300 Subject: [PATCH 236/474] Update POST.md --- docs/en/Blog-Posts/2020-09-03 v3_1_Release_Stable/POST.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/en/Blog-Posts/2020-09-03 v3_1_Release_Stable/POST.md b/docs/en/Blog-Posts/2020-09-03 v3_1_Release_Stable/POST.md index d8fa61713e..fdbeb08c0d 100644 --- a/docs/en/Blog-Posts/2020-09-03 v3_1_Release_Stable/POST.md +++ b/docs/en/Blog-Posts/2020-09-03 v3_1_Release_Stable/POST.md @@ -4,6 +4,12 @@ It is exciting for us to announce that we've released the ABP Framework & ABP Co Since all the new features are already explained in details with the [3.1 RC Announcement Post](https://blog.abp.io/abp/ABP-Framework-v3.1-RC-Has-Been-Released), I will not repeat all the details here. Please read [the RC post](https://blog.abp.io/abp/ABP-Framework-v3.1-RC-Has-Been-Released) for **new feature and changes** you may need to do for your solution while upgrading to the version 3.1. +## Creating New Solutions + +You can create a new solution with the ABP Framework version 3.1 by either using the `abp new` command or using the **direct download** tab on the [get started page](https://abp.io/get-started). + +> See the [getting started document](https://docs.abp.io/en/abp/latest/Getting-Started) for details. + ## How to Upgrade an Existing Solution ### Install/Update the ABP CLI @@ -32,7 +38,7 @@ abp update After the update command, check [the RC blog post](https://blog.abp.io/abp/ABP-Framework-v3.1-RC-Has-Been-Released) to learn if you need to make any changes in your solution. -> You may want to see the new [upgrading document](https://docs.abp.io/en/abp/3.1/Upgrading). +> You may want to see the new [upgrading document](https://docs.abp.io/en/abp/latest/Upgrading). ## About the version 3.2 From 0ce70c9982f53f1b2726429d4d3775a54665b082 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Thu, 3 Sep 2020 16:25:07 +0300 Subject: [PATCH 237/474] feat: add class pointer to column body --- .../components/extensible-table/extensible-table.component.html | 1 + 1 file changed, 1 insertion(+) diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html index 7cb90c3329..e2644543e3 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html @@ -33,6 +33,7 @@ *ngIf="row['_' + prop.name].visible" [innerHTML]="row['_' + prop.name].value | async" (click)="prop.action({ getInjected: getInjected, record: row, index: i })" + [class.pointer]="prop.actionProvided" >

    From 284214ae03c4f0dcd449a8d3c1c19d644c07f49b Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Thu, 3 Sep 2020 16:34:53 +0300 Subject: [PATCH 238/474] feat: remove actionProvided --- .../extensible-table/extensible-table.component.html | 4 ++-- .../theme-shared/extensions/src/lib/models/entity-props.ts | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html index e2644543e3..fdf6e5e092 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html @@ -32,8 +32,8 @@
    diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts index 8e5e42e186..84ae0c360f 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts @@ -28,7 +28,6 @@ export class EntityProp extends Prop { readonly sortable: boolean; readonly valueResolver: PropCallback>; readonly action: ActionCallback; - readonly actionProvided: boolean; constructor(options: EntityPropOptions) { super( @@ -43,8 +42,7 @@ export class EntityProp extends Prop { this.columnWidth = options.columnWidth; this.sortable = options.sortable || false; this.valueResolver = options.valueResolver || (data => of(data.record[this.name])); - this.action = options.action || (_ => {}); - this.actionProvided = !!options.action; + this.action = options.action; } static create(options: EntityPropOptions) { From 22204a2f479dbcef37db707de367a5b17f46a3d6 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 3 Sep 2020 17:45:32 +0300 Subject: [PATCH 239/474] feat: add interpolate utility fn to replace placeholders --- .../core/src/lib/tests/string-utils.spec.ts | 26 ++++++++++++++++++- .../core/src/lib/utils/string-utils.ts | 6 +++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/core/src/lib/tests/string-utils.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/string-utils.spec.ts index a0642e43ee..c2f7a3c601 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/string-utils.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/string-utils.spec.ts @@ -1,4 +1,4 @@ -import { createTokenParser } from '../utils/string-utils'; +import { createTokenParser, interpolate } from '../utils/string-utils'; describe('String Utils', () => { describe('#createTokenParser', () => { @@ -19,4 +19,28 @@ describe('String Utils', () => { }, ); }); + + describe('#interpolate', () => { + test.each` + text | params | expected + ${'This is {0} and {1} example.'} | ${['foo', 'bar']} | ${'This is foo and bar example.'} + ${'This is {1} and {0} example.'} | ${['foo', 'bar']} | ${'This is bar and foo example.'} + ${'This is {0} and {0} example.'} | ${['foo', 'bar']} | ${'This is foo and foo example.'} + ${'This is {1} and {1} example.'} | ${['foo', 'bar']} | ${'This is bar and bar example.'} + ${'This is "{0}" and "{1}" example.'} | ${['foo', 'bar']} | ${'This is foo and bar example.'} + ${"This is '{1}' and '{0}' example."} | ${['foo', 'bar']} | ${'This is bar and foo example.'} + ${'This is { 0 } and {0} example.'} | ${['foo', 'bar']} | ${'This is foo and foo example.'} + ${'This is {1} and { 1 } example.'} | ${['foo', 'bar']} | ${'This is bar and bar example.'} + ${'This is {0}, {3}, {1}, and {2} example.'} | ${['foo', 'bar', 'baz', 'qux']} | ${'This is foo, qux, bar, and baz example.'} + ${'This is {0} with 0 example.'} | ${['foo']} | ${'This is foo with 0 example.'} + ${'This is {0} and {1} example.'} | ${['foo']} | ${'This is foo and {1} example.'} + ${'This is {0} and {1} example.'} | ${[]} | ${'This is {0} and {1} example.'} + ${'This is {0} example.'} | ${[null]} | ${'This is {0} example.'} + `( + 'should return $expected when text is $text and params are $params', + ({ text, params, expected }) => { + expect(interpolate(text, params)).toBe(expected); + }, + ); + }); }); diff --git a/npm/ng-packs/packages/core/src/lib/utils/string-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/string-utils.ts index 00db697325..7404dceab7 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/string-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/string-utils.ts @@ -15,3 +15,9 @@ export function createTokenParser(format: string) { }, {} as Record); }; } + +export function interpolate(text: string, params: string[]) { + return text + .replace(/(['"]?\{\s*(\d+)\s*\}['"]?)/g, (_, match, digit) => params[digit] ?? match) + .replace(/\s+/g, ' '); +} From 28371a3ba429d53fadc37040bcfa436a5ebca1c8 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 3 Sep 2020 17:47:06 +0300 Subject: [PATCH 240/474] fix: use interpolate to replace localization tokens --- .../packages/core/src/lib/states/config.state.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/states/config.state.ts b/npm/ng-packs/packages/core/src/lib/states/config.state.ts index 2aaf7a3bc2..ec9ccd6749 100644 --- a/npm/ng-packs/packages/core/src/lib/states/config.state.ts +++ b/npm/ng-packs/packages/core/src/lib/states/config.state.ts @@ -9,6 +9,7 @@ import { RestOccurError } from '../actions/rest.actions'; import { SetLanguage } from '../actions/session.actions'; import { ApplicationConfiguration } from '../models/application-configuration'; import { Config } from '../models/config'; +import { interpolate } from '../utils/string-utils'; import { SessionState } from './session.state'; @State({ @@ -180,14 +181,12 @@ export class ConfigState { return defaultValue || sourceKey; } + // [TODO]: next line should be removed in v3.2, breaking change!!! interpolateParams = interpolateParams.filter(params => params != null); - if (localization && interpolateParams && interpolateParams.length) { - interpolateParams.forEach(param => { - localization = localization.replace(/[\'\"]?\{[\d]+\}[\'\"]?/, param); - }); - } + if (localization) localization = interpolate(localization, interpolateParams); if (typeof localization !== 'string') localization = ''; + return localization || defaultValue || (key as string); }); From 4be899f7a70eee08d3d61aa19b71ff5fdc4b06bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 Sep 2020 09:19:54 +0300 Subject: [PATCH 241/474] Move ICachedApplicationConfigurationClient initialization to a better place. --- .../src/MyCompanyName.MyProjectName.Blazor/App.razor | 9 --------- .../src/MyCompanyName.MyProjectName.Blazor/Program.cs | 8 ++++++++ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor index dee136b071..1d13dc03dd 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/App.razor @@ -1,6 +1,4 @@ -@using Volo.Abp.AspNetCore.Mvc.Client @using Volo.Abp.Identity.Blazor.Pages -@inject ICachedApplicationConfigurationClient ConfigurationClient -@code -{ - protected override async Task OnInitializedAsync() - { - await ConfigurationClient.InitializeAsync(); - } -} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs index f89bdd3195..3413fafa9f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Volo.Abp; +using Volo.Abp.AspNetCore.Mvc.Client; namespace MyCompanyName.MyProjectName.Blazor { @@ -28,6 +29,13 @@ namespace MyCompanyName.MyProjectName.Blazor application.Initialize(host.Services); + using (var scope = host.Services.CreateScope()) + { + await scope.ServiceProvider + .GetRequiredService() + .InitializeAsync(); + } + await host.RunAsync(); } } From b16f1cc260b4242da6b799189f3c74288bee96f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 Sep 2020 10:54:33 +0300 Subject: [PATCH 242/474] Implemented role creation --- .../Pages/RoleManagement.razor | 39 ++++++++++++++++--- .../Pages/RoleManagement.razor.cs | 17 +++++++- 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index d3a4818632..3bac48024b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -7,7 +7,16 @@ @inject IIdentityRoleAppService RoleAppService @inject IStringLocalizer L -

    @L["Roles"]

    + + +

    @L["Roles"]

    +
    + + + + + +
    -

    New Role

    - - - - \ No newline at end of file + + + + + Create a new role + + + + + Name + + + + Default + Public + + + + + + + + \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs index 74fb85de70..5e8d6e4a51 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; +using Blazorise; using Blazorise.DataGrid; using Volo.Abp.Application.Dtos; using Volo.Abp.Identity; @@ -15,6 +16,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages private int? _totalCount; private IReadOnlyList _roles; private IdentityRoleCreateDto _newRole; + private Modal _createModal; public RoleManagement() { @@ -45,12 +47,23 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages await GetRolesAsync(); StateHasChanged(); } - + + private async Task OpenCreateModalAsync() + { + _newRole = new IdentityRoleCreateDto(); + _createModal.Show(); + } + + private void CloseCreateModal() + { + _createModal.Hide(); + } + private async Task CreateRoleAsync() { await RoleAppService.CreateAsync(_newRole); - _newRole = new IdentityRoleCreateDto(); await GetRolesAsync(); + _createModal.Hide(); } private async Task DeleteRoleAsync(Guid id) From 58888316e770acadecd9340adc41e3961d33cf3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=B4=AA=E6=9E=97?= Date: Fri, 4 Sep 2020 16:00:55 +0800 Subject: [PATCH 243/474] add OrganizaitonUnit GetListAsync filter paramter --- .../Identity/IOrganizationUnitRepository.cs | 1 + .../EfCoreOrganizationUnitRepository.cs | 31 ++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs index 6650f62c82..e12d5a5f6d 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs @@ -31,6 +31,7 @@ namespace Volo.Abp.Identity string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, + string filter = null, bool includeDetails = false, CancellationToken cancellationToken = default ); diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs index 7bdb7d6837..26dcc27426 100644 --- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs @@ -1,6 +1,7 @@ using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; +using System.IO; using System.Linq.Dynamic.Core; using System.Linq; using System.Threading; @@ -12,7 +13,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore { public class EfCoreOrganizationUnitRepository : EfCoreRepository, - IOrganizationUnitRepository + IOrganizationUnitRepository { public EfCoreOrganizationUnitRepository( IDbContextProvider dbContextProvider) @@ -47,15 +48,20 @@ namespace Volo.Abp.Identity.EntityFrameworkCore string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, + string filter = null, bool includeDetails = true, CancellationToken cancellationToken = default) { return await DbSet .IncludeDetails(includeDetails) + .WhereIf(!filter.IsNullOrWhiteSpace(), + ou => ou.DisplayName.Contains(filter) || + ou.Code.Contains(filter)) .OrderBy(sorting ?? nameof(OrganizationUnit.DisplayName)) .PageBy(skipCount, maxResultCount) .ToListAsync(GetCancellationToken(cancellationToken)); } + public virtual async Task> GetListAsync( IEnumerable ids, bool includeDetails = false, @@ -89,9 +95,9 @@ namespace Volo.Abp.Identity.EntityFrameworkCore CancellationToken cancellationToken = default) { var query = from organizationRole in DbContext.Set() - join role in DbContext.Roles.IncludeDetails(includeDetails) on organizationRole.RoleId equals role.Id - where organizationRole.OrganizationUnitId == organizationUnit.Id - select role; + join role in DbContext.Roles.IncludeDetails(includeDetails) on organizationRole.RoleId equals role.Id + where organizationRole.OrganizationUnitId == organizationUnit.Id + select role; query = query .OrderBy(sorting ?? nameof(IdentityRole.Name)) .PageBy(skipCount, maxResultCount); @@ -104,9 +110,9 @@ namespace Volo.Abp.Identity.EntityFrameworkCore CancellationToken cancellationToken = default) { var query = from organizationRole in DbContext.Set() - join role in DbContext.Roles on organizationRole.RoleId equals role.Id - where organizationRole.OrganizationUnitId == organizationUnit.Id - select role; + join role in DbContext.Roles on organizationRole.RoleId equals role.Id + where organizationRole.OrganizationUnitId == organizationUnit.Id + select role; return await query.CountAsync(GetCancellationToken(cancellationToken)); } @@ -119,13 +125,13 @@ namespace Volo.Abp.Identity.EntityFrameworkCore string filter = null, bool includeDetails = false, CancellationToken cancellationToken = default - ) + ) { var query = CreateGetMembersFilteredQuery(organizationUnit, filter); return await query.IncludeDetails(includeDetails).OrderBy(sorting ?? nameof(IdentityUser.UserName)) - .PageBy(skipCount, maxResultCount) - .ToListAsync(GetCancellationToken(cancellationToken)); + .PageBy(skipCount, maxResultCount) + .ToListAsync(GetCancellationToken(cancellationToken)); } public virtual async Task GetMembersCountAsync( @@ -162,7 +168,8 @@ namespace Volo.Abp.Identity.EntityFrameworkCore DbContext.Set().RemoveRange(ouMembersQuery); } - protected virtual IQueryable CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit, string filter = null) + protected virtual IQueryable CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit, + string filter = null) { var query = from userOu in DbContext.Set() join user in DbContext.Users on userOu.UserId equals user.Id @@ -181,4 +188,4 @@ namespace Volo.Abp.Identity.EntityFrameworkCore return query; } } -} +} \ No newline at end of file From 086c3e7241eaa3ffb440d7ea03427f3370163a58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 Sep 2020 11:22:10 +0300 Subject: [PATCH 244/474] Implemented editing role --- .../Pages/RoleManagement.razor | 38 +++++++++++++--- .../Pages/RoleManagement.razor.cs | 43 ++++++++++++++++++- 2 files changed, 75 insertions(+), 6 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index 3bac48024b..5230456a14 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -6,18 +6,19 @@ @using Volo.Abp.Identity.Localization @inject IIdentityRoleAppService RoleAppService @inject IStringLocalizer L - +@* ************************* PAGE HEADER ************************* *@

    @L["Roles"]

    - +
    +@* ************************* DATA GRID ************************* *@ - Edit + Edit Manage Permissions Delete @@ -39,10 +40,11 @@ - + +@* ************************* CREATE MODAL ************************* *@ @@ -53,7 +55,7 @@ Name - + Default @@ -65,4 +67,30 @@ + + +@* ************************* EDIT MODAL ************************* *@ + + + + + Edit role + + + + + + Name + + + + Default + Public + + + + + + + \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs index 5e8d6e4a51..e4971c27c8 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs @@ -4,7 +4,9 @@ using System.Threading.Tasks; using Blazorise; using Blazorise.DataGrid; using Volo.Abp.Application.Dtos; +using Volo.Abp.Data; using Volo.Abp.Identity; +using Volo.Abp.ObjectExtending; namespace MyCompanyName.MyProjectName.Blazor.Pages { @@ -14,13 +16,20 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages { private int _currentPage; private int? _totalCount; + private IReadOnlyList _roles; + private IdentityRoleCreateDto _newRole; + private Guid _editingRoleId; + private IdentityRoleUpdateDto _editingRole; + private Modal _createModal; + private Modal _editModal; public RoleManagement() { _newRole = new IdentityRoleCreateDto(); + _editingRole = new IdentityRoleUpdateDto(); } protected override async Task OnInitializedAsync() @@ -48,7 +57,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages StateHasChanged(); } - private async Task OpenCreateModalAsync() + private void OpenCreateModal() { _newRole = new IdentityRoleCreateDto(); _createModal.Show(); @@ -59,6 +68,31 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages _createModal.Hide(); } + private async Task OpenEditModalAsync(Guid id) + { + var role = await RoleAppService.GetAsync(id); + + _editingRoleId = id; + + //TODO: User AutoMapper! + _editingRole = new IdentityRoleUpdateDto + { + Name = role.Name, + ConcurrencyStamp = role.ConcurrencyStamp, + IsDefault = role.IsDefault, + IsPublic = role.IsPublic + }; + + role.MapExtraPropertiesTo(_editingRole); + + _editModal.Show(); + } + + private void CloseEditModal() + { + _editModal.Hide(); + } + private async Task CreateRoleAsync() { await RoleAppService.CreateAsync(_newRole); @@ -66,6 +100,13 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages _createModal.Hide(); } + private async Task UpdateRoleAsync() + { + await RoleAppService.UpdateAsync(_editingRoleId, _editingRole); + await GetRolesAsync(); + _editModal.Hide(); + } + private async Task DeleteRoleAsync(Guid id) { await RoleAppService.DeleteAsync(id); From c428ac27a608bb2586747f8f54b354d2b36798b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=B4=AA=E6=9E=97?= Date: Fri, 4 Sep 2020 16:55:00 +0800 Subject: [PATCH 245/474] add filter paremeter and getCount api --- .../Identity/IOrganizationUnitRepository.cs | 5 +++ .../EfCoreOrganizationUnitRepository.cs | 10 +++++ .../MongoOrganizationUnitRepository.cs | 43 +++++++++++++------ 3 files changed, 45 insertions(+), 13 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs index e12d5a5f6d..561abd893f 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs @@ -81,5 +81,10 @@ namespace Volo.Abp.Identity OrganizationUnit organizationUnit, CancellationToken cancellationToken = default ); + + Task GetLongCountAsync( + Guid? parentId, + string filter = null, + CancellationToken cancellationToken = default); } } diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs index 26dcc27426..311bb1a3dc 100644 --- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs @@ -168,6 +168,16 @@ namespace Volo.Abp.Identity.EntityFrameworkCore DbContext.Set().RemoveRange(ouMembersQuery); } + public virtual async Task GetLongCountAsync(Guid? parentId, string filter = null, + CancellationToken cancellationToken = default) + { + return await DbSet + .WhereIf(!filter.IsNullOrWhiteSpace(), ou => + ou.DisplayName.Contains(filter) || + ou.Code.Contains(filter)) + .LongCountAsync(GetCancellationToken(cancellationToken)); + } + protected virtual IQueryable CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit, string filter = null) { diff --git a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs index 8c163d4126..a31acf13ad 100644 --- a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs @@ -16,7 +16,7 @@ namespace Volo.Abp.Identity.MongoDB { public class MongoOrganizationUnitRepository : MongoDbRepository, - IOrganizationUnitRepository + IOrganizationUnitRepository { public MongoOrganizationUnitRepository( IMongoDbContextProvider dbContextProvider) @@ -41,8 +41,8 @@ namespace Volo.Abp.Identity.MongoDB CancellationToken cancellationToken = default) { return await GetMongoQueryable() - .Where(ou => ou.Code.StartsWith(code) && ou.Id != parentId.Value) - .ToListAsync(GetCancellationToken(cancellationToken)); + .Where(ou => ou.Code.StartsWith(code) && ou.Id != parentId.Value) + .ToListAsync(GetCancellationToken(cancellationToken)); } public virtual async Task> GetListAsync( @@ -51,22 +51,26 @@ namespace Volo.Abp.Identity.MongoDB CancellationToken cancellationToken = default) { return await GetMongoQueryable() - .Where(t => ids.Contains(t.Id)) - .ToListAsync(GetCancellationToken(cancellationToken)); + .Where(t => ids.Contains(t.Id)) + .ToListAsync(GetCancellationToken(cancellationToken)); } public virtual async Task> GetListAsync( string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, + string filter = null, bool includeDetails = false, CancellationToken cancellationToken = default) { return await GetMongoQueryable() - .OrderBy(sorting ?? nameof(OrganizationUnit.DisplayName)) - .As>() - .PageBy>(skipCount, maxResultCount) - .ToListAsync(GetCancellationToken(cancellationToken)); + .WhereIf(!filter.IsNullOrWhiteSpace(), + ou => ou.DisplayName.Contains(filter) || + ou.Code.Contains(filter)) + .OrderBy(sorting ?? nameof(OrganizationUnit.DisplayName)) + .As>() + .PageBy>(skipCount, maxResultCount) + .ToListAsync(GetCancellationToken(cancellationToken)); } public virtual async Task GetAsync( @@ -135,13 +139,15 @@ namespace Volo.Abp.Identity.MongoDB return await query.CountAsync(GetCancellationToken(cancellationToken)); } - public virtual Task RemoveAllRolesAsync(OrganizationUnit organizationUnit, CancellationToken cancellationToken = default) + public virtual Task RemoveAllRolesAsync(OrganizationUnit organizationUnit, + CancellationToken cancellationToken = default) { organizationUnit.Roles.Clear(); return Task.FromResult(0); } - public virtual async Task RemoveAllMembersAsync(OrganizationUnit organizationUnit, CancellationToken cancellationToken = default) + public virtual async Task RemoveAllMembersAsync(OrganizationUnit organizationUnit, + CancellationToken cancellationToken = default) { var users = await DbContext.Users.AsQueryable() .Where(u => u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id)) @@ -155,7 +161,18 @@ namespace Volo.Abp.Identity.MongoDB } } - protected virtual IMongoQueryable CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit, string filter = null) + public virtual async Task GetLongCountAsync(Guid? parentId, string filter = null, + CancellationToken cancellationToken = default) + { + return await GetMongoQueryable() + .WhereIf>(!filter.IsNullOrWhiteSpace(), ou => + ou.DisplayName.Contains(filter) || + ou.Code.Contains(filter)) + .LongCountAsync(GetCancellationToken(cancellationToken)); + } + + protected virtual IMongoQueryable CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit, + string filter = null) { return DbContext.Users.AsQueryable() .Where(u => u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id)) @@ -168,4 +185,4 @@ namespace Volo.Abp.Identity.MongoDB ); } } -} +} \ No newline at end of file From b37f7fab934a99d785c76a084b3af11da605e386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 Sep 2020 12:25:57 +0300 Subject: [PATCH 246/474] Add api-name parameter to the generate-proxy command. --- docs/en/CLI.md | 2 ++ .../Volo/Abp/Cli/Commands/ProxyCommandBase.cs | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/docs/en/CLI.md b/docs/en/CLI.md index e6e7fcccf8..36f3b8e105 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -191,6 +191,7 @@ abp generate-proxy #### Options * `--module` or `-m`: Specifies the name of the backend module you wish to generate proxies for. Default value: `app`. +* `--api-name` or `-a`: The name of the API endpoint defined in the `/src/environments/environment.ts`. Default value: `default`. * `--source` or `-s`: Specifies the Angular project name to resolve the root namespace & API definition URL from. Default value: `defaultProject`. * `--target` or `-t`: Specifies the Angular project name to place generated code in. Default value: `defaultProject`. * `--prompt` or `-p`: Asks the options from the command line prompt (for the unspecified options). @@ -212,6 +213,7 @@ abp remove-proxy #### Options * `--module` or `-m`: Specifies the name of the backend module you wish to remove proxies for. Default value: `app`. +* `--api-name` or `-a`: The name of the API endpoint defined in the `/src/environments/environment.ts`. Default value: `default`. * `--source` or `-s`: Specifies the Angular project name to resolve the root namespace & API definition URL from. Default value: `defaultProject`. * `--target` or `-t`: Specifies the Angular project name to place generated code in. Default value: `defaultProject`. * `--prompt` or `-p`: Asks the options from the command line prompt (for the unspecified options). diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs index 0116c809cb..7898ae7abc 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs @@ -24,6 +24,7 @@ namespace Volo.Abp.Cli.Commands var defaultValue = prompt ? null : "__default"; var module = commandLineArgs.Options.GetOrNull(Options.Module.Short, Options.Module.Long) ?? defaultValue; + var apiName = commandLineArgs.Options.GetOrNull(Options.ApiName.Short, Options.ApiName.Long) ?? defaultValue; var source = commandLineArgs.Options.GetOrNull(Options.Source.Short, Options.Source.Long) ?? defaultValue; var target = commandLineArgs.Options.GetOrNull(Options.Target.Short, Options.Target.Long) ?? defaultValue; @@ -34,6 +35,11 @@ namespace Volo.Abp.Cli.Commands commandBuilder.Append($" --module {module}"); } + if (apiName != null) + { + commandBuilder.Append($" --api-name {apiName}"); + } + if (source != null) { commandBuilder.Append($" --source {source}"); @@ -100,6 +106,7 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine("Options:"); sb.AppendLine(""); sb.AppendLine("-m|--module (default: 'app') The name of the backend module you wish to generate proxies for."); + sb.AppendLine("-a|--api-name (default: 'default') The name of the API endpoint defined in the /src/environments/environment.ts."); sb.AppendLine("-s|--source (default: 'defaultProject') Angular project name to resolve the root namespace & API definition URL from."); sb.AppendLine("-t|--target (default: 'defaultProject') Angular project name to place generated code in."); sb.AppendLine("-p|--prompt Asks the options from the command line prompt (for the missing options)"); @@ -122,6 +129,12 @@ namespace Volo.Abp.Cli.Commands public const string Long = "module"; } + public static class ApiName + { + public const string Short = "a"; + public const string Long = "api-name"; + } + public static class Source { public const string Short = "s"; From 1bc7f7f8a9559d7f61a9dffe36e0dffe96f5d357 Mon Sep 17 00:00:00 2001 From: Bunyamin Coskuner Date: Fri, 4 Sep 2020 13:48:15 +0300 Subject: [PATCH 247/474] docs: fix bold environment word --- docs/en/UI/Angular/Environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/Angular/Environment.md b/docs/en/UI/Angular/Environment.md index 86978cfa16..402e110f94 100644 --- a/docs/en/UI/Angular/Environment.md +++ b/docs/en/UI/Angular/Environment.md @@ -1,6 +1,6 @@ # Environment -Every application needs some ** environment ** variables. In Angular world, this is usually managed by `environment.ts`, `environment.prod.ts` and so on. It is the same for ABP as well. +Every application needs some **environment** variables. In Angular world, this is usually managed by `environment.ts`, `environment.prod.ts` and so on. It is the same for ABP as well. Current `Environment` configuration holds sub config classes as follows: From f540ed503f5a7c140b9b5abd71dbb3a66cd0e79e Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 4 Sep 2020 14:00:56 +0300 Subject: [PATCH 248/474] fix: skip property if ref is same as interface ref --- npm/ng-packs/packages/schematics/src/utils/model.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/model.ts b/npm/ng-packs/packages/schematics/src/utils/model.ts index 2ac5949050..0e472e64d3 100644 --- a/npm/ng-packs/packages/schematics/src/utils/model.ts +++ b/npm/ng-packs/packages/schematics/src/utils/model.ts @@ -133,7 +133,11 @@ export function createImportRefToInterfaceReducerCreator(params: ModelGeneratorP return _interface.properties .reduce((refs, prop) => { - prop.refs.forEach(type => !types[type]?.isEnum && refs.push(type)); + prop.refs.forEach(type => { + if (types[type]?.isEnum || type === _interface.ref) return; + refs.push(type); + }); + return refs; }, []) .concat(base ? parseGenerics(typeDef.baseType!).toGenerics() : []) From fc6b7def6bb9af6b3c6953c94a17a8051f656aa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 Sep 2020 16:32:19 +0300 Subject: [PATCH 249/474] Introduce IUiMessageService and implement delete confirmation for roles. --- .../WebAssembly/IUiMessageService.cs | 9 ++++++++ .../WebAssembly/UiMessageService.cs | 22 +++++++++++++++++++ .../Pages/RoleManagement.razor | 3 ++- .../Pages/RoleManagement.razor.cs | 9 ++++++-- .../_Imports.razor | 3 ++- 5 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiMessageService.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageService.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiMessageService.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiMessageService.cs new file mode 100644 index 0000000000..bad1bab7fc --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiMessageService.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly +{ + public interface IUiMessageService + { + Task ConfirmAsync(string message, string title = null); + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageService.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageService.cs new file mode 100644 index 0000000000..2e353b5e54 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageService.cs @@ -0,0 +1,22 @@ +using System.Threading.Tasks; +using Microsoft.JSInterop; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.AspNetCore.Components.WebAssembly +{ + public class UiMessageService : IUiMessageService, ITransientDependency + { + protected IJSRuntime JsRuntime { get; } + + public UiMessageService(IJSRuntime jsRuntime) + { + JsRuntime = jsRuntime; + } + + public async Task ConfirmAsync(string message, string title = null) + { + //TODO: Implement with sweetalert in a new package + return await JsRuntime.InvokeAsync("confirm", message); + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index 5230456a14..613518e7c8 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -6,6 +6,7 @@ @using Volo.Abp.Identity.Localization @inject IIdentityRoleAppService RoleAppService @inject IStringLocalizer L +@inject IUiMessageService UiMessageService @* ************************* PAGE HEADER ************************* *@ @@ -35,7 +36,7 @@ Edit Manage Permissions - Delete + Delete diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs index e4971c27c8..5b17e2215e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs @@ -107,9 +107,14 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages _editModal.Hide(); } - private async Task DeleteRoleAsync(Guid id) + private async Task DeleteRoleAsync(IdentityRoleDto role) { - await RoleAppService.DeleteAsync(id); + if (!await UiMessageService.ConfirmAsync("Are you sure to delete the role " + role.Name)) + { + return; + } + + await RoleAppService.DeleteAsync(role.Id); await GetRolesAsync(); } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor index c1ac73cf4c..dfd31588f3 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/_Imports.razor @@ -5,7 +5,8 @@ @using Microsoft.AspNetCore.Components.Web @using Microsoft.AspNetCore.Components.WebAssembly.Http @using Microsoft.JSInterop +@using Volo.Abp.AspNetCore.Components.WebAssembly @using MyCompanyName.MyProjectName.Blazor @using MyCompanyName.MyProjectName.Blazor.Shared @using Blazorise -@using Blazorise.DataGrid \ No newline at end of file +@using Blazorise.DataGrid From 7fec27bb3aa5bd64a8df570e70884345b3b8647f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 Sep 2020 16:47:44 +0300 Subject: [PATCH 250/474] Implemented sorting for roles. --- .../Pages/RoleManagement.razor | 2 +- .../Pages/RoleManagement.razor.cs | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index 613518e7c8..bf1495e4a6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -26,7 +26,7 @@ TotalItems="_totalCount" ShowPager="true"> - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs index 5b17e2215e..45724ffc57 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using Blazorise; using Blazorise.DataGrid; using Volo.Abp.Application.Dtos; -using Volo.Abp.Data; using Volo.Abp.Identity; using Volo.Abp.ObjectExtending; @@ -15,6 +15,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages public partial class RoleManagement { private int _currentPage; + private string _currentSorting; private int? _totalCount; private IReadOnlyList _roles; @@ -43,7 +44,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages new PagedAndSortedResultRequestDto { SkipCount = _currentPage * LimitedResultRequestDto.DefaultMaxResultCount, - MaxResultCount = LimitedResultRequestDto.DefaultMaxResultCount + MaxResultCount = LimitedResultRequestDto.DefaultMaxResultCount, + Sorting = _currentSorting }); _roles = result.Items; @@ -52,6 +54,11 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages private async Task OnDataGridReadAsync(DataGridReadDataEventArgs e) { + _currentSorting = e.Columns + .Where(c => c.Direction != SortDirection.None) + .Select(c => c.Field + (c.Direction == SortDirection.Descending ? " DESC" : "")) + .JoinAsString(","); + _currentPage = e.Page - 1; await GetRolesAsync(); StateHasChanged(); From fd3b79395ed6c9e05733a18c88be647b4a15537e Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 4 Sep 2020 17:07:02 +0300 Subject: [PATCH 251/474] Remote exceptions localization data --- .../DefaultExceptionToErrorInfoConverter.cs | 7 ++- .../Abp/Http/Client/AbpRemoteCallException.cs | 8 +++ .../Volo/Abp/Http/RemoteServiceErrorInfo.cs | 6 +- .../Volo/Abp/Identity/Localization/en.json | 56 +++++++++---------- .../Volo/Abp/Identity/Localization/tr.json | 56 +++++++++---------- .../Identity/AbpIdentityResultExtensions.cs | 41 +++++++++++++- .../Identity/AbpIdentityResultException.cs | 9 ++- 7 files changed, 120 insertions(+), 63 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs index cd2f393104..339b249e49 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs +++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs @@ -72,7 +72,7 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling } var errorInfo = new RemoteServiceErrorInfo(); - + if (exception is IUserFriendlyException) { errorInfo.Message = exception.Message; @@ -101,6 +101,8 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling errorInfo.Message = L["InternalServerErrorMessage"]; } + errorInfo.Data = exception.Data; + return errorInfo; } @@ -190,7 +192,6 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling return exception; } - protected virtual RemoteServiceErrorInfo CreateDetailedErrorInfoFromException(Exception exception) { var detailBuilder = new StringBuilder(); @@ -213,7 +214,7 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling detailBuilder.AppendLine(exception.GetType().Name + ": " + exception.Message); //Additional info for UserFriendlyException - if (exception is IUserFriendlyException && + if (exception is IUserFriendlyException && exception is IHasErrorDetails) { var details = ((IHasErrorDetails) exception).Details; diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpRemoteCallException.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpRemoteCallException.cs index d5cbc10c0b..71966868f9 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpRemoteCallException.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpRemoteCallException.cs @@ -28,6 +28,14 @@ namespace Volo.Abp.Http.Client : base(error.Message) { Error = error; + + if (error?.Data != null) + { + foreach (var dataKey in error.Data.Keys) + { + Data[dataKey] = error.Data[dataKey]; + } + } } } } diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorInfo.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorInfo.cs index 25792d1b24..287b423c20 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorInfo.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorInfo.cs @@ -1,4 +1,6 @@ using System; +using System.Collections; +using System.Collections.Generic; namespace Volo.Abp.Http { @@ -23,6 +25,8 @@ namespace Volo.Abp.Http /// public string Details { get; set; } + public IDictionary Data { get; set; } + /// /// Validation errors if exists. /// @@ -49,4 +53,4 @@ namespace Volo.Abp.Http Code = code; } } -} \ No newline at end of file +} diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json index 6d8a5c58c5..8259e1abb2 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json @@ -35,34 +35,34 @@ "DisplayName:NewPasswordConfirm": "Confirm new password", "PasswordChangedMessage": "Your password has been changed successfully.", "PersonalSettingsSavedMessage": "Your personal settings has been saved successfully.", - "Identity.DefaultError": "An unknown failure has occurred.", - "Identity.ConcurrencyFailure": "Optimistic concurrency failure, object has been modified.", - "Identity.DuplicateEmail": "Email '{0}' is already taken.", - "Identity.DuplicateRoleName": "Role name '{0}' is already taken.", - "Identity.DuplicateUserName": "User name '{0}' is already taken.", - "Identity.InvalidEmail": "Email '{0}' is invalid.", - "Identity.InvalidPasswordHasherCompatibilityMode": "The provided PasswordHasherCompatibilityMode is invalid.", - "Identity.InvalidPasswordHasherIterationCount": "The iteration count must be a positive integer.", - "Identity.InvalidRoleName": "Role name '{0}' is invalid.", - "Identity.InvalidToken": "Invalid token.", - "Identity.InvalidUserName": "User name '{0}' is invalid, can only contain letters or digits.", - "Identity.LoginAlreadyAssociated": "A user with this login already exists.", - "Identity.PasswordMismatch": "Incorrect password.", - "Identity.PasswordRequiresDigit": "Passwords must have at least one digit ('0'-'9').", - "Identity.PasswordRequiresLower": "Passwords must have at least one lowercase ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Passwords must have at least one non alphanumeric character.", - "Identity.PasswordRequiresUpper": "Passwords must have at least one uppercase ('A'-'Z').", - "Identity.PasswordTooShort": "Passwords must be at least {0} characters.", - "Identity.RoleNotFound": "Role {0} does not exist.", - "Identity.UserAlreadyHasPassword": "User already has a password set.", - "Identity.UserAlreadyInRole": "User already in role '{0}'.", - "Identity.UserLockedOut": "User is locked out.", - "Identity.UserLockoutNotEnabled": "Lockout is not enabled for this user.", - "Identity.UserNameNotFound": "User {0} does not exist.", - "Identity.UserNotInRole": "User is not in role '{0}'.", - "Identity.PasswordConfirmationFailed": "Password does not match the confirm password.", - "Identity.StaticRoleRenamingErrorMessage": "Static roles can not be renamed.", - "Identity.StaticRoleDeletionErrorMessage": "Static roles can not be deleted.", + "Volo.Abp.Identity:DefaultError": "An unknown failure has occurred.", + "Volo.Abp.Identity:ConcurrencyFailure": "Optimistic concurrency failure, object has been modified.", + "Volo.Abp.Identity:DuplicateEmail": "Email '{0}' is already taken.", + "Volo.Abp.Identity:DuplicateRoleName": "Role name '{0}' is already taken.", + "Volo.Abp.Identity:DuplicateUserName": "User name '{0}' is already taken.", + "Volo.Abp.Identity:InvalidEmail": "Email '{0}' is invalid.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "The provided PasswordHasherCompatibilityMode is invalid.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "The iteration count must be a positive integer.", + "Volo.Abp.Identity:InvalidRoleName": "Role name '{0}' is invalid.", + "Volo.Abp.Identity:InvalidToken": "Invalid token.", + "Volo.Abp.Identity:InvalidUserName": "User name '{0}' is invalid, can only contain letters or digits.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "A user with this login already exists.", + "Volo.Abp.Identity:PasswordMismatch": "Incorrect password.", + "Volo.Abp.Identity:PasswordRequiresDigit": "Passwords must have at least one digit ('0'-'9').", + "Volo.Abp.Identity:PasswordRequiresLower": "Passwords must have at least one lowercase ('a'-'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Passwords must have at least one non alphanumeric character.", + "Volo.Abp.Identity:PasswordRequiresUpper": "Passwords must have at least one uppercase ('A'-'Z').", + "Volo.Abp.Identity:PasswordTooShort": "Passwords must be at least {0} characters.", + "Volo.Abp.Identity:RoleNotFound": "Role {0} does not exist.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "User already has a password set.", + "Volo.Abp.Identity:UserAlreadyInRole": "User already in role '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "User is locked out.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "Lockout is not enabled for this user.", + "Volo.Abp.Identity:UserNameNotFound": "User {0} does not exist.", + "Volo.Abp.Identity:UserNotInRole": "User is not in role '{0}'.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "Password does not match the confirm password.", + "Volo.Abp.Identity:StaticRoleRenamingErrorMessage": "Static roles can not be renamed.", + "Volo.Abp.Identity:StaticRoleDeletionErrorMessage": "Static roles can not be deleted.", "Identity.OrganizationUnit.DuplicateDisplayNameWarning": "There is already an organization unit with name {0}. Two units with same name can not be created in same level.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Maximum allowed organization unit membership count for a user", "Volo.Abp.Identity:010001": "You can not delete your own account!", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json index 0b17e51276..b270f344ef 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json @@ -35,34 +35,34 @@ "DisplayName:NewPasswordConfirm": "Yeni şifre (tekrar)", "PasswordChangedMessage": "Şifreniz başarıyla değiştirildi.", "PersonalSettingsSavedMessage": "Kişisel bilgileriniz başarıyla kaydedildi.", - "Identity.StaticRoleRenamingErrorMessage": "Bir Sabit rolün ismi değiştirilemez.", - "Identity.StaticRoleDeletionErrorMessage": "Bir Sabit rol silinemez.", - "Identity.DefaultError": "Bilinmeyen bir hata oluştu.", - "Identity.ConcurrencyFailure": "İyimser eşzamanlılık hatası. Nesne değiştirilmiş.", - "Identity.DuplicateEmail": "'{0}' email adresi zaten alınmış.", - "Identity.DuplicateRoleName": "'{0}' rol ismi zaten alınmış.", - "Identity.DuplicateUserName": "'{0}' kullanıcı adı zaten alınmış.", - "Identity.InvalidEmail": "'{0}' email adresi hatalı.", - "Identity.InvalidPasswordHasherCompatibilityMode": "Belirtilen PasswordHasherCompatibilityMode geçersiz.", - "Identity.InvalidPasswordHasherIterationCount": "Iterasyon sayısı sıfırdan büyük bir sayı olmalı.", - "Identity.InvalidRoleName": "'{0}' rol ismi geçersizdir.", - "Identity.InvalidToken": "Geçersiz token.", - "Identity.InvalidUserName": "'{0}' kullanıcı adı geçersiz, sadece harf ve rakamlardan oluşmalı.", - "Identity.LoginAlreadyAssociated": "Bu giriş bilgilerine sahip bir kullanıcı zaten var.", - "Identity.PasswordMismatch": "Hatalı şifre.", - "Identity.PasswordRequiresDigit": "Şifre en az bir sayı içermeli ('0'-'9').", - "Identity.PasswordRequiresLower": "Şifre en az bir küçük harf içermeli ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Şifre en az bir sayı ya da harf olmayan karakter içermeli.", - "Identity.PasswordRequiresUpper": "Şifre en az bir büyük harf içermeli ('A'-'Z').", - "Identity.PasswordTooShort": "Şifre en az {0} karakter uzunluğunda olmalı.", - "Identity.RoleNotFound": "{0} rolü bulunamadı.", - "Identity.UserAlreadyHasPassword": "Kullanıcının zaten bir şifresi var.", - "Identity.UserAlreadyInRole": "Kullanıcı zaten '{0}' rolünde.", - "Identity.UserLockedOut": "Kullanıcı hesabı kilitlenmiş.", - "Identity.UserLockoutNotEnabled": "Bu kullanıcı için hesap kilitleme etkin değil.", - "Identity.UserNameNotFound": "{0} kullanıcısı bulunamadı.", - "Identity.UserNotInRole": "Kullanıcı '{0}' rolünde değil.", - "Identity.PasswordConfirmationFailed": "Yeni şifre ile onay şifresi uyuşmuyor.", + "Volo.Abp.Identity:StaticRoleRenamingErrorMessage": "Bir Sabit rolün ismi değiştirilemez.", + "Volo.Abp.Identity:StaticRoleDeletionErrorMessage": "Bir Sabit rol silinemez.", + "Volo.Abp.Identity:DefaultError": "Bilinmeyen bir hata oluştu.", + "Volo.Abp.Identity:ConcurrencyFailure": "İyimser eşzamanlılık hatası. Nesne değiştirilmiş.", + "Volo.Abp.Identity:DuplicateEmail": "'{0}' email adresi zaten alınmış.", + "Volo.Abp.Identity:DuplicateRoleName": "'{0}' rol ismi zaten alınmış.", + "Volo.Abp.Identity:DuplicateUserName": "'{0}' kullanıcı adı zaten alınmış.", + "Volo.Abp.Identity:InvalidEmail": "'{0}' email adresi hatalı.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "Belirtilen PasswordHasherCompatibilityMode geçersiz.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "Iterasyon sayısı sıfırdan büyük bir sayı olmalı.", + "Volo.Abp.Identity:InvalidRoleName": "'{0}' rol ismi geçersizdir.", + "Volo.Abp.Identity:InvalidToken": "Geçersiz token.", + "Volo.Abp.Identity:InvalidUserName": "'{0}' kullanıcı adı geçersiz, sadece harf ve rakamlardan oluşmalı.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "Bu giriş bilgilerine sahip bir kullanıcı zaten var.", + "Volo.Abp.Identity:PasswordMismatch": "Hatalı şifre.", + "Volo.Abp.Identity:PasswordRequiresDigit": "Şifre en az bir sayı içermeli ('0'-'9').", + "Volo.Abp.Identity:PasswordRequiresLower": "Şifre en az bir küçük harf içermeli ('a'-'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Şifre en az bir sayı ya da harf olmayan karakter içermeli.", + "Volo.Abp.Identity:PasswordRequiresUpper": "Şifre en az bir büyük harf içermeli ('A'-'Z').", + "Volo.Abp.Identity:PasswordTooShort": "Şifre en az {0} karakter uzunluğunda olmalı.", + "Volo.Abp.Identity:RoleNotFound": "{0} rolü bulunamadı.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "Kullanıcının zaten bir şifresi var.", + "Volo.Abp.Identity:UserAlreadyInRole": "Kullanıcı zaten '{0}' rolünde.", + "Volo.Abp.Identity:UserLockedOut": "Kullanıcı hesabı kilitlenmiş.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "Bu kullanıcı için hesap kilitleme etkin değil.", + "Volo.Abp.Identity:UserNameNotFound": "{0} kullanıcısı bulunamadı.", + "Volo.Abp.Identity:UserNotInRole": "Kullanıcı '{0}' rolünde değil.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "Yeni şifre ile onay şifresi uyuşmuyor.", "Identity.OrganizationUnit.DuplicateDisplayNameWarning": "{0} isminde bir birim zaten var. Aynı seviyede aynı isimli iki birim olamaz.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Bir kullanıcı için izin verilen en fazla organizasyon birimi sayısı", "Volo.Abp.Identity:010001": "Kendi hesabınızı silemezsiniz!", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Microsoft/AspNetCore/Identity/AbpIdentityResultExtensions.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Microsoft/AspNetCore/Identity/AbpIdentityResultExtensions.cs index 0ef3582af1..f71f8f76e9 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Microsoft/AspNetCore/Identity/AbpIdentityResultExtensions.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Microsoft/AspNetCore/Identity/AbpIdentityResultExtensions.cs @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Linq; using System.Collections.Generic; using System.Globalization; @@ -26,6 +27,41 @@ namespace Microsoft.AspNetCore.Identity throw new AbpIdentityResultException(identityResult); } + public static string[] GetValuesFromErrorMessage(this IdentityResult identityResult, IStringLocalizer localizer) + { + if (identityResult.Succeeded) + { + throw new ArgumentException( + "identityResult.Succeeded should be false in order to get values from error."); + } + + if (identityResult.Errors == null) + { + throw new ArgumentException("identityResult.Errors should not be null."); + } + + var error = identityResult.Errors.First(); + var key = $"Volo.Abp.Identity:{error.Code}"; + + using (CultureHelper.Use(CultureInfo.GetCultureInfo("en"))) + { + var englishLocalizedString = localizer[key]; + + if (englishLocalizedString.ResourceNotFound) + { + return Array.Empty(); + } + + if (FormattedStringValueExtracter.IsMatch(error.Description, englishLocalizedString.Value, + out var values)) + { + return values; + } + + return Array.Empty(); + } + } + public static string LocalizeErrors(this IdentityResult identityResult, IStringLocalizer localizer) { if (identityResult.Succeeded) @@ -43,7 +79,7 @@ namespace Microsoft.AspNetCore.Identity public static string LocalizeErrorMessage(this IdentityError error, IStringLocalizer localizer) { - var key = $"Identity.{error.Code}"; + var key = $"Volo.Abp.Identity:{error.Code}"; var localizedString = localizer[key]; @@ -54,7 +90,8 @@ namespace Microsoft.AspNetCore.Identity var englishLocalizedString = localizer[key]; if (!englishLocalizedString.ResourceNotFound) { - if (FormattedStringValueExtracter.IsMatch(error.Description, englishLocalizedString.Value, out var values)) + if (FormattedStringValueExtracter.IsMatch(error.Description, englishLocalizedString.Value, + out var values)) { return string.Format(localizedString.Value, values.Cast().ToArray()); } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityResultException.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityResultException.cs index de02081a1d..b608720576 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityResultException.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityResultException.cs @@ -18,7 +18,7 @@ namespace Volo.Abp.Identity public AbpIdentityResultException([NotNull] IdentityResult identityResult) : base( - code: $"Identity.{identityResult.Errors.First().Code}", + code: $"Volo.Abp.Identity:{identityResult.Errors.First().Code}", message: identityResult.Errors.Select(err => err.Description).JoinAsString(", ")) { IdentityResult = Check.NotNull(identityResult, nameof(identityResult)); @@ -32,6 +32,13 @@ namespace Volo.Abp.Identity public virtual string LocalizeMessage(LocalizationContext context) { + var values = IdentityResult.GetValuesFromErrorMessage(context.LocalizerFactory.Create()); + + for (var index = 0; index < values.Length; index++) + { + Data[index.ToString()] = values[index]; + } + return IdentityResult.LocalizeErrors(context.LocalizerFactory.Create()); } } From 546bb2140c6433eb922eea070a01fb903114824a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 Sep 2020 17:15:16 +0300 Subject: [PATCH 252/474] Add public & default badges. --- .../Pages/RoleManagement.razor | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index bf1495e4a6..18d4f6026d 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -3,6 +3,7 @@ @using Volo.Abp.Identity @using Microsoft.AspNetCore.Authorization @using Microsoft.Extensions.Localization +@using Volo.Abp.Application.Dtos @using Volo.Abp.Identity.Localization @inject IIdentityRoleAppService RoleAppService @inject IStringLocalizer L @@ -24,7 +25,8 @@ Data="_roles" ReadData="OnDataGridReadAsync" TotalItems="_totalCount" - ShowPager="true"> + ShowPager="true" + PageSize="@LimitedResultRequestDto.DefaultMaxResultCount"> @@ -41,7 +43,19 @@ - + + + @(context.As().Name) + @if (context.As().IsDefault) + { + default + } + @if (context.As().IsPublic) + { + public + } + + From d7d0cb0c279c1a4917bcdcdd898840cc7506a314 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 Sep 2020 17:28:18 +0300 Subject: [PATCH 253/474] Complete the localization for the role management --- .../Pages/RoleManagement.razor | 42 +++++++++---------- .../Pages/RoleManagement.razor.cs | 4 +- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor index 18d4f6026d..18dc4f5d03 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor @@ -1,4 +1,4 @@ -@page "/role-management" +@page "/identity/role-management" @attribute [Authorize] @using Volo.Abp.Identity @using Microsoft.AspNetCore.Authorization @@ -15,7 +15,7 @@ - + @@ -28,31 +28,31 @@ ShowPager="true" PageSize="@LimitedResultRequestDto.DefaultMaxResultCount"> - + - Actions + @L["Actions"] - Edit - Manage Permissions + @L["Edit"] + @L["Permissions"] - Delete + @L["Delete"] - + @(context.As().Name) @if (context.As().IsDefault) { - default + @L["DisplayName:IsDefault"] } @if (context.As().IsPublic) { - public + @L["DisplayName:IsPublic"] } @@ -64,22 +64,22 @@ - Create a new role + @L["NewRole"] - Name + @L["DisplayName:RoleName"] - Default - Public + @L["DisplayName:IsDefault"] + @L["DisplayName:IsPublic"] - - + + @@ -95,17 +95,17 @@ - Name + @L["DisplayName:RoleName"] - Default - Public + @L["DisplayName:IsDefault"] + @L["DisplayName:IsPublic"] - - + + \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs index 45724ffc57..ccece1f699 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs @@ -10,8 +10,6 @@ using Volo.Abp.ObjectExtending; namespace MyCompanyName.MyProjectName.Blazor.Pages { - //TODO: Idea: Can we create a base class to simplify all these, like CrudPage<...>..? - public partial class RoleManagement { private int _currentPage; @@ -116,7 +114,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages private async Task DeleteRoleAsync(IdentityRoleDto role) { - if (!await UiMessageService.ConfirmAsync("Are you sure to delete the role " + role.Name)) + if (!await UiMessageService.ConfirmAsync(L["RoleDeletionConfirmationMessage", role.Name])) { return; } From 9211722122ff3c2ec6190fb5314ce5d51a368d7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 Sep 2020 17:28:27 +0300 Subject: [PATCH 254/474] Update NavMenu.razor --- .../src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor index d131258431..619923b7c7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor @@ -18,7 +18,7 @@ From e14358cfe04ad909f25686087c8abe86f49761a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 Sep 2020 18:25:48 +0300 Subject: [PATCH 255/474] Move role management page to the identity module --- framework/Volo.Abp.sln | 7 +++++ .../src/Volo.Abp.Blazorise/FodyWeavers.xml | 3 ++ .../src/Volo.Abp.Blazorise/FodyWeavers.xsd | 30 +++++++++++++++++++ .../Volo.Abp.Blazorise.csproj | 24 +++++++++++++++ .../Abp/BlazoriseLib/AbpBlazoriseModule.cs | 23 ++++++++++++++ .../AbpIdentityBlazorModule.cs | 5 ++-- .../Pages/Identity}/RoleManagement.razor | 0 .../Pages/Identity}/RoleManagement.razor.cs | 5 ++-- .../Volo.Abp.Identity.Blazor.csproj | 10 ++----- .../Volo.Abp.Identity.Blazor/_Imports.razor | 4 +++ .../MyCompanyName.MyProjectName.Blazor.csproj | 1 - 11 files changed, 99 insertions(+), 13 deletions(-) create mode 100644 framework/src/Volo.Abp.Blazorise/FodyWeavers.xml create mode 100644 framework/src/Volo.Abp.Blazorise/FodyWeavers.xsd create mode 100644 framework/src/Volo.Abp.Blazorise/Volo.Abp.Blazorise.csproj create mode 100644 framework/src/Volo.Abp.Blazorise/Volo/Abp/BlazoriseLib/AbpBlazoriseModule.cs rename {templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages => modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity}/RoleManagement.razor (100%) rename {templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages => modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity}/RoleManagement.razor.cs (97%) diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index e3e1ba9027..3a3572138f 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -337,6 +337,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.Cli EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Components.WebAssembly", "src\Volo.Abp.AspNetCore.Components.WebAssembly\Volo.Abp.AspNetCore.Components.WebAssembly.csproj", "{E1A62D10-F2FB-4040-BD60-11A3934058DF}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Blazorise", "src\Volo.Abp.Blazorise\Volo.Abp.Blazorise.csproj", "{D97028EB-A66C-4739-B5C8-1F035F7228E7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1003,6 +1005,10 @@ Global {E1A62D10-F2FB-4040-BD60-11A3934058DF}.Debug|Any CPU.Build.0 = Debug|Any CPU {E1A62D10-F2FB-4040-BD60-11A3934058DF}.Release|Any CPU.ActiveCfg = Release|Any CPU {E1A62D10-F2FB-4040-BD60-11A3934058DF}.Release|Any CPU.Build.0 = Release|Any CPU + {D97028EB-A66C-4739-B5C8-1F035F7228E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D97028EB-A66C-4739-B5C8-1F035F7228E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D97028EB-A66C-4739-B5C8-1F035F7228E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D97028EB-A66C-4739-B5C8-1F035F7228E7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1173,6 +1179,7 @@ Global {3D35A1E0-A9A1-404F-9B55-5F1A7EB6D5B8} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {8A22D962-016E-474A-8BB7-F831F0ABF3AC} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {E1A62D10-F2FB-4040-BD60-11A3934058DF} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {D97028EB-A66C-4739-B5C8-1F035F7228E7} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.Blazorise/FodyWeavers.xml b/framework/src/Volo.Abp.Blazorise/FodyWeavers.xml new file mode 100644 index 0000000000..bc5a74a236 --- /dev/null +++ b/framework/src/Volo.Abp.Blazorise/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + diff --git a/framework/src/Volo.Abp.Blazorise/FodyWeavers.xsd b/framework/src/Volo.Abp.Blazorise/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.Blazorise/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Blazorise/Volo.Abp.Blazorise.csproj b/framework/src/Volo.Abp.Blazorise/Volo.Abp.Blazorise.csproj new file mode 100644 index 0000000000..f7875a0f4a --- /dev/null +++ b/framework/src/Volo.Abp.Blazorise/Volo.Abp.Blazorise.csproj @@ -0,0 +1,24 @@ + + + + + + + netstandard2.1 + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + false + false + false + + + + + + + + + + + + + diff --git a/framework/src/Volo.Abp.Blazorise/Volo/Abp/BlazoriseLib/AbpBlazoriseModule.cs b/framework/src/Volo.Abp.Blazorise/Volo/Abp/BlazoriseLib/AbpBlazoriseModule.cs new file mode 100644 index 0000000000..f49d560b01 --- /dev/null +++ b/framework/src/Volo.Abp.Blazorise/Volo/Abp/BlazoriseLib/AbpBlazoriseModule.cs @@ -0,0 +1,23 @@ +using Blazorise; +using Volo.Abp.AspNetCore.Components.WebAssembly; +using Volo.Abp.Modularity; + +namespace Volo.Abp.BlazoriseLib +{ + [DependsOn( + typeof(AbpAspNetCoreComponentsWebAssemblyModule) + )] + public class AbpBlazoriseModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + ConfigureBlazorise(context); + } + + private void ConfigureBlazorise(ServiceConfigurationContext context) + { + context.Services + .AddBlazorise(); + } + } +} diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs index 7a74bc8673..85695062c6 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs @@ -1,12 +1,13 @@ using Volo.Abp.Modularity; +using Volo.Abp.BlazoriseLib; namespace Volo.Abp.Identity.Blazor { [DependsOn( - typeof(AbpIdentityHttpApiClientModule) + typeof(AbpIdentityHttpApiClientModule), + typeof(AbpBlazoriseModule) )] public class AbpIdentityBlazorModule : AbpModule { - } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor similarity index 100% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor rename to modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs similarity index 97% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs rename to modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs index ccece1f699..09c967ceb6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/RoleManagement.razor.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs @@ -4,11 +4,10 @@ using System.Linq; using System.Threading.Tasks; using Blazorise; using Blazorise.DataGrid; -using Volo.Abp.Application.Dtos; -using Volo.Abp.Identity; using Volo.Abp.ObjectExtending; +using Volo.Abp.Application.Dtos; -namespace MyCompanyName.MyProjectName.Blazor.Pages +namespace Volo.Abp.Identity.Blazor.Pages.Identity { public partial class RoleManagement { diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj b/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj index 85bbf1a77c..33f26edc57 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj @@ -1,20 +1,16 @@ - + - netstandard2.0 + netstandard2.1 3.0 - - - - - + diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor b/modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor index 77285129da..1b2fa8ffc4 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor @@ -1 +1,5 @@ @using Microsoft.AspNetCore.Components.Web +@using Volo.Abp.AspNetCore.Components.WebAssembly +@using Volo.Abp.BlazoriseLib +@using Blazorise +@using Blazorise.DataGrid \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj index fd2c6b0047..a5dd40ec10 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj @@ -7,7 +7,6 @@ - From a2f97036dc3d980c9869594d3c8dbbfd93e8e991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 4 Sep 2020 22:51:18 +0300 Subject: [PATCH 256/474] Inherit ICrudAppService by IIdentityRoleAppService --- .../Abp/Identity/IIdentityRoleAppService.cs | 18 +++++++----------- .../Abp/Identity/IIdentityUserAppService.cs | 8 +++++++- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityRoleAppService.cs b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityRoleAppService.cs index 36f483d0e6..24969c1ed5 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityRoleAppService.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityRoleAppService.cs @@ -5,18 +5,14 @@ using Volo.Abp.Application.Services; namespace Volo.Abp.Identity { - public interface IIdentityRoleAppService : IApplicationService + public interface IIdentityRoleAppService + : ICrudAppService< + IdentityRoleDto, + Guid, + PagedAndSortedResultRequestDto, + IdentityRoleCreateDto, + IdentityRoleUpdateDto> { Task> GetAllListAsync(); - - Task> GetListAsync(PagedAndSortedResultRequestDto input); - - Task CreateAsync(IdentityRoleCreateDto input); - - Task GetAsync(Guid id); - - Task UpdateAsync(Guid id, IdentityRoleUpdateDto input); - - Task DeleteAsync(Guid id); } } diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityUserAppService.cs b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityUserAppService.cs index a184226117..97f443f3b6 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityUserAppService.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityUserAppService.cs @@ -5,7 +5,13 @@ using Volo.Abp.Application.Services; namespace Volo.Abp.Identity { - public interface IIdentityUserAppService : ICrudAppService + public interface IIdentityUserAppService + : ICrudAppService< + IdentityUserDto, + Guid, + GetIdentityUsersInput, + IdentityUserCreateDto, + IdentityUserUpdateDto> { Task> GetRolesAsync(Guid id); From ca74431f4355ec16fb37df7380a8bd4e858961d0 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:04:02 +0300 Subject: [PATCH 257/474] ci: add cache process to angular action --- .github/workflows/angular.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index 1b4d37bd39..b0d6e413e4 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -9,6 +9,14 @@ jobs: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 + + - uses: actions/cache@v2 + with: + path: | + node_modules + */*/node_modules + key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + - uses: actions/setup-node@v1 with: node-version: '12.x' From b9a9d86bcf9ee8b35c5c05ca06d40150de9c855a Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:07:27 +0300 Subject: [PATCH 258/474] chore: update angular.yml --- .github/workflows/angular.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index b0d6e413e4..52aaa57b98 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -12,9 +12,7 @@ jobs: - uses: actions/cache@v2 with: - path: | - node_modules - */*/node_modules + path: '**/node_modules' key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - uses: actions/setup-node@v1 From a3aa39153bb0acafb266b6519af187d213d7968d Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:07:40 +0300 Subject: [PATCH 259/474] chore: update yarn.lock --- npm/ng-packs/yarn.lock | 1058 ++++++++++++++-------------------------- 1 file changed, 365 insertions(+), 693 deletions(-) diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index 5739a50274..512eb7d30b 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -2,20 +2,20 @@ # yarn lockfile v1 -"@abp/ng.account@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-3.1.0-rc.4.tgz#af4039b286fe44929327e93dba9991cb273d5336" - integrity sha512-wYkSz1HlPwMPUMAfCe404LCb15ZDEV5GfNIZuHeyiNtC/AcvqZEbBBpM2xMZ3uMcvxH/72IrLFBpxemCY+6euw== +"@abp/ng.account@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-3.1.0.tgz#cd5fb46dffd7455188c10769220ed58806f455fa" + integrity sha512-/v+yyagHIUhjpJ1exzubf54XQBsgO2o3r3bFJFlWqzJoeCLufzyyppqK2UQ+6sQ7CjWP5jFCqo87R9myNn2xHA== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.4" + "@abp/ng.theme.shared" "~3.1.0" tslib "^2.0.0" -"@abp/ng.core@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-3.1.0-rc.4.tgz#cc0d237de4de5eac6006d1cdd2bb4014a7ecebb8" - integrity sha512-H/kC8dLvbdHS/cEh2GHWw3vjjN2R5P0eAz+2bhC18kW/EQo6EgNckTbhgvYre9FtJPHbT2Prs1v1CWe1lB5Rnw== +"@abp/ng.core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-3.1.0.tgz#aba988fd915a633ea7af3a68278cc2557a37446f" + integrity sha512-SRRA7MYh12irJMRCj9emE5hyw+5aeiETlohP1CdgpdhhT3/RSPwrSeZNGJU0ilk6tKoO2rcZT6fgGjhqQfMyOw== dependencies: - "@abp/utils" "^3.1.0-rc.3" + "@abp/utils" "^3.1.0-rc.4" "@angular/localize" "~10.0.10" "@ngxs/router-plugin" "^3.6.2" "@ngxs/storage-plugin" "^3.6.2" @@ -27,35 +27,35 @@ ts-toolbelt "6.15.4" tslib "^2.0.0" -"@abp/ng.feature-management@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-3.1.0-rc.4.tgz#d9a85fbe8a780664c9474df9b0d2fe6874530781" - integrity sha512-y3xUFJSHmBCBivE6YRgUgA/XK/jIX1h+JdIsVwRQg9VoKq4Ba7xSF1uffYkbiZhELv9lUZ4t+r100nL64yj/kQ== +"@abp/ng.feature-management@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-3.1.0.tgz#a93b0d63dc542e3880a1c79ac1e630b2db19b8bf" + integrity sha512-CayqVZ8XJQXsmz+IU+OchXK/vl01x6DHA/oTpvkW9HM2kYYJ8dmD940kjr5i3ZX6WF2Q4yTc+wLgZhGQt7eK9Q== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.4" + "@abp/ng.theme.shared" "~3.1.0" tslib "^2.0.0" -"@abp/ng.identity@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-3.1.0-rc.4.tgz#6f04d8231fce78ee3a2de387e81aade5ac3fa9a3" - integrity sha512-mRI6uZ0PlbDhNNX1BGYECN5fDPyENnpudbo09SMSVGK99BSa+pJAvOMLWQTp8WJuo/C8kl/Mz17cAhp/EirgYQ== +"@abp/ng.identity@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-3.1.0.tgz#d3086dd887c7ea2786e4c8620b3448333065053a" + integrity sha512-G4CToeEou4Zwr4NkpauwMKJme61lofd77PycWvFPVJ8Df6EctmxJc+u6NVgG7+ZjuFI+oTQrLwCEl3uPuznnpA== dependencies: - "@abp/ng.permission-management" "~3.1.0-rc.4" - "@abp/ng.theme.shared" "~3.1.0-rc.4" + "@abp/ng.permission-management" "~3.1.0" + "@abp/ng.theme.shared" "~3.1.0" tslib "^2.0.0" -"@abp/ng.permission-management@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-3.1.0-rc.4.tgz#b0415fc62ecfc03b57810e6a82fadeec887b64e4" - integrity sha512-/U5ehBn1dQYGcy++/EtciUlz69+WZ+ZXbxJ3MF7cNNy7BwZCyjKc7my2Uh2HrP+Ce3q1h11obX15KpB7uCggCg== +"@abp/ng.permission-management@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-3.1.0.tgz#c0a9a135699b7c8a329c0c9ac839cde06dce3db2" + integrity sha512-u3JwxK1vAlqC6YBVqnyP26FZqArrIQn94fZ/Vm6n9rjId7VaJbA0UrX9d2YAwKROKOpAnBNc5GA0A2gaWIO9rg== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.4" + "@abp/ng.theme.shared" "~3.1.0" tslib "^2.0.0" -"@abp/ng.schematics@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-3.1.0-rc.4.tgz#9f711466db0d46eb08ff14a19e930dbd7cb6aa59" - integrity sha512-nn94E2JB0N5pcDNCh1JtyHV/ZhAnG+d+wKGzhZSOFEWZvPOREQs1OI4aKrBF94DYWy8yWxKZtPWEMwkmX+yXMg== +"@abp/ng.schematics@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-3.1.0.tgz#ea7dd6d7dfd02425e7eff25c7e350614a4c0cad8" + integrity sha512-Vn0G6Wi+/JJ7vFgSkt5sRtdWBWdBQSncwH+kI2O1F0GvhJTrf1eDQ8XTk2yZiOD8oFLgt8mnJzTVzJbs3RqR+Q== dependencies: "@angular-devkit/core" "~10.0.3" "@angular-devkit/schematics" "~10.0.3" @@ -63,37 +63,37 @@ jsonc-parser "^2.3.0" typescript "~3.9.2" -"@abp/ng.setting-management@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-3.1.0-rc.4.tgz#777b8487e6b6811c28375bf695d6db96ca59cc28" - integrity sha512-Mwx5nILDdqT7aEktv0gK1wxhtNuD9W67dlIcunwD/YD60hwAnRX3yFeg1aDHVF70EykY9UMerBGAG3J2Loclhg== +"@abp/ng.setting-management@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-3.1.0.tgz#eebb1c7bdfd75a04cba4c1f8d0f5cfc306a64f43" + integrity sha512-jPBn9vpDHqCDscyo445MWdCd/C0pR+WEnXPxCu7lCOs+ry1n16etoWuLAIfI2LtpI0+g8AgMyL3hacP0MPzpGg== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.4" + "@abp/ng.theme.shared" "~3.1.0" tslib "^2.0.0" -"@abp/ng.tenant-management@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-3.1.0-rc.4.tgz#c8ad9a927045599bec309408b3cdd741935fac7f" - integrity sha512-DK5J0FjA9fR1crvaNa6o5WPjS8/8cDij65GHJb1RzXm8ZfpNoXlcZEUv3MXBJt4zIU3l5ZTDSH3skmNQaobosg== +"@abp/ng.tenant-management@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-3.1.0.tgz#d0b58b711269d91530f36f8ddcb3f6d8f80c0927" + integrity sha512-//g3O2b2NvV7NQtEydbrhZqkdyS3FccVs6wX204ylTLCaLDAwneqNnAnSCQHnUI9GNMjBpj3/VFRGBlvGeW+tw== dependencies: - "@abp/ng.feature-management" "~3.1.0-rc.4" - "@abp/ng.theme.shared" "~3.1.0-rc.4" + "@abp/ng.feature-management" "~3.1.0" + "@abp/ng.theme.shared" "~3.1.0" tslib "^2.0.0" -"@abp/ng.theme.basic@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-3.1.0-rc.4.tgz#36a627ab520046f5978ec60ae9c03b723a879b66" - integrity sha512-SJmc1KrLc3K1Njf+0UUXHB/ABdVbzIzYKT8GbCf0E/Nw6KgVufIpB+g92rqxkeqG9jKEASAnSomYRJeMJJ3bVQ== +"@abp/ng.theme.basic@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-3.1.0.tgz#53db1e40ed4bf34d2efdc4a990ce9838f61b8d5e" + integrity sha512-C2yXYoSApLzUaOiLAAfFGEkAAP59KHJXaJTG2tsyGAsf+H2yFp2sQW+R0i59opmhW3LUXpAZV9aHKk++w+CGcQ== dependencies: - "@abp/ng.theme.shared" "~3.1.0-rc.4" + "@abp/ng.theme.shared" "~3.1.0" tslib "^2.0.0" -"@abp/ng.theme.shared@~3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-3.1.0-rc.4.tgz#516a9d65229b1ddd1891edad8c1bd45ca3729228" - integrity sha512-wfMZSO0fwKDphAq8fWwvd7gxybY4LzQJNZdWYbBg12ePzXzRYCxxDg4xLzUetFYZQS+xSA9xoyGuCR8WT2OQEg== +"@abp/ng.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-3.1.0.tgz#12fc8fb84b27c74603945dc5384afcf62bb985b6" + integrity sha512-cknvClcDbaCrfTagNuojRbOG88NYCLDEPOOrXdTcSKfieJM2L7w/Ku2piqneV17CCM51Ce7Tl1BO7osYtxTS9Q== dependencies: - "@abp/ng.core" "~3.1.0-rc.4" + "@abp/ng.core" "~3.1.0" "@fortawesome/fontawesome-free" "^5.14.0" "@ng-bootstrap/ng-bootstrap" "^7.0.0" "@ngx-validate/core" "^0.0.11" @@ -102,17 +102,10 @@ chart.js "^2.9.3" tslib "^2.0.0" -"@abp/utils@^3.1.0-rc.3": - version "3.1.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.3.tgz#3cbc50c1f8fdf6592d66f8ea4b5a9c4249a5e46a" - integrity sha512-45KXx5zlxm5gK2EFwzM+hMjT8q8pD3PejyNfVP6HBbGE2N36LGKYtI59s6vFm5yV2qFxQyVPrk4mi3Y+neqlBw== - dependencies: - just-compare "^1.3.0" - -"@abp/utils@^3.1.0-rc.4": - version "3.1.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0-rc.4.tgz#e0d25d60b1806d4bee23e1c9c0ffa7855cdffc2a" - integrity sha512-qzUqqkLJcrQV3OngDyQ0S8hEh3D1MxvvlFLOo77ajnaTO2X8hgnFm9mgQ2QnvH2QbKttaWpaaTX7TCYu/d7nBg== +"@abp/utils@^3.1.0", "@abp/utils@^3.1.0-rc.4": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== dependencies: just-compare "^1.3.0" @@ -126,23 +119,31 @@ jest-preset-angular "^8.2.1" lodash "^4.17.15" -"@angular-devkit/architect@0.1000.6", "@angular-devkit/architect@>=0.1000.0 < 0.1100.0": - version "0.1000.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1000.6.tgz#d8143abbf1a1cef8e0ea9c80690821e8ca4cd54c" - integrity sha512-IZ8yiiW+LQ5mI3VbNHzisTIn0j6D1inQZgcZtc5W2A7fFNvBlIh6vGU3mB6Qvg678Gt6tlvnNT6/R9A9Ct7VnA== +"@angular-devkit/architect@0.1000.8": + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1000.8.tgz#dac11e07877145056ca6d22319f2a859bab6720d" + integrity sha512-2AqPbiEugtPxNz4MGhLh+imUVelhW9h1cdJs2AbxZosIxftPb5DNDQUSAwVmRGp4CtcXVrlvcDwc0f4Fw1aiIA== dependencies: - "@angular-devkit/core" "10.0.6" + "@angular-devkit/core" "10.0.8" rxjs "6.5.5" +"@angular-devkit/architect@>=0.1000.0 < 0.1100.0": + version "0.1001.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1001.0.tgz#39250758d749b88a3867f5ef529d52ad16b6c5fd" + integrity sha512-mJYy9tqy7ZfqAJYlQPgcHVUiaAxWnxEEpiTAftsKz/yqdO45YFkzehYXJfCqbAXYr4r7hYY3KqKMgj41ixkS8Q== + dependencies: + "@angular-devkit/core" "10.1.0" + rxjs "6.6.2" + "@angular-devkit/build-angular@~0.1000.6": - version "0.1000.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.1000.6.tgz#7c4a8a4792f7252fe8d0bd57b46e86f44c93d4b3" - integrity sha512-tKyVD8Wqfo2wFdfWmc7OMzFn30Zl37heEusnMrQD5/zZ3Hw4Nqt2kf3pf3hbWl1GExUVFYyRNoCOCh9DaIfh0w== - dependencies: - "@angular-devkit/architect" "0.1000.6" - "@angular-devkit/build-optimizer" "0.1000.6" - "@angular-devkit/build-webpack" "0.1000.6" - "@angular-devkit/core" "10.0.6" + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.1000.8.tgz#28744499b59d85e6d16b27f3ee09e4d86c5770fe" + integrity sha512-wwDN2oadQvYPL7lDmvGsoWQjW++0ZnxWk1QVlABGhBSIs8Uxs26Hjd5YNUSsvJavBkqb1UZIOilqzb4dig5MIA== + dependencies: + "@angular-devkit/architect" "0.1000.8" + "@angular-devkit/build-optimizer" "0.1000.8" + "@angular-devkit/build-webpack" "0.1000.8" + "@angular-devkit/core" "10.0.8" "@babel/core" "7.9.6" "@babel/generator" "7.9.6" "@babel/plugin-transform-runtime" "7.9.6" @@ -150,7 +151,7 @@ "@babel/runtime" "7.9.6" "@babel/template" "7.8.6" "@jsdevtools/coverage-istanbul-loader" "3.0.3" - "@ngtools/webpack" "10.0.6" + "@ngtools/webpack" "10.0.8" ajv "6.12.3" autoprefixer "9.8.0" babel-loader "8.1.0" @@ -206,36 +207,36 @@ worker-plugin "4.0.3" "@angular-devkit/build-ng-packagr@~0.1000.6": - version "0.1000.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.1000.6.tgz#08fe3a0e140cd4be01949449c443a4e02fb68846" - integrity sha512-agE6Dw8EZmKw+vgdiJOpbrDX7JDX8jYFXVxkeCpkl3QIQSx3pDjBoggwV4NDo9mT8/R/i1WD5idFrrm+vbI/0w== + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.1000.8.tgz#092805975248203043f0fbaf7a723be90bcdcbf0" + integrity sha512-sif0JkCjghhtHpxFfb2fJ6MnlyJXxhaWxswxnFSNQd9uLEr101AC7Ep0aDRnSJ2JUoSk1nlZnVtDqYUYAYexWw== dependencies: - "@angular-devkit/architect" "0.1000.6" + "@angular-devkit/architect" "0.1000.8" rxjs "6.5.5" -"@angular-devkit/build-optimizer@0.1000.6": - version "0.1000.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1000.6.tgz#f5b208be155b0ffb37d7380fc1a0e12a3765319d" - integrity sha512-R8zDEAvd9PeUKvOKh6I7xp3w+MViCwjGKoOZcznjH/i/9PQjOHCMwU5S48RQloQjMGu96eDMUGOVnd9qkzXUEw== +"@angular-devkit/build-optimizer@0.1000.8": + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1000.8.tgz#55023cf9e16813cc01b255e99fabb92426eeb632" + integrity sha512-esODHuTGEEMx1SmLUq03VAMly8gZUd1vRuvZeKS5HqKwDg8ZzcI7/25BuuUSlyST+6BEdjo2gnmagQnG0VBdQw== dependencies: loader-utils "2.0.0" source-map "0.7.3" tslib "2.0.0" webpack-sources "1.4.3" -"@angular-devkit/build-webpack@0.1000.6": - version "0.1000.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1000.6.tgz#1ec6942b4079b6cb6704b5d39af7df14102d562e" - integrity sha512-R01bJWuvckU5IdjcqoCeikLBpHRqt5fgfD0a4Hsg3evqW6xxXcSgc+YhWfeEmyU/nF/kVel8G2bFyPzhZP4QdQ== +"@angular-devkit/build-webpack@0.1000.8": + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1000.8.tgz#048bd8e2db19b42cb3913dd2959dcd2589e5ec10" + integrity sha512-y/U+dV5N8W7KECncGSKQWoUH/DFNZCseczyl6LAd8bc0fMr8Z0TAIe8OXj+5CSRRdejWfRIxGtNWM+L2kTCU8A== dependencies: - "@angular-devkit/architect" "0.1000.6" - "@angular-devkit/core" "10.0.6" + "@angular-devkit/architect" "0.1000.8" + "@angular-devkit/core" "10.0.8" rxjs "6.5.5" -"@angular-devkit/core@10.0.6", "@angular-devkit/core@^10.0.0": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.6.tgz#cbb40a34f976f9496270efc4fbdb3ad836b9723e" - integrity sha512-mVvqSEoeErZ7bAModk95EAa6R9Nl23rvX+/TXuKVTK2dziMFBOrwHjb1DYhnZxFIH4xfUftCx+BWHjXBXCPYlA== +"@angular-devkit/core@10.0.8", "@angular-devkit/core@~10.0.3": + version "10.0.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.8.tgz#ca4ea9f464cfa7ff17e2dab3bcd4c59da1ea450d" + integrity sha512-d9S8VQuqaYg0c/Y2kl/MtICtZ+UKlH5bLm8y2fb2WfSL4A5XIqMGdEVxzFSiR0b1Bnt4NAoQMcBec1blHAqMSQ== dependencies: ajv "6.12.3" fast-json-stable-stringify "2.1.0" @@ -243,15 +244,15 @@ rxjs "6.5.5" source-map "0.7.3" -"@angular-devkit/core@10.0.8", "@angular-devkit/core@~10.0.3": - version "10.0.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.8.tgz#ca4ea9f464cfa7ff17e2dab3bcd4c59da1ea450d" - integrity sha512-d9S8VQuqaYg0c/Y2kl/MtICtZ+UKlH5bLm8y2fb2WfSL4A5XIqMGdEVxzFSiR0b1Bnt4NAoQMcBec1blHAqMSQ== +"@angular-devkit/core@10.1.0", "@angular-devkit/core@^10.0.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.1.0.tgz#3e4d6abc0b949f4e2fba94077d17c132eb0a673f" + integrity sha512-oNRwAX+5uEwgheS3UUc1W+AerbimqGojCOTdWWcq5XtSviZnBCp1FeMZV+eB6XgUWfbmbWBu39S3sCYmXVHLwg== dependencies: - ajv "6.12.3" + ajv "6.12.4" fast-json-stable-stringify "2.1.0" magic-string "0.25.7" - rxjs "6.5.5" + rxjs "6.6.2" source-map "0.7.3" "@angular-devkit/core@8.3.29", "@angular-devkit/core@^8.0.3": @@ -265,12 +266,12 @@ rxjs "6.4.0" source-map "0.7.3" -"@angular-devkit/schematics@10.0.6": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.6.tgz#dc3486448cc34544f7076f7fe0a67b75137ae840" - integrity sha512-V3T4cf+jVKiPYyBrSVHf3ZSnk4wIc1WEaaeFta56HccEGQCQpvAFKqDurmtMHer50Hhaxhn7IC3Oi5kPnvkNyQ== +"@angular-devkit/schematics@10.0.8", "@angular-devkit/schematics@~10.0.3": + version "10.0.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.8.tgz#6064d6323a1c9abc195e67ae4c88e373ce36b5e2" + integrity sha512-p2PjvrExuzOe/azyOEcBeIgwZIk4D6VeLkJf/KVjhXOVu13pjIXHX7/qWl+IYnbtj3NZGHqXM5Cr8nxsJNIMpw== dependencies: - "@angular-devkit/core" "10.0.6" + "@angular-devkit/core" "10.0.8" ora "4.0.4" rxjs "6.5.5" @@ -282,19 +283,10 @@ "@angular-devkit/core" "8.3.29" rxjs "6.4.0" -"@angular-devkit/schematics@~10.0.3": - version "10.0.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.8.tgz#6064d6323a1c9abc195e67ae4c88e373ce36b5e2" - integrity sha512-p2PjvrExuzOe/azyOEcBeIgwZIk4D6VeLkJf/KVjhXOVu13pjIXHX7/qWl+IYnbtj3NZGHqXM5Cr8nxsJNIMpw== - dependencies: - "@angular-devkit/core" "10.0.8" - ora "4.0.4" - rxjs "6.5.5" - "@angular/animations@~10.0.10": - version "10.0.10" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-10.0.10.tgz#c4f872e2917e9e7d4ffd04a64539e2aae67eef0c" - integrity sha512-lIbNeLVVl9bO41orPFpKoobCvxZIZ2wdcKJBEFtQiOdw0khRQQ8k7so4TAWOZXRJR+MkOUCjU2pO8gbMXgBweQ== + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-10.0.14.tgz#8e7fa9b26c70cf8e67ec0cc943211eb3957dda8c" + integrity sha512-0BOGQOuaudIG0pq6FAnG55teKM7tEQZdIwdoOf0okhh9n0cFWSWRUjvUxWt25bWswlO+HxELyJioiRUvVSES4g== dependencies: tslib "^2.0.0" @@ -306,15 +298,15 @@ parse5 "^5.0.0" "@angular/cli@~10.0.6": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-10.0.6.tgz#366114e36a155611b553be535bec166bd28b4119" - integrity sha512-gQbQA/CsCyMf9RKEv1hJBCdBebV2BHeT4lGi56Eii0IkvZD5WIH0dNfQzR+6ErqGDgE1EI+9YCuX3psMEvCRUA== - dependencies: - "@angular-devkit/architect" "0.1000.6" - "@angular-devkit/core" "10.0.6" - "@angular-devkit/schematics" "10.0.6" - "@schematics/angular" "10.0.6" - "@schematics/update" "0.1000.6" + version "10.0.8" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-10.0.8.tgz#133f1ea23e622923fd5dae27f5689379cfacaad3" + integrity sha512-unTteffLepsFw7qQulHOLLyLqCpQMOaZo0WO4x6cQGcW2mc0WgwnwBW2JDYMx1U2434t/Q13LqYMPNYWyCGsog== + dependencies: + "@angular-devkit/architect" "0.1000.8" + "@angular-devkit/core" "10.0.8" + "@angular-devkit/schematics" "10.0.8" + "@schematics/angular" "10.0.8" + "@schematics/update" "0.1000.8" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" debug "4.1.1" @@ -332,9 +324,9 @@ uuid "8.1.0" "@angular/common@~10.0.10": - version "10.0.10" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-10.0.10.tgz#405c3640449bbf9f2c3c764be93a91749cb931d4" - integrity sha512-p6/pTk0s0Ai5uUkOHHFZwp+TjxRNPldPxTU2LVxg2xuBEQTO53BsfBKn3zi74epdb1kBC0Yjdj6yEL4dITBs7A== + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-10.0.14.tgz#a08228323609a22559590f4295b26f247f7438f4" + integrity sha512-EOAuaMt2HwJF3DtIJ/ksHtnF8Pqh5K2rWISYLEs9R3WNaSGn74kbCODAT4pNhI8P22Ykl3H4FmQUgnDZ3uDAUg== dependencies: tslib "^2.0.0" @@ -365,51 +357,51 @@ tslib "^2.0.0" "@angular/core@~10.0.10": - version "10.0.10" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-10.0.10.tgz#10ca31d55899992e0b1585cfef4df8c40a1c60ac" - integrity sha512-PIQhLqjZayVXJoXs4WQu7orkePqFiux19y7bgBrsSAithe+g9BkrSIdX7+tkkX0zggUWKywY92YuMZCJ/S+uiw== + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-10.0.14.tgz#000f091e6c17239232120fdca871fdac6b529ebd" + integrity sha512-m+c9g6fA/gE+6K7It01b6r8TEmbuFjUZajQ9gG/pzist0mTBcqfvn0O4h5X+ebnSgw/bbnnp+4PbaXEi1pOWZQ== dependencies: tslib "^2.0.0" "@angular/forms@~10.0.10": - version "10.0.10" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-10.0.10.tgz#c9ed1728be678209beaae89f9aa257357764fb36" - integrity sha512-bWjbsqMTiCNQZzXAfiEwT/tiAzSvChnqBimrJWNSHVYRkp71TkDcKXn6mA+E//YR0eZ84GKNNiVlKFxqkmeyqQ== + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-10.0.14.tgz#b6e1a7f872c318039be21b0a11839c8df063f0a3" + integrity sha512-McKh3rXDlAE7qmCnyWKENb2HhqAT+1dsAfChuqs0w8jhKkoRgA00RDFee6dZ6XQCc907DwuV0K8+wC3CvBp35w== dependencies: tslib "^2.0.0" "@angular/language-service@~10.0.10": - version "10.0.10" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-10.0.10.tgz#ef01bcd48b8ce51b57c755e75c725b2b6ae43d2f" - integrity sha512-Id3hmPR5UeWAKsDeB6+O7m+4+FpUr5zcYdM8xXAzTjjn8laSuDUMb17wsAVRntPgRJv4SeaqUbWevwSkM5KExA== + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-10.0.14.tgz#b9c33d27dcd11e2bb0c5453df1e7b334a0896a94" + integrity sha512-QQLYUjD0T6u2hLNYXUEUbupAGsz5egmhCAckaQojvXCe3SLL/hQsrK4odrNuspy7TvMB0H5ZNEHGlF6m/WLZ3g== "@angular/localize@~10.0.10": - version "10.0.10" - resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-10.0.10.tgz#42f981685d4bbd949ac6e6066a142e45331d65da" - integrity sha512-5zIbAqcwzHPqOg/LK7G8WJ2cNEl8hpmObcsqiw3IVyD831htnwWglfkgcR+dJvPWiYRxTGnxe2fvEnIhFpZOXQ== + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-10.0.14.tgz#99064a3b12e94e54e791c0638fbbbcc8783d8a62" + integrity sha512-tV1oUii6bxpQ6bKELcZsibUEEGmNiROxy8xRW015VgrgMFhuNuesHSmNUIstZ7ag8/sjh0/w1p55PUB6LEiPFA== dependencies: "@babel/core" "7.8.3" glob "7.1.2" yargs "15.3.0" "@angular/platform-browser-dynamic@~10.0.10": - version "10.0.10" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.10.tgz#0ae069a67c3fa7d593af554a333dd2b69d12903c" - integrity sha512-6jbn0Ldyc+80BCETGtE7pzfKlbjfa/wEPhLEGWoYtxrrJ5UB3CblGpDMOsv1ibOQijPZ/JSmIMmAxz66+pLx3g== + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.14.tgz#4ee2257b2ccb94949f0a8083884020a814b5d47c" + integrity sha512-PPCAiNh/JSuQNKXOhj3a8CTFdVhTgF/EpGtaotnVr/BfbJMeFImKo7m2QQOTsAFaEP2DurSHnofPnMWAfHS2mg== dependencies: tslib "^2.0.0" "@angular/platform-browser@~10.0.10": - version "10.0.10" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-10.0.10.tgz#13ea3e32fb798c6d10148d38f1c9589a26f74e6d" - integrity sha512-srNGkvg9177skff7QOe3L+nGOSbrKLzFt3Z5O3oM0N0TWr8QlWEA+zQm8n0zLHI8AmdZbmFzAYYJiBvVCSc5RQ== + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-10.0.14.tgz#43b9aa7fcd8f312b58f371206df265c31ea13fac" + integrity sha512-DcBZ1wt2TwtXrdcmCTWanAzu2Vxk5Uvioam0UcDxcgXD84T2fHipyfZVn07fMqRvzFQj45tDNAEevFBnGZar4w== dependencies: tslib "^2.0.0" "@angular/router@~10.0.10": - version "10.0.10" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-10.0.10.tgz#fee0fccbe00c3f4a29ddeef9fe1bcbcb8b7ad28c" - integrity sha512-wDmr/Spuv4OhPK5a49AvgJhaedRw4yb7nmPMd51sWqzOV31RRcGXORjiXZOcSpElLxM9f7JV0tWDR5p5ko/kPA== + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-10.0.14.tgz#e8942e93a8154e1be749e1f9d79afa5f7b5b9cb9" + integrity sha512-VWzaNyPZDY99TMszV1GlXJgVOxXsjhJrsv3mIcjaz1dfdlKOeKTVDLdnyXfP9CkwE3PRmvG7eSXppIj6nn9BpQ== dependencies: tslib "^2.0.0" @@ -487,18 +479,18 @@ source-map "^0.5.0" "@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.1.tgz#2c55b604e73a40dc21b0e52650b11c65cf276643" - integrity sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ== + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" + integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" + "@babel/generator" "^7.11.6" "@babel/helper-module-transforms" "^7.11.0" "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.1" + "@babel/parser" "^7.11.5" "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.0" - "@babel/types" "^7.11.0" + "@babel/traverse" "^7.11.5" + "@babel/types" "^7.11.5" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -518,12 +510,12 @@ lodash "^4.17.13" source-map "^0.5.0" -"@babel/generator@^7.11.0", "@babel/generator@^7.8.3", "@babel/generator@^7.9.6": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.0.tgz#4b90c78d8c12825024568cbe83ee6c9af193585c" - integrity sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ== +"@babel/generator@^7.11.5", "@babel/generator@^7.11.6", "@babel/generator@^7.8.3", "@babel/generator@^7.9.6": + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" + integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.11.5" jsesc "^2.5.1" source-map "^0.5.0" @@ -572,11 +564,10 @@ lodash "^4.17.19" "@babel/helper-explode-assignable-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" - integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz#2d8e3470252cc17aba917ede7803d4a7a276a41b" + integrity sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ== dependencies: - "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" "@babel/helper-function-name@^7.10.4": @@ -649,14 +640,13 @@ lodash "^4.17.19" "@babel/helper-remap-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" - integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz#4474ea9f7438f18575e30b0cac784045b402a12d" + integrity sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-wrap-function" "^7.10.4" "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" "@babel/helper-replace-supers@^7.10.4": @@ -724,10 +714,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.1", "@babel/parser@^7.8.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": - version "7.11.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.3.tgz#9e1eae46738bcd08e23e867bab43e7b95299a8f9" - integrity sha512-REo8xv7+sDxkKvoxEywIdsNFiZLybwdI7hcT5uEPyQrSMB4YQ973BfC9OOrD/81MaIjh6UxdulIQXkjmiH3PcA== +"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.5", "@babel/parser@^7.8.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" + integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.10.5" @@ -1216,9 +1206,9 @@ semver "^5.5.0" "@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1258,25 +1248,25 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.6": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" - integrity sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.6": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" + integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" + "@babel/generator" "^7.11.5" "@babel/helper-function-name" "^7.10.4" "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.0" - "@babel/types" "^7.11.0" + "@babel/parser" "^7.11.5" + "@babel/types" "^7.11.5" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.6": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" - integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.6": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" + integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== dependencies: "@babel/helper-validator-identifier" "^7.10.4" lodash "^4.17.19" @@ -2323,20 +2313,20 @@ tslib "^2.0.0" "@ngneat/spectator@^5.13.0": - version "5.13.0" - resolved "https://registry.yarnpkg.com/@ngneat/spectator/-/spectator-5.13.0.tgz#0a9720c3d3b60571c3619054f9831856997acf67" - integrity sha512-BlCmmgHMPtrdJECwctFmziRhHzSF3xxRnKiR/qJIerCd4csgpwGbhtEEh/2jnFEyLP6yLo4T4nCslwq3dHdFrQ== + version "5.13.3" + resolved "https://registry.yarnpkg.com/@ngneat/spectator/-/spectator-5.13.3.tgz#e02104fcd6938c921d6a792601ec609e665eafda" + integrity sha512-y85WJeowMW6nqoWCY1ZkiXUEGuBO7dpGUAcL2CQL+GZ2ldr8iEtH00jLIoqWaW4C9pqopficsM8oFYPJIS4b2w== dependencies: "@testing-library/dom" "6.1.0" jquery "3.5.0" replace-in-file "^4.1.3" -"@ngtools/webpack@10.0.6": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-10.0.6.tgz#6fe392ecad9f2869fc68eda7f1344ad0b68a8898" - integrity sha512-AbSDhPmsljkZO2jHFpge/5AHLQIrbscWgo4brrhF7NQ5TvPgE0Xn0wU7gxB9++hVUKQLGnnbAvewJyB/uYb9Nw== +"@ngtools/webpack@10.0.8": + version "10.0.8" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-10.0.8.tgz#c818415a150ff6d578b25311b97859220b9d5a10" + integrity sha512-Qv4v7O4VGeWuXjRThd/mdC2I4cJOgQ7kDrVN7vkDB2EW5xtRB+/4hghvFeO3bD11FLuFvCxBMb0HbwyKoVQgEQ== dependencies: - "@angular-devkit/core" "10.0.6" + "@angular-devkit/core" "10.0.8" enhanced-resolve "4.1.1" rxjs "6.5.5" webpack-sources "1.4.3" @@ -2519,9 +2509,9 @@ "@types/node" ">= 8" "@octokit/types@^5.0.0", "@octokit/types@^5.0.1": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.4.0.tgz#25f2f8e24fec09214553168c41c06383c9d0f529" - integrity sha512-D/uotqF69M50OIlwMqgyIg9PuLT2daOiBAYF0P40I2ekFA2ESwwBY5dxZe/UhXdPvIbNKDzuZmQrO7rMpuFbcg== + version "5.4.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.4.1.tgz#d5d5f2b70ffc0e3f89467c3db749fa87fc3b7031" + integrity sha512-OlMlSySBJoJ6uozkr/i03nO5dlYQyE05vmQNZhAh9MyO4DPBP88QlwsDVLmVjIMFssvIZB6WO0ctIGMRG+xsJQ== dependencies: "@types/node" ">= 8" @@ -2566,21 +2556,21 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@schematics/angular@10.0.6", "@schematics/angular@~10.0.5": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-10.0.6.tgz#568590574dca1556280a0a04f625f79bee34ee4a" - integrity sha512-TPBpo0GnMJLvKE6rYZDkSy9pnkMH55rSJ6nfLDpQ5zzmhoD/QnASUr8trfTFs3+MqmPlX61xI00+HmStmI8sJQ== +"@schematics/angular@10.0.8", "@schematics/angular@~10.0.5": + version "10.0.8" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-10.0.8.tgz#af730827b2de6cab7561157a8772250eb5f277e1" + integrity sha512-KNO61UGtiKMQSG+NbusqLtwLbxId0y+xpXJt9PKFwi+vaViOO+YzOPREfiFCuQ7q6X8SmNlrMj6sZ34E2YN1pQ== dependencies: - "@angular-devkit/core" "10.0.6" - "@angular-devkit/schematics" "10.0.6" + "@angular-devkit/core" "10.0.8" + "@angular-devkit/schematics" "10.0.8" -"@schematics/update@0.1000.6": - version "0.1000.6" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1000.6.tgz#f0131d4b3ed879ae8f19c032d310bece79691738" - integrity sha512-GGfPGPjRF/MA4EeJ+h1ebzoYDzChF4BV7SaTfpT107LPCD3McRjKS39Jw2qH/ArGNSbrbJ8fYNOIj3g/uh1GoA== +"@schematics/update@0.1000.8": + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1000.8.tgz#3b745ec14e92cfd1f7d16f9a4c3864e1f12249c9" + integrity sha512-xHuj6ME3PNTsVUrpftd98LF3WHPM0NU25GcT/n0E/j0/52yDTiaPS3wUnYSK8ZSv4Et4hcyGx7f/LEXAoOKJXw== dependencies: - "@angular-devkit/core" "10.0.6" - "@angular-devkit/schematics" "10.0.6" + "@angular-devkit/core" "10.0.8" + "@angular-devkit/schematics" "10.0.8" "@yarnpkg/lockfile" "1.1.0" ini "1.3.5" npm-package-arg "^8.0.0" @@ -2594,15 +2584,10 @@ resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25" integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw== -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@sindresorhus/is@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-3.1.0.tgz#d8735532635bea69ad39119df5f0f10099bd09dc" - integrity sha512-n4J+zu52VdY43kdi/XdI9DzuMr1Mur8zFL5ZRG2opCans9aiFwkPxHYFEb5Xgy7n1Z4K6WfI4FpqUqsh3E8BPQ== +"@sindresorhus/is@^3.1.1": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-3.1.2.tgz#548650de521b344e3781fbdb0ece4aa6f729afb8" + integrity sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ== "@sinonjs/commons@^1.7.0": version "1.8.1" @@ -2616,13 +2601,6 @@ resolved "https://registry.yarnpkg.com/@swimlane/ngx-datatable/-/ngx-datatable-17.1.0.tgz#ef2f91c3783526e7e89ac7a62a53e7bc9e1c90d5" integrity sha512-zYUS7uNO9OJ5UQZFuuTRjlPu6vdKA+FHYLfeEs7PgSuUiDCcbl2SWoUdS/3zIoWn/qQyws767ueWiAvvWUbpEw== -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - "@szmarczak/http-timer@^4.0.5": version "4.0.5" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" @@ -2748,14 +2726,14 @@ "@types/istanbul-lib-report" "*" "@types/jasmine@^3.3.9": - version "3.5.12" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.5.12.tgz#5c378c1545cdc7cb339cff5578f854b6d1e0a17d" - integrity sha512-vJaQ58oceFao+NzpKNqLOWwHPsqA7YEhKv+mOXvYU4/qh+BfVWIxaBtL0Ck5iCS67yOkNwGkDCrzepnzIWF+7g== + version "3.5.14" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.5.14.tgz#f41a14e8ffa939062a71cf9722e5ee7d4e1f94af" + integrity sha512-Fkgk536sHPqcOtd+Ow+WiUNuk0TSo/BntKkF8wSvcd6M2FvPjeXcUE6Oz/bwDZiUZEaXLslAgw00Q94Pnx6T4w== "@types/jest@26.x": - version "26.0.10" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.10.tgz#8faf7e9756c033c39014ae76a7329efea00ea607" - integrity sha512-i2m0oyh8w/Lum7wWK/YOZJakYF8Mx08UaKA1CtbmFeDquVhAEdA7znacsVSf2hJ1OQ/OfVMGN90pw/AtzF8s/Q== + version "26.0.13" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.13.tgz#5a7b9d5312f5dd521a38329c38ee9d3802a0b85e" + integrity sha512-sCzjKow4z9LILc6DhBvn5AkIfmQzDZkgtVVKmGwVrs5tuid38ws281D4l+7x1kP487+FlKDh5kfMZ8WSPAdmdA== dependencies: jest-diff "^25.2.1" pretty-format "^25.2.1" @@ -2768,10 +2746,10 @@ jest-diff "^25.2.1" pretty-format "^25.2.1" -"@types/json-schema@^7.0.4": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" - integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== +"@types/json-schema@^7.0.5": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== "@types/keyv@*": version "3.1.1" @@ -2791,19 +2769,19 @@ integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= "@types/node@*", "@types/node@>= 8": - version "14.6.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499" - integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA== + version "14.6.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.4.tgz#a145cc0bb14ef9c4777361b7bbafa5cf8e3acb5a" + integrity sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ== "@types/node@^12.11.1": - version "12.12.54" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.54.tgz#a4b58d8df3a4677b6c08bfbc94b7ad7a7a5f82d1" - integrity sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w== + version "12.12.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.55.tgz#0aa266441cb9e1fd3e415a8f619cb7d776667cdd" + integrity sha512-Vd6xQUVvPCTm7Nx1N7XHcpX6t047ltm7TgcsOr4gFHjeYgwZevo+V7I1lfzHnj5BT5frztZ42+RTG4MwYw63dw== "@types/node@^8.0.31": - version "8.10.62" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.62.tgz#8d0d0db44a46ae7679d92e2e36d41bf1c3625d6a" - integrity sha512-76fupxOYVxk36kb7O/6KtrAPZ9jnSK3+qisAX4tQMEuGNdlvl7ycwatlHqjoE6jHfVtXFM3pCrCixZOidc5cuw== + version "8.10.63" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.63.tgz#f86775d576bc07a2992da244f41c23d3ba66d402" + integrity sha512-g+nSkeHFDd2WOQChfmy9SAXLywT47WZBrGS/NC5ym5PJ8c8RC6l4pbGaUW/X0+eZJnXw6/AVNEouXWhV4iz72Q== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -3155,9 +3133,9 @@ agentkeepalive@^3.4.1: humanize-ms "^1.2.1" aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" indent-string "^4.0.0" @@ -3167,7 +3145,7 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== @@ -3182,7 +3160,7 @@ ajv@6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3: +ajv@6.12.4, ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: version "6.12.4" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== @@ -3204,13 +3182,6 @@ angular-oauth2-oidc@^10.0.0, angular-oauth2-oidc@^10.0.3: dependencies: tslib "^2.0.0" -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== - dependencies: - string-width "^3.0.0" - ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -3755,20 +3726,6 @@ bootstrap@^4.5.0: resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.5.2.tgz#a85c4eda59155f0d71186b6e6ad9b875813779ab" integrity sha512-vlGn0bcySYl/iV+BGA544JkkZP5LB3jsmkeKLFQakCOwCM3AOk7VkldBz4jrzSe+Z0Ezn99NVXa1o45cQY4R6A== -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -3879,12 +3836,12 @@ browserify-zlib@^0.2.0: pako "~1.0.5" browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.12.0, browserslist@^4.7.0, browserslist@^4.8.5, browserslist@^4.9.1: - version "4.14.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.0.tgz#2908951abfe4ec98737b72f34c3bcedc8d43b000" - integrity sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ== + version "4.14.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.1.tgz#cb2b490ba881d45dc3039078c7ed04411eaf3fa3" + integrity sha512-zyBTIHydW37pnb63c7fHFXUG6EcqWOqoMdDx6cdyaDFriZ20EoVxcE95S54N+heRqY8m8IUgB5zYta/gCwSaaA== dependencies: - caniuse-lite "^1.0.30001111" - electron-to-chromium "^1.3.523" + caniuse-lite "^1.0.30001124" + electron-to-chromium "^1.3.562" escalade "^3.0.2" node-releases "^1.1.60" @@ -4065,19 +4022,6 @@ cacheable-lookup@^5.0.3: resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3" integrity sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w== -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - cacheable-request@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.1.tgz#062031c2856232782ed694a257fa35da93942a58" @@ -4181,10 +4125,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001061, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001111: - version "1.0.30001115" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001115.tgz#c04cd828883ba47f6f776312e0817bcc9040cfa4" - integrity sha512-NZrG0439ePYna44lJX8evHX2L7Z3/z3qjVLnHgbBb/duNEnGo348u+BQS5o4HTWcrb++100dHFrU36IesIrC1Q== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001061, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001124: + version "1.0.30001124" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001124.tgz#5d9998190258e11630d674fc50ea8e579ae0ced2" + integrity sha512-zQW8V3CdND7GHRH6rxm6s59Ww4g/qGWTheoboW9nfeMg7sUoopIfKCcNZUjwYRCOrvereh3kwDpZj4VLQ7zGtA== canonical-path@1.0.0: version "1.0.0" @@ -4351,11 +4295,6 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-boxes@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" - integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== - cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -4546,15 +4485,15 @@ commander@^2.11.0, commander@^2.12.1, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +commander@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" + integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA== commitizen@^4.0.3: - version "4.1.2" - resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.1.2.tgz#6095eb825fd3f0d3611df88e6803c69b23307e9a" - integrity sha512-LBxTQKHbVgroMz9ohpm86N+GfJobonGyvDc3zBGdZazbwCLz2tqLa48Rf2TnAdKx7/06W1i1R3SXUt5QW97qVQ== + version "4.2.1" + resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.2.1.tgz#3b098b16c6b1a37f0d129018dff6751b20cd3103" + integrity sha512-nZsp8IThkDu7C+93BFD/mLShb9Gd6Wsaf90tpKE3x/6u5y/Q52kzanIJpGr0qvIsJ5bCMpgKtr3Lbu3miEJfaA== dependencies: cachedir "2.2.0" cz-conventional-changelog "3.2.0" @@ -4564,9 +4503,9 @@ commitizen@^4.0.3: find-root "1.1.0" fs-extra "8.1.0" glob "7.1.4" - inquirer "6.5.0" + inquirer "6.5.2" is-utf8 "^0.2.1" - lodash "4.17.15" + lodash "^4.17.20" minimist "1.2.5" strip-bom "4.0.0" strip-json-comments "3.0.1" @@ -4649,18 +4588,6 @@ config-chain@^1.1.11: ini "^1.3.4" proto-list "~1.2.1" -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" @@ -5057,11 +4984,6 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -5356,9 +5278,9 @@ data-urls@^2.0.0: whatwg-url "^8.0.0" date-fns@^2.10.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.15.0.tgz#424de6b3778e4e69d3ff27046ec136af58ae5d5f" - integrity sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ== + version "2.16.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" + integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== dateformat@^3.0.0: version "3.0.3" @@ -5416,13 +5338,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - decompress-response@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" @@ -5447,11 +5362,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -5477,11 +5387,6 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - defer-to-connect@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" @@ -5728,11 +5633,6 @@ dot-prop@^5.1.0, dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - duplexer@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -5761,10 +5661,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.523: - version "1.3.534" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.534.tgz#fc7af8518dd00a5b22a24aed3f116b5d097e2330" - integrity sha512-7x2S3yUrspNHQOoPk+Eo+iHViSiJiEGPI6BpmLy1eT2KRNGCkBt/NUYqjfXLd1DpDCQp7n3+LfA1RkbG+LqTZQ== +electron-to-chromium@^1.3.562: + version "1.3.562" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.562.tgz#79c20277ee1c8d0173a22af00e38433b752bc70f" + integrity sha512-WhRe6liQ2q/w1MZc8mD8INkenHivuHdrr4r5EQHNomy3NJux+incP6M6lDMd0paShP3MD0WGe5R1TWmEClf+Bg== elliptic@^6.5.3: version "6.5.3" @@ -5847,9 +5747,9 @@ env-paths@^2.2.0: integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== envinfo@^7.3.1: - version "7.7.2" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.2.tgz#098f97a0e902f8141f9150553c92dbb282c4cabe" - integrity sha512-k3Eh5bKuQnZjm49/L7H4cHzs2FlL5QjbTB3JrPxoTI8aJG7hVMe4uKyJxSYH4ahseby2waUwk5OaKX/nAsaYgg== + version "7.7.3" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" + integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA== err-code@^1.0.0: version "1.1.2" @@ -5939,11 +5839,6 @@ escalade@^3.0.2: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.2.tgz#6a580d70edb87880f22b4c91d0d56078df6962c4" integrity sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ== -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -5985,17 +5880,22 @@ esprima@^4.0.0, esprima@^4.0.1: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + estree-walker@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" @@ -6022,9 +5922,9 @@ eventemitter3@^3.1.0: integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== eventemitter3@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== events@^3.0.0: version "3.2.0" @@ -6710,9 +6610,9 @@ git-up@^4.0.0: parse-url "^5.0.0" git-url-parse@^11.1.2: - version "11.1.3" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.1.3.tgz#03625b6fc09905e9ad1da7bb2b84be1bf9123143" - integrity sha512-GPsfwticcu52WQ+eHp0IYkAyaOASgYdtsQDIt4rUp6GbiNt1P9ddrh3O0kQB0eD4UJZszVqNT3+9Zwcg40fywA== + version "11.2.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.2.0.tgz#2955fd51befd6d96ea1389bbe2ef57e8e6042b04" + integrity sha512-KPoHZg8v+plarZvto4ruIzzJLFQoRx+sUs5DQSr07By9IBKguVd+e6jwrFR6/TP6xrCJlNV1tPqLO1aREc7O2g== dependencies: git-up "^4.0.0" @@ -6786,13 +6686,6 @@ global-dirs@^0.1.1: dependencies: ini "^1.3.4" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== - dependencies: - ini "^1.3.5" - global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -6868,39 +6761,22 @@ globby@^9.2.0: slash "^2.0.0" got@^11.5.2: - version "11.5.2" - resolved "https://registry.yarnpkg.com/got/-/got-11.5.2.tgz#772e3f3a06d9c7589c7c94dc3c83cdb31ddbf742" - integrity sha512-yUhpEDLeuGiGJjRSzEq3kvt4zJtAcjKmhIiwNp/eUs75tRlXfWcHo5tcBaMQtnjHWC7nQYT5HkY/l0QOQTkVww== + version "11.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-11.6.0.tgz#4978c78f3cbc3a45ee95381f8bb6efd1db1f4638" + integrity sha512-ErhWb4IUjQzJ3vGs3+RR12NWlBDDkRciFpAkQ1LPUxi6OnwhGj07gQxjPsyIk69s7qMihwKrKquV6VQq7JNYLA== dependencies: - "@sindresorhus/is" "^3.0.0" + "@sindresorhus/is" "^3.1.1" "@szmarczak/http-timer" "^4.0.5" "@types/cacheable-request" "^6.0.1" "@types/responselike" "^1.0.0" cacheable-lookup "^5.0.3" cacheable-request "^7.0.1" decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.0" + http2-wrapper "^1.0.0-beta.5.2" lowercase-keys "^2.0.0" p-cancelable "^2.0.0" responselike "^2.0.0" -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" @@ -7004,11 +6880,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - has@^1.0.0, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -7196,7 +7067,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -http2-wrapper@^1.0.0-beta.5.0: +http2-wrapper@^1.0.0-beta.5.2: version "1.0.0-beta.5.2" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ== @@ -7324,11 +7195,6 @@ import-from@^2.1.0: dependencies: resolve-from "^3.0.0" -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -7400,7 +7266,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@1.3.5, ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@1.3.5, ini@^1.3.2, ini@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -7438,10 +7304,10 @@ inquirer-file-tree-selection-prompt@^1.0.2: lodash "^4.17.11" rxjs "^6.5.2" -inquirer@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== +inquirer@6.5.2, inquirer@^6.2.0, inquirer@^6.4.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== dependencies: ansi-escapes "^3.2.0" chalk "^2.4.2" @@ -7476,25 +7342,6 @@ inquirer@7.1.0: strip-ansi "^6.0.0" through "^2.3.6" -inquirer@^6.2.0, inquirer@^6.4.1: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" @@ -7717,14 +7564,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - is-interactive@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" @@ -7735,11 +7574,6 @@ is-module@^1.0.0: resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -7800,11 +7634,6 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== - is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -7906,11 +7735,6 @@ is-wsl@^2.1.1: dependencies: is-docker "^2.0.0" -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -8218,12 +8042,12 @@ jest-pnp-resolver@^1.2.1: integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== jest-preset-angular@^8.2.0, jest-preset-angular@^8.2.1: - version "8.2.1" - resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-8.2.1.tgz#eaf5f7f6e72c1f700fbdb4c3d812976325f26d4e" - integrity sha512-6t7lavnIHnZWz6a03jpZ5L7phMefi6SoBIRZ/GQdyML8YgwMtbJszbhUE+dh5lzmeNbd6AJ1gfleetGy2Rg4cQ== + version "8.3.1" + resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-8.3.1.tgz#b8e4867639982a0989f4ef5ef0bad1c084070ef4" + integrity sha512-WhQm+0tXzikkvIF35XErV87DqYbieZI0R0MIGgn7VE/DDhdbXFDmYQxFZ7w4qcA0cGLLvSMTBbIsUtHeE/rFxQ== dependencies: - pretty-format "^26.0.0" - ts-jest "^26.0.0" + pretty-format "26.x" + ts-jest "26.x" jest-regex-util@^25.2.6: version "25.2.6" @@ -8485,11 +8309,6 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -8500,6 +8319,11 @@ json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-bet resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -8597,13 +8421,6 @@ karma-source-map-support@1.4.0: dependencies: source-map-support "^0.5.5" -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - keyv@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.1.tgz#9fe703cb4a94d6d11729d320af033307efd02ee6" @@ -8645,13 +8462,6 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -latest-version@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - lerna@^3.19.0: version "3.22.1" resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.22.1.tgz#82027ac3da9c627fd8bf02ccfeff806a98e65b62" @@ -8888,12 +8698,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.2.1: +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.2.1: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -8913,9 +8718,9 @@ log-symbols@^3.0.0: chalk "^2.4.2" loglevel@^1.6.8: - version "1.6.8" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" - integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== + version "1.7.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" + integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ== lolex@^5.0.0: version "5.1.2" @@ -8944,11 +8749,6 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" @@ -9137,9 +8937,9 @@ meow@^4.0.0: trim-newlines "^2.0.0" meow@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.0.tgz#50ecbcdafa16f8b58fb7eb9675b933f6473b3a59" - integrity sha512-kq5F0KVteskZ3JdfyQFivJEj2RaA8NFsS4+r9DaMKLcUHpk5OcHS3Q0XkCXONB1mZRPsu/Y/qImKri0nwSEZog== + version "7.1.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" + integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA== dependencies: "@types/minimist" "^1.2.0" camelcase-keys "^6.2.2" @@ -9252,7 +9052,7 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: +mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== @@ -9544,9 +9344,9 @@ next-tick@~1.0.0: integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= ng-packagr@^10.0.0: - version "10.0.4" - resolved "https://registry.yarnpkg.com/ng-packagr/-/ng-packagr-10.0.4.tgz#8c4503d0a7b49d7622d493527717f0b5b2e0ad97" - integrity sha512-ddx8+sRCXV8FXlmBVft+G3tdHH9W11MV4au/k+ZWEijPviGiUh0mj7JKfY0CTvtpyGAorE4ZzveiSTk5oIhlBQ== + version "10.1.0" + resolved "https://registry.yarnpkg.com/ng-packagr/-/ng-packagr-10.1.0.tgz#a2fc0f86f5f8895f811597d33d943f93c7c77c17" + integrity sha512-KXyajkAyY/51iMJPVezDybb5Bn1rtl/JDGC4w9jjIdeL2Ip+KTMDGsqpc+5nQm/vnasZcJ/Xj2a+0VOwrbyVWg== dependencies: "@rollup/plugin-commonjs" "^15.0.0" "@rollup/plugin-json" "^4.0.0" @@ -9556,7 +9356,7 @@ ng-packagr@^10.0.0: browserslist "^4.7.0" chalk "^4.0.0" chokidar "^3.2.1" - commander "^5.0.0" + commander "^6.0.0" cssnano-preset-default "^4.0.7" fs-extra "^9.0.0" glob "^7.1.2" @@ -9573,7 +9373,6 @@ ng-packagr@^10.0.0: sass "^1.23.0" stylus "^0.54.7" terser "^5.0.0" - update-notifier "^4.0.0" ng-zorro-antd@^9.3.0: version "9.3.0" @@ -10119,11 +9918,6 @@ osenv@^0.1.4, osenv@^0.1.5: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - p-cancelable@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" @@ -10246,16 +10040,6 @@ p-waterfall@^1.0.0: dependencies: p-reduce "^1.0.0" -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - pacote@9.5.12: version "9.5.12" resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66" @@ -10352,13 +10136,13 @@ parse-json@^4.0.0: json-parse-better-errors "^1.0.1" parse-json@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.1.tgz#7cfe35c1ccd641bce3981467e6c2ece61b3b3878" - integrity sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ== + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" parse-passwd@^1.0.0: @@ -10583,9 +10367,9 @@ posix-character-classes@^0.1.0: integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= postcss-calc@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.3.tgz#d65cca92a3c52bf27ad37a5f732e0587b74f1623" - integrity sha512-IB/EAEmZhIMEIhG7Ov4x+l47UaXOS1n2f4FBUk/aKllQhtSCxWhTzn0nJgkqN7fo/jcWySvWTSB6Syk9L+31bA== + version "7.0.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.4.tgz#5e177ddb417341e6d4a193c5d9fd8ada79094f8b" + integrity sha512-0I79VRAd1UTkaHzY9w83P39YGO/M3bG7/tNLrHGEunBolfoGM0hSjrGvjoeaj0JE/zIw5GsI2KZ0UwDJqv5hjw== dependencies: postcss "^7.0.27" postcss-selector-parser "^6.0.2" @@ -10966,16 +10750,21 @@ prepend-http@^1.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - prettier@^1.18.2: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== +pretty-format@26.x: + version "26.4.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.4.2.tgz#d081d032b398e801e2012af2df1214ef75a81237" + integrity sha512-zK6Gd8zDsEiVydOCGLkoBoZuqv8VTiHyAbKznXe/gaph/DAeZOmit9yMfgIz5adIgAMMs5XfoYSwAX3jcCO1tA== + dependencies: + "@jest/types" "^26.3.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + pretty-format@^24.3.0, pretty-format@^24.8.0: version "24.9.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" @@ -10996,16 +10785,6 @@ pretty-format@^25.2.1, pretty-format@^25.5.0: ansi-styles "^4.0.0" react-is "^16.12.0" -pretty-format@^26.0.0: - version "26.4.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.4.0.tgz#c08073f531429e9e5024049446f42ecc9f933a3b" - integrity sha512-mEEwwpCseqrUtuMbrJG4b824877pM5xald3AkilJ47Po2YLr97/siejYQHqj2oDQBeJNbu+Q0qUuekJ8F0NAPg== - dependencies: - "@jest/types" "^26.3.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -11152,13 +10931,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pupa@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" - integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== - dependencies: - escape-goat "^2.0.0" - q@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" @@ -11255,16 +11027,6 @@ raw-loader@4.0.1: loader-utils "^2.0.0" schema-utils "^2.6.5" -rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-is@^16.12.0, react-is@^16.8.4: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -11285,16 +11047,14 @@ read-cmd-shim@^1.0.1: graceful-fs "^4.1.2" "read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: - version "2.1.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" - integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== + version "2.1.2" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" + integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== dependencies: glob "^7.1.1" - json-parse-better-errors "^1.0.1" + json-parse-even-better-errors "^2.3.0" normalize-package-data "^2.0.0" npm-normalize-package-bin "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.2" read-package-tree@5.3.1, read-package-tree@^5.1.6: version "5.3.1" @@ -11524,20 +11284,6 @@ regexpu-core@^4.7.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" -registry-auth-token@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" - integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w== - dependencies: - rc "^1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" @@ -11725,13 +11471,6 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2 dependencies: path-parse "^1.0.6" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - responselike@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" @@ -11841,9 +11580,9 @@ rollup@2.10.9: fsevents "~2.1.2" rollup@^2.8.0: - version "2.26.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.26.3.tgz#502c755872a4590937cfa4e8f7eb99d3bc3c4025" - integrity sha512-Mlt39/kL2rA9egcbQbaZV1SNVplGqYYhDDMcGgHPPE0tvM3R4GrB+IEdYy2QtTrdzMQx57ZcqDFf/KWWm8F+uw== + version "2.26.10" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.26.10.tgz#0ffe0390d35f07af850382f22f1b8525c7f57f07" + integrity sha512-dUnjCWOA0h9qNX6qtcHidyatz8FAFZxVxt1dbcGtKdlJkpSxGK3G9+DLCYvtZr9v94D129ij9zUhG+xbRoqepw== optionalDependencies: fsevents "~2.1.2" @@ -11883,7 +11622,7 @@ rxjs@6.5.5, rxjs@~6.5.4: dependencies: tslib "^1.9.0" -rxjs@^6.4.0, rxjs@^6.5.0, rxjs@^6.5.2, rxjs@^6.5.3: +rxjs@6.6.2, rxjs@^6.4.0, rxjs@^6.5.0, rxjs@^6.5.2, rxjs@^6.5.3: version "6.6.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg== @@ -11981,13 +11720,13 @@ schema-utils@^1.0.0: ajv-keywords "^3.1.0" schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" select-hose@^2.0.0: version "2.0.0" @@ -12011,13 +11750,6 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - semver-dsl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0" @@ -12609,7 +12341,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -12727,11 +12459,6 @@ strip-json-comments@3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - strong-log-transformer@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" @@ -12815,9 +12542,9 @@ supports-color@^6.1.0: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" @@ -12937,11 +12664,6 @@ tempfile@^3.0.0: temp-dir "^2.0.0" uuid "^3.3.2" -term-size@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" - integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -12999,9 +12721,9 @@ terser@^4.1.2, terser@^4.6.13: source-map-support "~0.5.12" terser@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.1.0.tgz#1f4ab81c8619654fdded51f3157b001e1747281d" - integrity sha512-pwC1Jbzahz1ZPU87NQ8B3g5pKbhyJSiHih4gLH6WZiPU8mmS1IlGbB0A2Nuvkj/LCNsgIKctg6GkYwWCeTvXZQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.0.tgz#c481f4afecdcc182d5e2bdd2ff2dc61555161e81" + integrity sha512-XTT3D3AwxC54KywJijmY2mxZ8nJiEjBHVYzq8l9OaYuRFWeQNBwvipuzzYEP4e+/AVcd1hqG/CqgsdIRyT45Fg== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -13119,11 +12841,6 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" @@ -13210,10 +12927,10 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= -ts-jest@^26.0.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.2.0.tgz#7ec22faceb05ee1467fdb5265d1b33c27441f163" - integrity sha512-9+y2qwzXdAImgLSYLXAb/Rhq9+K4rbt0417b8ai987V60g2uoNWBBmMkYgutI7D8Zhu+IbCSHbBtrHxB9d7xyA== +ts-jest@26.x: + version "26.3.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.3.0.tgz#6b2845045347dce394f069bb59358253bc1338a9" + integrity sha512-Jq2uKfx6bPd9+JDpZNMBJMdMQUC3sJ08acISj8NXlVgR2d5OqslEHOR2KHMgwymu8h50+lKIm0m0xj/ioYdW2Q== dependencies: "@types/jest" "26.x" bs-logger "0.x" @@ -13365,9 +13082,9 @@ type@^1.0.1: integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + version "2.1.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" + integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -13387,9 +13104,9 @@ typescript@^3.5.2, typescript@~3.9.2, typescript@~3.9.5: integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== uglify-js@^3.1.4: - version "3.10.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.1.tgz#dd14767eb7150de97f2573a5ff210db14fffe4ad" - integrity sha512-RjxApKkrPJB6kjJxQS3iZlf///REXWYxYJxO/MpmlQzVkDWVI3PSnCBWezMecmTU/TRkNxrl8bmsfFQCp+LO+Q== + version "3.10.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.3.tgz#f0d2f99736c14de46d2d24649ba328be3e71c3bf" + integrity sha512-Lh00i69Uf6G74mvYpHCI9KVVXLcHW/xu79YTvH7Mkc9zyKUeSPz0owW0dguj0Scavns3ZOh3wY63J0Zb97Za2g== uid-number@0.0.6: version "0.0.6" @@ -13458,13 +13175,6 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - universal-analytics@0.4.20: version "0.4.20" resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.4.20.tgz#d6b64e5312bf74f7c368e3024a922135dbf24b03" @@ -13519,29 +13229,10 @@ upath@^1.1.1, upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-notifier@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.1.tgz#895fc8562bbe666179500f9f2cebac4f26323746" - integrity sha512-9y+Kds0+LoLG6yN802wVXoIfxYEwh3FlZwzMwpCZp62S2i1/Jzeqb9Eeeju3NSHccGGasfGlK5/vEHbAifYRDg== - dependencies: - boxen "^4.2.0" - chalk "^3.0.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== dependencies: punycode "^2.1.0" @@ -13550,13 +13241,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - url-parse@^1.4.3: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" @@ -13767,10 +13451,10 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webpack-dev-middleware@3.7.2, webpack-dev-middleware@^3.7.2: version "3.7.2" @@ -13924,13 +13608,13 @@ whatwg-url@^7.0.0: webidl-conversions "^4.0.2" whatwg-url@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" - integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== + version "8.2.1" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.2.1.tgz#ed73417230784b281fb2a32c3c501738b46167c3" + integrity sha512-ZmVCr6nfBeaMxEHALLEGy0LszYjpJqf6PVNQUQ1qd9Et+q7Jpygd4rGGDXgHjD8e99yLFseD69msHDM4YwPZ4A== dependencies: lodash.sortby "^4.7.0" tr46 "^2.0.2" - webidl-conversions "^5.0.0" + webidl-conversions "^6.1.0" when@~3.6.x: version "3.6.4" @@ -13963,13 +13647,6 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - windows-release@^3.1.0: version "3.3.3" resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999" @@ -14087,11 +13764,6 @@ ws@^7.0.0: resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" From c93b7956b10e5a91c483fba4581621109e44c930 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:11:29 +0300 Subject: [PATCH 260/474] chore: update angular.yml temprorary --- .github/workflows/angular.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index 52aaa57b98..05cdfba174 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -18,5 +18,11 @@ jobs: - uses: actions/setup-node@v1 with: node-version: '12.x' - - run: yarn && yarn ci + + - name: Install packages + run: yarn install + working-directory: npm/ng-packs + + - name: Run lint + run: yarn ng lint working-directory: npm/ng-packs From ea2545452438f065b1f5f86a2771a32513414959 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:12:10 +0300 Subject: [PATCH 261/474] chore: trigger angular action --- npm/ng-packs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/README.md b/npm/ng-packs/README.md index 220bc57f37..f0a6482b63 100644 --- a/npm/ng-packs/README.md +++ b/npm/ng-packs/README.md @@ -26,4 +26,4 @@ If you will only develop the `dev-app`, you don't need to run `symlink-manager`. For more information, see the [docs.abp.io](https://docs.abp.io) -If would you like contribute, see the [contribution guideline](./CONTRIBUTING.md). \ No newline at end of file +If would you like contribute, see the [contribution guideline](./CONTRIBUTING.md). \ No newline at end of file From 24240b59b9a06bd2ab057a2d24ac79e0fd03d668 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:19:23 +0300 Subject: [PATCH 262/474] chore: trigger build --- npm/ng-packs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/README.md b/npm/ng-packs/README.md index f0a6482b63..220bc57f37 100644 --- a/npm/ng-packs/README.md +++ b/npm/ng-packs/README.md @@ -26,4 +26,4 @@ If you will only develop the `dev-app`, you don't need to run `symlink-manager`. For more information, see the [docs.abp.io](https://docs.abp.io) -If would you like contribute, see the [contribution guideline](./CONTRIBUTING.md). \ No newline at end of file +If would you like contribute, see the [contribution guideline](./CONTRIBUTING.md). \ No newline at end of file From a5261b68aaf690b1eaf44371cc40a759c7ad48f0 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:21:53 +0300 Subject: [PATCH 263/474] chore: organize angular action steps --- .github/workflows/angular.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index 05cdfba174..782d468c48 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -26,3 +26,15 @@ jobs: - name: Run lint run: yarn ng lint working-directory: npm/ng-packs + + - name: Run prepare workspace + run: yarn prepare:workspace + working-directory: npm/ng-packs + + - name: Run test + run: yarn ci:test + working-directory: npm/ng-packs + + - name: Run build + run: yarn ci:build + working-directory: npm/ng-packs From a6cae24e8ff98c4041dcc548aaa711ba0eb75b2b Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:22:07 +0300 Subject: [PATCH 264/474] chore: trigger angular action --- npm/ng-packs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/README.md b/npm/ng-packs/README.md index 220bc57f37..4bbe08c5fc 100644 --- a/npm/ng-packs/README.md +++ b/npm/ng-packs/README.md @@ -26,4 +26,4 @@ If you will only develop the `dev-app`, you don't need to run `symlink-manager`. For more information, see the [docs.abp.io](https://docs.abp.io) -If would you like contribute, see the [contribution guideline](./CONTRIBUTING.md). \ No newline at end of file +If would you like contribute, see the [contribution guideline](./CONTRIBUTING.md). From da8738b3714b292f1fdf15578154b14d3e578f44 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:26:12 +0300 Subject: [PATCH 265/474] chore: change a step name in angular.yml --- .github/workflows/angular.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index 782d468c48..b750fb4545 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -35,6 +35,6 @@ jobs: run: yarn ci:test working-directory: npm/ng-packs - - name: Run build + - name: Run prod build run: yarn ci:build working-directory: npm/ng-packs From 89c4c59c66e0e20419f9a4e8c88d603492edd20e Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:37:37 +0300 Subject: [PATCH 266/474] chore: comment 3 steps in angular.yml for test --- .github/workflows/angular.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index b750fb4545..406a252d59 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -23,17 +23,17 @@ jobs: run: yarn install working-directory: npm/ng-packs - - name: Run lint - run: yarn ng lint - working-directory: npm/ng-packs + # - name: Run lint + # run: yarn ng lint + # working-directory: npm/ng-packs - - name: Run prepare workspace - run: yarn prepare:workspace - working-directory: npm/ng-packs + # - name: Run prepare workspace + # run: yarn prepare:workspace + # working-directory: npm/ng-packs - - name: Run test - run: yarn ci:test - working-directory: npm/ng-packs + # - name: Run test + # run: yarn ci:test + # working-directory: npm/ng-packs - name: Run prod build run: yarn ci:build From 7b24bf2cfc7314378e7afb1bca384fb01d25d198 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:40:56 +0300 Subject: [PATCH 267/474] chore: update ci:build script --- 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 1c3aaf5fef..32ff245f95 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -19,7 +19,7 @@ "prepare:workspace": "yarn scripts:build --noInstall", "ci": "yarn ng lint && yarn prepare:workspace && yarn ci:test && yarn ci:build", "ci:test": "ng test --coverage=false --silent", - "ci:build": "cd scripts && yarn build:prod", + "ci:build": "cd scripts && yarn install && yarn build:prod", "lerna": "lerna", "compile:ivy": "yarn ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points --tsconfig './tsconfig.prod.json' --source node_modules --async false", "postinstall": "npm run compile:ivy" From b1286f1c07fef57a826ef27b15ce8f71c0f4b684 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:44:03 +0300 Subject: [PATCH 268/474] ci: add new steps to angular.yml --- .github/workflows/angular.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index 406a252d59..4480ce57c2 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -36,5 +36,13 @@ jobs: # working-directory: npm/ng-packs - name: Run prod build - run: yarn ci:build + run: yarn build --prod working-directory: npm/ng-packs + + - name: Install packages of app template + run: yarn install + working-directory: npm/templates/app/angular + + - name: Run prod build in app template + run: yarn build --prod + working-directory: npm/templates/app/angular From 37ca032ab4411b4fa6d02451d7d69066556fc8da Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:48:42 +0300 Subject: [PATCH 269/474] chore: change some step names in angular.yml --- .github/workflows/angular.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index 4480ce57c2..c1a1d10223 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -35,14 +35,14 @@ jobs: # run: yarn ci:test # working-directory: npm/ng-packs - - name: Run prod build - run: yarn build --prod - working-directory: npm/ng-packs + # - name: Build dev-app + # run: yarn build --prod + # working-directory: npm/ng-packs - name: Install packages of app template run: yarn install - working-directory: npm/templates/app/angular + working-directory: templates/app/angular - - name: Run prod build in app template + - name: Build app template run: yarn build --prod - working-directory: npm/templates/app/angular + working-directory: templates/app/angular From 8be8429c98fab84fd26bd81838013d96de40edbc Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:55:01 +0300 Subject: [PATCH 270/474] chore: trigger angular action --- npm/ng-packs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/README.md b/npm/ng-packs/README.md index 4bbe08c5fc..220bc57f37 100644 --- a/npm/ng-packs/README.md +++ b/npm/ng-packs/README.md @@ -26,4 +26,4 @@ If you will only develop the `dev-app`, you don't need to run `symlink-manager`. For more information, see the [docs.abp.io](https://docs.abp.io) -If would you like contribute, see the [contribution guideline](./CONTRIBUTING.md). +If would you like contribute, see the [contribution guideline](./CONTRIBUTING.md). \ No newline at end of file From 58feb678d25baa08a6d4a0ced846a9e892844d3c Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 02:57:10 +0300 Subject: [PATCH 271/474] ci: update cache path --- .github/workflows/angular.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index c1a1d10223..a011f40195 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -12,7 +12,7 @@ jobs: - uses: actions/cache@v2 with: - path: '**/node_modules' + path: '*/*/node_modules' key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - uses: actions/setup-node@v1 From 295945bea1688c5745f5dc34456fd255b46d893a Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 03:08:08 +0300 Subject: [PATCH 272/474] chore: comment a step for test in angular.yml --- .github/workflows/angular.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index a011f40195..8df639431f 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -43,6 +43,6 @@ jobs: run: yarn install working-directory: templates/app/angular - - name: Build app template - run: yarn build --prod - working-directory: templates/app/angular + # - name: Build app template + # run: yarn build --prod + # working-directory: templates/app/angular From 066110600a137ad51bffd220e6ff1f1d0e516c9f Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 03:13:48 +0300 Subject: [PATCH 274/474] chore: remove yarn.lock from app template gitignore --- templates/app/angular/.gitignore | 4 +- templates/app/angular/yarn.lock | 9720 ++++++++++++++++++++++++++++++ 2 files changed, 9721 insertions(+), 3 deletions(-) create mode 100644 templates/app/angular/yarn.lock diff --git a/templates/app/angular/.gitignore b/templates/app/angular/.gitignore index a8e3c659a1..6b1b9c15e7 100644 --- a/templates/app/angular/.gitignore +++ b/templates/app/angular/.gitignore @@ -43,6 +43,4 @@ testem.log # System Files .DS_Store -Thumbs.db - -yarn.lock \ No newline at end of file +Thumbs.db \ No newline at end of file diff --git a/templates/app/angular/yarn.lock b/templates/app/angular/yarn.lock new file mode 100644 index 0000000000..fdc7fcb450 --- /dev/null +++ b/templates/app/angular/yarn.lock @@ -0,0 +1,9720 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@abp/ng.account@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-3.1.0.tgz#cd5fb46dffd7455188c10769220ed58806f455fa" + integrity sha512-/v+yyagHIUhjpJ1exzubf54XQBsgO2o3r3bFJFlWqzJoeCLufzyyppqK2UQ+6sQ7CjWP5jFCqo87R9myNn2xHA== + dependencies: + "@abp/ng.theme.shared" "~3.1.0" + tslib "^2.0.0" + +"@abp/ng.core@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-3.1.0.tgz#aba988fd915a633ea7af3a68278cc2557a37446f" + integrity sha512-SRRA7MYh12irJMRCj9emE5hyw+5aeiETlohP1CdgpdhhT3/RSPwrSeZNGJU0ilk6tKoO2rcZT6fgGjhqQfMyOw== + dependencies: + "@abp/utils" "^3.1.0-rc.4" + "@angular/localize" "~10.0.10" + "@ngxs/router-plugin" "^3.6.2" + "@ngxs/storage-plugin" "^3.6.2" + "@ngxs/store" "^3.6.2" + angular-oauth2-oidc "^10.0.0" + just-clone "^3.1.0" + just-compare "^1.3.0" + snq "^1.0.3" + ts-toolbelt "6.15.4" + tslib "^2.0.0" + +"@abp/ng.feature-management@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-3.1.0.tgz#a93b0d63dc542e3880a1c79ac1e630b2db19b8bf" + integrity sha512-CayqVZ8XJQXsmz+IU+OchXK/vl01x6DHA/oTpvkW9HM2kYYJ8dmD940kjr5i3ZX6WF2Q4yTc+wLgZhGQt7eK9Q== + dependencies: + "@abp/ng.theme.shared" "~3.1.0" + tslib "^2.0.0" + +"@abp/ng.identity@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-3.1.0.tgz#d3086dd887c7ea2786e4c8620b3448333065053a" + integrity sha512-G4CToeEou4Zwr4NkpauwMKJme61lofd77PycWvFPVJ8Df6EctmxJc+u6NVgG7+ZjuFI+oTQrLwCEl3uPuznnpA== + dependencies: + "@abp/ng.permission-management" "~3.1.0" + "@abp/ng.theme.shared" "~3.1.0" + tslib "^2.0.0" + +"@abp/ng.permission-management@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-3.1.0.tgz#c0a9a135699b7c8a329c0c9ac839cde06dce3db2" + integrity sha512-u3JwxK1vAlqC6YBVqnyP26FZqArrIQn94fZ/Vm6n9rjId7VaJbA0UrX9d2YAwKROKOpAnBNc5GA0A2gaWIO9rg== + dependencies: + "@abp/ng.theme.shared" "~3.1.0" + tslib "^2.0.0" + +"@abp/ng.schematics@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-3.1.0.tgz#ea7dd6d7dfd02425e7eff25c7e350614a4c0cad8" + integrity sha512-Vn0G6Wi+/JJ7vFgSkt5sRtdWBWdBQSncwH+kI2O1F0GvhJTrf1eDQ8XTk2yZiOD8oFLgt8mnJzTVzJbs3RqR+Q== + dependencies: + "@angular-devkit/core" "~10.0.3" + "@angular-devkit/schematics" "~10.0.3" + got "^11.5.2" + jsonc-parser "^2.3.0" + typescript "~3.9.2" + +"@abp/ng.setting-management@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-3.1.0.tgz#eebb1c7bdfd75a04cba4c1f8d0f5cfc306a64f43" + integrity sha512-jPBn9vpDHqCDscyo445MWdCd/C0pR+WEnXPxCu7lCOs+ry1n16etoWuLAIfI2LtpI0+g8AgMyL3hacP0MPzpGg== + dependencies: + "@abp/ng.theme.shared" "~3.1.0" + tslib "^2.0.0" + +"@abp/ng.tenant-management@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-3.1.0.tgz#d0b58b711269d91530f36f8ddcb3f6d8f80c0927" + integrity sha512-//g3O2b2NvV7NQtEydbrhZqkdyS3FccVs6wX204ylTLCaLDAwneqNnAnSCQHnUI9GNMjBpj3/VFRGBlvGeW+tw== + dependencies: + "@abp/ng.feature-management" "~3.1.0" + "@abp/ng.theme.shared" "~3.1.0" + tslib "^2.0.0" + +"@abp/ng.theme.basic@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-3.1.0.tgz#53db1e40ed4bf34d2efdc4a990ce9838f61b8d5e" + integrity sha512-C2yXYoSApLzUaOiLAAfFGEkAAP59KHJXaJTG2tsyGAsf+H2yFp2sQW+R0i59opmhW3LUXpAZV9aHKk++w+CGcQ== + dependencies: + "@abp/ng.theme.shared" "~3.1.0" + tslib "^2.0.0" + +"@abp/ng.theme.shared@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-3.1.0.tgz#12fc8fb84b27c74603945dc5384afcf62bb985b6" + integrity sha512-cknvClcDbaCrfTagNuojRbOG88NYCLDEPOOrXdTcSKfieJM2L7w/Ku2piqneV17CCM51Ce7Tl1BO7osYtxTS9Q== + dependencies: + "@abp/ng.core" "~3.1.0" + "@fortawesome/fontawesome-free" "^5.14.0" + "@ng-bootstrap/ng-bootstrap" "^7.0.0" + "@ngx-validate/core" "^0.0.11" + "@swimlane/ngx-datatable" "^17.1.0" + bootstrap "^4.5.0" + chart.js "^2.9.3" + tslib "^2.0.0" + +"@abp/utils@^3.1.0-rc.4": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.1.0.tgz#ccbfed6591ab11466bf3fed740c8422acf6a84df" + integrity sha512-I5yjM1ovqcpBAT2LFOfwLibVE0Ql6XbP3tQj6YMEZ/foDXekn/4P6Spgq5DTZCMo+0jskS0D8NfL7Ce4p89buw== + dependencies: + just-compare "^1.3.0" + +"@angular-devkit/architect@0.1000.8": + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1000.8.tgz#dac11e07877145056ca6d22319f2a859bab6720d" + integrity sha512-2AqPbiEugtPxNz4MGhLh+imUVelhW9h1cdJs2AbxZosIxftPb5DNDQUSAwVmRGp4CtcXVrlvcDwc0f4Fw1aiIA== + dependencies: + "@angular-devkit/core" "10.0.8" + rxjs "6.5.5" + +"@angular-devkit/build-angular@~0.1000.6": + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.1000.8.tgz#28744499b59d85e6d16b27f3ee09e4d86c5770fe" + integrity sha512-wwDN2oadQvYPL7lDmvGsoWQjW++0ZnxWk1QVlABGhBSIs8Uxs26Hjd5YNUSsvJavBkqb1UZIOilqzb4dig5MIA== + dependencies: + "@angular-devkit/architect" "0.1000.8" + "@angular-devkit/build-optimizer" "0.1000.8" + "@angular-devkit/build-webpack" "0.1000.8" + "@angular-devkit/core" "10.0.8" + "@babel/core" "7.9.6" + "@babel/generator" "7.9.6" + "@babel/plugin-transform-runtime" "7.9.6" + "@babel/preset-env" "7.9.6" + "@babel/runtime" "7.9.6" + "@babel/template" "7.8.6" + "@jsdevtools/coverage-istanbul-loader" "3.0.3" + "@ngtools/webpack" "10.0.8" + ajv "6.12.3" + autoprefixer "9.8.0" + babel-loader "8.1.0" + browserslist "^4.9.1" + cacache "15.0.3" + caniuse-lite "^1.0.30001032" + circular-dependency-plugin "5.2.0" + copy-webpack-plugin "6.0.3" + core-js "3.6.4" + css-loader "3.5.3" + cssnano "4.1.10" + file-loader "6.0.0" + find-cache-dir "3.3.1" + glob "7.1.6" + jest-worker "26.0.0" + karma-source-map-support "1.4.0" + less-loader "6.1.0" + license-webpack-plugin "2.2.0" + loader-utils "2.0.0" + mini-css-extract-plugin "0.9.0" + minimatch "3.0.4" + open "7.0.4" + parse5 "4.0.0" + pnp-webpack-plugin "1.6.4" + postcss "7.0.31" + postcss-import "12.0.1" + postcss-loader "3.0.0" + raw-loader "4.0.1" + regenerator-runtime "0.13.5" + resolve-url-loader "3.1.1" + rimraf "3.0.2" + rollup "2.10.9" + rxjs "6.5.5" + sass "1.26.5" + sass-loader "8.0.2" + semver "7.3.2" + source-map "0.7.3" + source-map-loader "1.0.0" + source-map-support "0.5.19" + speed-measure-webpack-plugin "1.3.3" + style-loader "1.2.1" + stylus "0.54.7" + stylus-loader "3.0.2" + terser "4.7.0" + terser-webpack-plugin "3.0.1" + tree-kill "1.2.2" + webpack "4.43.0" + webpack-dev-middleware "3.7.2" + webpack-dev-server "3.11.0" + webpack-merge "4.2.2" + webpack-sources "1.4.3" + webpack-subresource-integrity "1.4.1" + worker-plugin "4.0.3" + +"@angular-devkit/build-ng-packagr@~0.1000.6": + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.1000.8.tgz#092805975248203043f0fbaf7a723be90bcdcbf0" + integrity sha512-sif0JkCjghhtHpxFfb2fJ6MnlyJXxhaWxswxnFSNQd9uLEr101AC7Ep0aDRnSJ2JUoSk1nlZnVtDqYUYAYexWw== + dependencies: + "@angular-devkit/architect" "0.1000.8" + rxjs "6.5.5" + +"@angular-devkit/build-optimizer@0.1000.8": + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1000.8.tgz#55023cf9e16813cc01b255e99fabb92426eeb632" + integrity sha512-esODHuTGEEMx1SmLUq03VAMly8gZUd1vRuvZeKS5HqKwDg8ZzcI7/25BuuUSlyST+6BEdjo2gnmagQnG0VBdQw== + dependencies: + loader-utils "2.0.0" + source-map "0.7.3" + tslib "2.0.0" + webpack-sources "1.4.3" + +"@angular-devkit/build-webpack@0.1000.8": + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1000.8.tgz#048bd8e2db19b42cb3913dd2959dcd2589e5ec10" + integrity sha512-y/U+dV5N8W7KECncGSKQWoUH/DFNZCseczyl6LAd8bc0fMr8Z0TAIe8OXj+5CSRRdejWfRIxGtNWM+L2kTCU8A== + dependencies: + "@angular-devkit/architect" "0.1000.8" + "@angular-devkit/core" "10.0.8" + rxjs "6.5.5" + +"@angular-devkit/core@10.0.8", "@angular-devkit/core@~10.0.3": + version "10.0.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.8.tgz#ca4ea9f464cfa7ff17e2dab3bcd4c59da1ea450d" + integrity sha512-d9S8VQuqaYg0c/Y2kl/MtICtZ+UKlH5bLm8y2fb2WfSL4A5XIqMGdEVxzFSiR0b1Bnt4NAoQMcBec1blHAqMSQ== + dependencies: + ajv "6.12.3" + fast-json-stable-stringify "2.1.0" + magic-string "0.25.7" + rxjs "6.5.5" + source-map "0.7.3" + +"@angular-devkit/schematics@10.0.8", "@angular-devkit/schematics@~10.0.3": + version "10.0.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.8.tgz#6064d6323a1c9abc195e67ae4c88e373ce36b5e2" + integrity sha512-p2PjvrExuzOe/azyOEcBeIgwZIk4D6VeLkJf/KVjhXOVu13pjIXHX7/qWl+IYnbtj3NZGHqXM5Cr8nxsJNIMpw== + dependencies: + "@angular-devkit/core" "10.0.8" + ora "4.0.4" + rxjs "6.5.5" + +"@angular/animations@~10.0.10": + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-10.0.14.tgz#8e7fa9b26c70cf8e67ec0cc943211eb3957dda8c" + integrity sha512-0BOGQOuaudIG0pq6FAnG55teKM7tEQZdIwdoOf0okhh9n0cFWSWRUjvUxWt25bWswlO+HxELyJioiRUvVSES4g== + dependencies: + tslib "^2.0.0" + +"@angular/cli@~10.0.6": + version "10.0.8" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-10.0.8.tgz#133f1ea23e622923fd5dae27f5689379cfacaad3" + integrity sha512-unTteffLepsFw7qQulHOLLyLqCpQMOaZo0WO4x6cQGcW2mc0WgwnwBW2JDYMx1U2434t/Q13LqYMPNYWyCGsog== + dependencies: + "@angular-devkit/architect" "0.1000.8" + "@angular-devkit/core" "10.0.8" + "@angular-devkit/schematics" "10.0.8" + "@schematics/angular" "10.0.8" + "@schematics/update" "0.1000.8" + "@yarnpkg/lockfile" "1.1.0" + ansi-colors "4.1.1" + debug "4.1.1" + ini "1.3.5" + inquirer "7.1.0" + npm-package-arg "8.0.1" + npm-pick-manifest "6.1.0" + open "7.0.4" + pacote "9.5.12" + read-package-tree "5.3.1" + rimraf "3.0.2" + semver "7.3.2" + symbol-observable "1.2.0" + universal-analytics "0.4.20" + uuid "8.1.0" + +"@angular/common@~10.0.10": + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-10.0.14.tgz#a08228323609a22559590f4295b26f247f7438f4" + integrity sha512-EOAuaMt2HwJF3DtIJ/ksHtnF8Pqh5K2rWISYLEs9R3WNaSGn74kbCODAT4pNhI8P22Ykl3H4FmQUgnDZ3uDAUg== + dependencies: + tslib "^2.0.0" + +"@angular/compiler-cli@~10.0.10": + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-10.0.14.tgz#0da5f62a3f62b4b36c8fcecf70baaaedbc84ab93" + integrity sha512-WK+S90sjc+3iMo8/CuuAX0RdGFwyA9esqqC5fYG/MDZjKuPuhogiimmR0rY3P1Th7B9di8x012xiILbf4GsGUQ== + dependencies: + canonical-path "1.0.0" + chokidar "^3.0.0" + convert-source-map "^1.5.1" + dependency-graph "^0.7.2" + fs-extra "4.0.2" + magic-string "^0.25.0" + minimist "^1.2.0" + reflect-metadata "^0.1.2" + semver "^6.3.0" + source-map "^0.6.1" + sourcemap-codec "^1.4.8" + tslib "^2.0.0" + yargs "15.3.0" + +"@angular/compiler@~10.0.10": + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-10.0.14.tgz#0a766786eaa8817137bda17b7e509efac385582d" + integrity sha512-lYNo6/MmnYAVFoDQDBB6HMFd9zHg3RHXc6hn+wchU0XSWiIsg6WYHbKOb/DyqUEyKebzy0gSKZf7gUeZHtj62Q== + dependencies: + tslib "^2.0.0" + +"@angular/core@~10.0.10": + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-10.0.14.tgz#000f091e6c17239232120fdca871fdac6b529ebd" + integrity sha512-m+c9g6fA/gE+6K7It01b6r8TEmbuFjUZajQ9gG/pzist0mTBcqfvn0O4h5X+ebnSgw/bbnnp+4PbaXEi1pOWZQ== + dependencies: + tslib "^2.0.0" + +"@angular/forms@~10.0.10": + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-10.0.14.tgz#b6e1a7f872c318039be21b0a11839c8df063f0a3" + integrity sha512-McKh3rXDlAE7qmCnyWKENb2HhqAT+1dsAfChuqs0w8jhKkoRgA00RDFee6dZ6XQCc907DwuV0K8+wC3CvBp35w== + dependencies: + tslib "^2.0.0" + +"@angular/language-service@~10.0.10": + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-10.0.14.tgz#b9c33d27dcd11e2bb0c5453df1e7b334a0896a94" + integrity sha512-QQLYUjD0T6u2hLNYXUEUbupAGsz5egmhCAckaQojvXCe3SLL/hQsrK4odrNuspy7TvMB0H5ZNEHGlF6m/WLZ3g== + +"@angular/localize@~10.0.10": + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-10.0.14.tgz#99064a3b12e94e54e791c0638fbbbcc8783d8a62" + integrity sha512-tV1oUii6bxpQ6bKELcZsibUEEGmNiROxy8xRW015VgrgMFhuNuesHSmNUIstZ7ag8/sjh0/w1p55PUB6LEiPFA== + dependencies: + "@babel/core" "7.8.3" + glob "7.1.2" + yargs "15.3.0" + +"@angular/platform-browser-dynamic@~10.0.10": + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.14.tgz#4ee2257b2ccb94949f0a8083884020a814b5d47c" + integrity sha512-PPCAiNh/JSuQNKXOhj3a8CTFdVhTgF/EpGtaotnVr/BfbJMeFImKo7m2QQOTsAFaEP2DurSHnofPnMWAfHS2mg== + dependencies: + tslib "^2.0.0" + +"@angular/platform-browser@~10.0.10": + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-10.0.14.tgz#43b9aa7fcd8f312b58f371206df265c31ea13fac" + integrity sha512-DcBZ1wt2TwtXrdcmCTWanAzu2Vxk5Uvioam0UcDxcgXD84T2fHipyfZVn07fMqRvzFQj45tDNAEevFBnGZar4w== + dependencies: + tslib "^2.0.0" + +"@angular/router@~10.0.10": + version "10.0.14" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-10.0.14.tgz#e8942e93a8154e1be749e1f9d79afa5f7b5b9cb9" + integrity sha512-VWzaNyPZDY99TMszV1GlXJgVOxXsjhJrsv3mIcjaz1dfdlKOeKTVDLdnyXfP9CkwE3PRmvG7eSXppIj6nn9BpQ== + dependencies: + tslib "^2.0.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.9.6": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" + integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ== + dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941" + integrity sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.3" + "@babel/helpers" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" + integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.6" + "@babel/parser" "^7.9.6" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.7.5": + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" + integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.11.6" + "@babel/helper-module-transforms" "^7.11.0" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.11.5" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.11.5" + "@babel/types" "^7.11.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" + integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== + dependencies: + "@babel/types" "^7.9.6" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/generator@^7.11.5", "@babel/generator@^7.11.6", "@babel/generator@^7.8.3", "@babel/generator@^7.9.6": + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" + integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== + dependencies: + "@babel/types" "^7.11.5" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-compilation-targets@^7.9.6": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" + integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== + dependencies: + "@babel/compat-data" "^7.10.4" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-regexp-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" + integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz#2d8e3470252cc17aba917ede7803d4a7a276a41b" + integrity sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.10.4": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" + integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0", "@babel/helper-module-transforms@^7.9.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" + integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/template" "^7.10.4" + "@babel/types" "^7.11.0" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" + integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== + dependencies: + lodash "^4.17.19" + +"@babel/helper-remap-async-to-generator@^7.10.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz#4474ea9f7438f18575e30b0cac784045b402a12d" + integrity sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== + dependencies: + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" + integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-wrap-function@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" + integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.10.4", "@babel/helpers@^7.8.3", "@babel/helpers@^7.9.6": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.10.4", "@babel/parser@^7.11.5", "@babel/parser@^7.8.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" + integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== + +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" + integrity sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" + integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" + integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" + integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.9.6": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" + integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.4" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" + integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" + integrity sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" + integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" + integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" + integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" + integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" + integrity sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-classes@^7.9.5": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" + integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" + integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.9.5": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" + integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" + integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" + integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-for-of@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" + integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" + integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" + integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" + integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-modules-amd@^7.9.6": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" + integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== + dependencies: + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.9.6": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" + integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.9.6": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" + integrity sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" + integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" + integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" + integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" + integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + +"@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.9.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" + integrity sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" + integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" + integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" + integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-runtime@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz#3ba804438ad0d880a17bca5eaa0cdf1edeedb2fd" + integrity sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" + integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" + integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" + integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" + integrity sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" + integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" + integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" + integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== + dependencies: + "@babel/compat-data" "^7.9.6" + "@babel/helper-compilation-targets" "^7.9.6" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.6" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.5" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.9.5" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.6" + "@babel/plugin-transform-modules-commonjs" "^7.9.6" + "@babel/plugin-transform-modules-systemjs" "^7.9.6" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.9.5" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.6" + browserslist "^4.11.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.8.4": + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" + integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/template@^7.10.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.6": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" + integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.11.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.11.5" + "@babel/types" "^7.11.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.6": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" + integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@fortawesome/fontawesome-free@^5.14.0": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.14.0.tgz#a371e91029ebf265015e64f81bfbf7d228c9681f" + integrity sha512-OfdMsF+ZQgdKHP9jUbmDcRrP0eX90XXrsXIdyjLbkmSBzmMXPABB8eobUJtivaupucYaByz6WNe1PI1JuYm3qA== + +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + +"@jsdevtools/coverage-istanbul-loader@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.3.tgz#102e414b02ae2f0b3c7fd45a705601e1fd4867c5" + integrity sha512-TAdNkeGB5Fe4Og+ZkAr1Kvn9by2sfL44IAHFtxlh1BA1XJ5cLpO9iSNki5opWESv3l3vSHsZ9BNKuqFKbEbFaA== + dependencies: + convert-source-map "^1.7.0" + istanbul-lib-instrument "^4.0.1" + loader-utils "^1.4.0" + merge-source-map "^1.1.0" + schema-utils "^2.6.4" + +"@ng-bootstrap/ng-bootstrap@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-7.0.0.tgz#3bfa62eb52fdb891b1ce693ea11c39127e2d1ab7" + integrity sha512-SxUaptGWJmCxM0d2Zy1mx7K7p/YBwGZ69NmmBQVY4BE6p5av0hWrVmv9rzzfBz0rhxU7RPZLor2Jpaoq8Xyl4w== + dependencies: + tslib "^2.0.0" + +"@ngtools/webpack@10.0.8": + version "10.0.8" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-10.0.8.tgz#c818415a150ff6d578b25311b97859220b9d5a10" + integrity sha512-Qv4v7O4VGeWuXjRThd/mdC2I4cJOgQ7kDrVN7vkDB2EW5xtRB+/4hghvFeO3bD11FLuFvCxBMb0HbwyKoVQgEQ== + dependencies: + "@angular-devkit/core" "10.0.8" + enhanced-resolve "4.1.1" + rxjs "6.5.5" + webpack-sources "1.4.3" + +"@ngx-validate/core@^0.0.11": + version "0.0.11" + resolved "https://registry.yarnpkg.com/@ngx-validate/core/-/core-0.0.11.tgz#bec771546a09f2a5f44305fcdd1186851b4df152" + integrity sha512-eUoARAyyLE3Gd+PjDSWypJIPDqudPNInaaZdpPWhqAseecRtejLGD33f211Se3E0IZpnLhQAAOnM9hFfpNpr9w== + dependencies: + tslib "^1.9.0" + +"@ngxs/router-plugin@^3.6.2": + version "3.6.2" + resolved "https://registry.yarnpkg.com/@ngxs/router-plugin/-/router-plugin-3.6.2.tgz#058b09565011203bbf52294f16f29f9337aeaa27" + integrity sha512-5J3G9+Qsy/s7iqFivzAN1S6EmaZYTb9hqz7Xjn3c0u3Y44VMP5VWiz77jZ/eowXX0slJywcMxk6oCEFPwz4lXQ== + dependencies: + tslib "^1.9.0" + +"@ngxs/storage-plugin@^3.6.2": + version "3.6.2" + resolved "https://registry.yarnpkg.com/@ngxs/storage-plugin/-/storage-plugin-3.6.2.tgz#6fe2168891382c635406df02308f67b585efc60a" + integrity sha512-x9CATYmXDH9bWmKW4uQxt5xxb51naSAmMkhvv1QHIrE9hG4uYNqiV3ERAM1wZvZbu2MJB9iXEN0cBziTgrwe2Q== + dependencies: + tslib "^1.9.0" + +"@ngxs/store@^3.6.2": + version "3.6.2" + resolved "https://registry.yarnpkg.com/@ngxs/store/-/store-3.6.2.tgz#cfba63dc1e5bd422e89e54b3332cd69818510624" + integrity sha512-al7GU618SAuz2Ul4rFYVDgS1DM0gHReGOGvbnE7LBt4Etz3gsJERNYXPp2bSA7lZGaRPRaFfIHJN+Lm/GikFJw== + dependencies: + tslib "^1.9.0" + +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + dependencies: + mkdirp "^1.0.4" + +"@rollup/plugin-commonjs@^15.0.0": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-15.0.0.tgz#690d15a9d54ba829db93555bff9b98ff34e08574" + integrity sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w== + dependencies: + "@rollup/pluginutils" "^3.1.0" + commondir "^1.0.1" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" + +"@rollup/plugin-json@^4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-node-resolve@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz#39bd0034ce9126b39c1699695f440b4b7d2b62e6" + integrity sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.17.0" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@schematics/angular@10.0.8": + version "10.0.8" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-10.0.8.tgz#af730827b2de6cab7561157a8772250eb5f277e1" + integrity sha512-KNO61UGtiKMQSG+NbusqLtwLbxId0y+xpXJt9PKFwi+vaViOO+YzOPREfiFCuQ7q6X8SmNlrMj6sZ34E2YN1pQ== + dependencies: + "@angular-devkit/core" "10.0.8" + "@angular-devkit/schematics" "10.0.8" + +"@schematics/update@0.1000.8": + version "0.1000.8" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1000.8.tgz#3b745ec14e92cfd1f7d16f9a4c3864e1f12249c9" + integrity sha512-xHuj6ME3PNTsVUrpftd98LF3WHPM0NU25GcT/n0E/j0/52yDTiaPS3wUnYSK8ZSv4Et4hcyGx7f/LEXAoOKJXw== + dependencies: + "@angular-devkit/core" "10.0.8" + "@angular-devkit/schematics" "10.0.8" + "@yarnpkg/lockfile" "1.1.0" + ini "1.3.5" + npm-package-arg "^8.0.0" + pacote "9.5.12" + rxjs "6.5.5" + semver "7.3.2" + semver-intersect "1.4.0" + +"@sindresorhus/is@^3.1.1": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-3.1.2.tgz#548650de521b344e3781fbdb0ece4aa6f729afb8" + integrity sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ== + +"@swimlane/ngx-datatable@^17.1.0": + version "17.1.0" + resolved "https://registry.yarnpkg.com/@swimlane/ngx-datatable/-/ngx-datatable-17.1.0.tgz#ef2f91c3783526e7e89ac7a62a53e7bc9e1c90d5" + integrity sha512-zYUS7uNO9OJ5UQZFuuTRjlPu6vdKA+FHYLfeEs7PgSuUiDCcbl2SWoUdS/3zIoWn/qQyws767ueWiAvvWUbpEw== + +"@szmarczak/http-timer@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" + integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== + dependencies: + defer-to-connect "^2.0.0" + +"@types/cacheable-request@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" + integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "*" + "@types/node" "*" + "@types/responselike" "*" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/estree@*": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/http-cache-semantics@*": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" + integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== + +"@types/jasmine@*", "@types/jasmine@~3.5.0": + version "3.5.14" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.5.14.tgz#f41a14e8ffa939062a71cf9722e5ee7d4e1f94af" + integrity sha512-Fkgk536sHPqcOtd+Ow+WiUNuk0TSo/BntKkF8wSvcd6M2FvPjeXcUE6Oz/bwDZiUZEaXLslAgw00Q94Pnx6T4w== + +"@types/jasminewd2@~2.0.3": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.8.tgz#67afe5098d5ef2386073a7b7384b69a840dfe93b" + integrity sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg== + dependencies: + "@types/jasmine" "*" + +"@types/json-schema@^7.0.5": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + +"@types/keyv@*": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" + integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== + dependencies: + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "14.6.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.4.tgz#a145cc0bb14ef9c4777361b7bbafa5cf8e3acb5a" + integrity sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ== + +"@types/node@^12.11.1": + version "12.12.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.55.tgz#0aa266441cb9e1fd3e415a8f619cb7d776667cdd" + integrity sha512-Vd6xQUVvPCTm7Nx1N7XHcpX6t047ltm7TgcsOr4gFHjeYgwZevo+V7I1lfzHnj5BT5frztZ42+RTG4MwYw63dw== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/q@^0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" + integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/responselike@*", "@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +"@types/selenium-webdriver@^3.0.0": + version "3.0.17" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz#50bea0c3c2acc31c959c5b1e747798b3b3d06d4b" + integrity sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw== + +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/webpack-sources@^0.1.5": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.8.tgz#078d75410435993ec8a0a2855e88706f3f751f81" + integrity sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.6.1" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +"@yarnpkg/lockfile@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +JSONStream@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abab@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.4.tgz#6dfa57b417ca06d21b2478f0e638302f99c2405c" + integrity sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +adjust-sourcemap-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" + integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== + dependencies: + assert "1.4.1" + camelcase "5.0.0" + loader-utils "1.2.3" + object-path "0.11.4" + regex-parser "2.2.10" + +adm-zip@^0.4.9: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= + +agent-base@4, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +agent-base@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== + dependencies: + es6-promisify "^5.0.0" + +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== + dependencies: + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@6.12.3: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" + integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +angular-oauth2-oidc@^10.0.0: + version "10.0.3" + resolved "https://registry.yarnpkg.com/angular-oauth2-oidc/-/angular-oauth2-oidc-10.0.3.tgz#612ef75c2e07b56592d2506f9618ee6a61857ad9" + integrity sha512-9wC8I3e3cN6rMBOlo5JB2y3Fd2erp8pJ67t4vEVzyPbnRG6BJ4rreSOznSL9zw/2SjhC9kRV2OfFie29CUCzEg== + dependencies: + tslib "^2.0.0" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + 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== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +app-root-path@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.2.1.tgz#d0df4a682ee408273583d43f6f79e9892624bc9a" + integrity sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA== + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + dependencies: + util "0.10.3" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@9.8.0: + version "9.8.0" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" + integrity sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001061" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.30" + postcss-value-parser "^4.1.0" + +autoprefixer@^9.6.5: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" + integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== + +axobject-query@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" + integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== + dependencies: + ast-types-flow "0.0.7" + +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base64id@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= + dependencies: + callsite "1.0.0" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== + +blocking-proxy@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-1.0.1.tgz#81d6fd1fe13a4c0d6957df7f91b75e98dac40cb2" + integrity sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA== + dependencies: + minimist "^1.2.0" + +bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== + +body-parser@1.19.0, body-parser@^1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +bootstrap@^4.5.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.5.2.tgz#a85c4eda59155f0d71186b6e6ad9b875813779ab" + integrity sha512-vlGn0bcySYl/iV+BGA544JkkZP5LB3jsmkeKLFQakCOwCM3AOk7VkldBz4jrzSe+Z0Ezn99NVXa1o45cQY4R6A== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.12.0, browserslist@^4.7.0, browserslist@^4.8.5, browserslist@^4.9.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.1.tgz#cb2b490ba881d45dc3039078c7ed04411eaf3fa3" + integrity sha512-zyBTIHydW37pnb63c7fHFXUG6EcqWOqoMdDx6cdyaDFriZ20EoVxcE95S54N+heRqY8m8IUgB5zYta/gCwSaaA== + dependencies: + caniuse-lite "^1.0.30001124" + electron-to-chromium "^1.3.562" + escalade "^3.0.2" + node-releases "^1.1.60" + +browserstack@^1.5.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/browserstack/-/browserstack-1.6.0.tgz#5a56ab90987605d9c138d7a8b88128370297f9bf" + integrity sha512-HJDJ0TSlmkwnt9RZ+v5gFpa1XZTBYTj0ywvLwJ3241J7vMw2jAsGNVhKHtmCOyg+VxeLZyaibO9UL71AsUeDIw== + dependencies: + https-proxy-agent "^2.2.1" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@15.0.3: + version "15.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.3.tgz#2225c2d1dd8e872339950d6a39c051e0e9334392" + integrity sha512-bc3jKYjqv7k4pWh7I/ixIjfcjPul4V4jme/WbjvwGS5LzoPL/GzXr4C5EgPNLO/QEZl9Oi61iGitYEdwcrwLCQ== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + move-file "^2.0.0" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + +cacache@^12.0.0, cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^15.0.3, cacache@^15.0.4: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-lookup@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3" + integrity sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w== + +cacheable-request@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.1.tgz#062031c2856232782ed694a257fa35da93942a58" + integrity sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^2.0.0" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001061, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001124: + version "1.0.30001124" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001124.tgz#5d9998190258e11630d674fc50ea8e579ae0ced2" + integrity sha512-zQW8V3CdND7GHRH6rxm6s59Ww4g/qGWTheoboW9nfeMg7sUoopIfKCcNZUjwYRCOrvereh3kwDpZj4VLQ7zGtA== + +canonical-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" + integrity sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chart.js@^2.9.3: + version "2.9.3" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.9.3.tgz#ae3884114dafd381bc600f5b35a189138aac1ef7" + integrity sha512-+2jlOobSk52c1VU6fzkh3UwqHMdSlgH1xFv9FKMqHiNCpXsGPQa/+81AFa+i3jZ253Mq9aAycPwDjnn1XbRNNw== + dependencies: + chartjs-color "^2.1.0" + moment "^2.10.2" + +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" + integrity sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A== + dependencies: + color-name "^1.0.0" + +chartjs-color@^2.1.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.4.1.tgz#6118bba202fe1ea79dd7f7c0f9da93467296c3b0" + integrity sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w== + dependencies: + chartjs-color-string "^0.6.0" + color-convert "^1.9.3" + +"chokidar@>=2.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.2.1, chokidar@^3.4.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" + integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-dependency-plugin@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz#e09dbc2dd3e2928442403e2d45b41cea06bc0a93" + integrity sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.4.0.tgz#c6256db216b878cfba4720e719cec7cf72685d7f" + integrity sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA== + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +codelyzer@^5.1.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-5.2.2.tgz#d0530a455784e6bea0b6d7e97166c73c30a5347f" + integrity sha512-jB4FZ1Sx7kZhvZVdf+N2BaKTdrrNZOL0Bj10RRfrhHrb3zEvXjJvvq298JPMJAiyiCS/v4zs1QlGU0ip7xGqeA== + dependencies: + app-root-path "^2.2.1" + aria-query "^3.0.0" + axobject-query "2.0.2" + css-selector-tokenizer "^0.7.1" + cssauron "^1.4.0" + damerau-levenshtein "^1.0.4" + semver-dsl "^1.0.1" + source-map "^0.5.7" + sprintf-js "^1.1.2" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +colors@1.4.0, colors@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.11.0, commander@^2.12.1, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" + integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= + +component-emitter@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +component-emitter@^1.2.1, component-emitter@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= + +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@1.7.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-webpack-plugin@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz#2b3d2bfc6861b96432a65f0149720adbd902040b" + integrity sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA== + dependencies: + cacache "^15.0.4" + fast-glob "^3.2.4" + find-cache-dir "^3.3.1" + glob-parent "^5.1.1" + globby "^11.0.1" + loader-utils "^2.0.0" + normalize-path "^3.0.0" + p-limit "^3.0.1" + schema-utils "^2.7.0" + serialize-javascript "^4.0.0" + webpack-sources "^1.4.3" + +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js@3.6.4: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.5.3.tgz#95ac16468e1adcd95c844729e0bb167639eb0bcf" + integrity sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.27" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.3" + schema-utils "^2.6.6" + semver "^6.3.0" + +css-parse@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" + integrity sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q= + dependencies: + css "^2.0.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-selector-tokenizer@^0.7.1: + version "0.7.3" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" + integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg== + dependencies: + cssesc "^3.0.0" + fastparse "^1.1.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@1.0.0-alpha.39: + version "1.0.0-alpha.39" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" + integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== + dependencies: + mdn-data "2.0.6" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.3.0.tgz#10fec696a9ece2e591ac772d759aacabac38cd39" + integrity sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg== + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssauron@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8" + integrity sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg= + dependencies: + through X.X.X + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" + integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== + dependencies: + css-tree "1.0.0-alpha.39" + +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +date-format@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf" + integrity sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA== + +date-format@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-3.0.0.tgz#eb8780365c7d2b1511078fb491e6479780f3ad95" + integrity sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@4.1.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +defer-to-connect@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" + integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +dependency-graph@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.7.2.tgz#91db9de6eb72699209d88aea4c1fd5221cac1c49" + integrity sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +dezalgo@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= + dependencies: + asap "^2.0.0" + wrappy "1" + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +dom-serialize@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.562: + version "1.3.562" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.562.tgz#79c20277ee1c8d0173a22af00e38433b752bc70f" + integrity sha512-WhRe6liQ2q/w1MZc8mD8INkenHivuHdrr4r5EQHNomy3NJux+incP6M6lDMd0paShP3MD0WGe5R1TWmEClf+Bg== + +elliptic@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +engine.io-client@~3.4.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.3.tgz#192d09865403e3097e3575ebfeb3861c4d01a66c" + integrity sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw== + dependencies: + component-emitter "~1.3.0" + component-inherit "0.0.3" + debug "~4.1.0" + engine.io-parser "~2.2.0" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~6.1.0" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" + integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io@~3.4.0: + version "3.4.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.4.2.tgz#8fc84ee00388e3e228645e0a7d3dfaeed5bd122c" + integrity sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg== + dependencies: + accepts "~1.3.4" + base64id "2.0.0" + cookie "0.3.1" + debug "~4.1.0" + engine.io-parser "~2.2.0" + ws "^7.1.2" + +enhanced-resolve@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enhanced-resolve@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" + integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + +entities@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== + +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= + +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.2.tgz#6a580d70edb87880f22b4c91d0d56078df6962c4" + integrity sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" + integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.1.1, fast-glob@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fastparse@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +fastq@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" + integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-loader@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" + integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.5" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2, finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@3.3.1, find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-parent-dir@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" + integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ= + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flatted@^2.0.1, flatted@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" + integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" + integrity sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" + integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.6, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@^11.5.2: + version "11.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-11.6.0.tgz#4978c78f3cbc3a45ee95381f8bb6efd1db1f4638" + integrity sha512-ErhWb4IUjQzJ3vGs3+RR12NWlBDDkRciFpAkQ1LPUxi6OnwhGj07gQxjPsyIk69s7qMihwKrKquV6VQq7JNYLA== + dependencies: + "@sindresorhus/is" "^3.1.1" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.1" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hosted-git-info@^3.0.2: + version "3.0.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.5.tgz#bea87905ef7317442e8df3087faa3c842397df03" + integrity sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ== + dependencies: + lru-cache "^6.0.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-entities@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-cache-semantics@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0, http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.0-beta.5.2" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" + integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +https-proxy-agent@^2.2.1, https-proxy-agent@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + dependencies: + ms "^2.0.0" + +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.2.tgz#af6d628dccfb463b7364d97f715e4b74b8c8c2b8" + integrity sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" + integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore-walk@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + dependencies: + minimatch "^3.0.4" + +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@1.3.5, ini@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +injection-js@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/injection-js/-/injection-js-2.3.1.tgz#c6b7594ab0bd5da73eb8ea246fe19d98d74508cc" + integrity sha512-t+kpDAOL/DUZ68JncAhsb8C91qhJ6dXRMcOuvJfNA7sp63etdiQe6KQoxE/nZ5b2eTi0TQX6OothOCm89cLAJQ== + dependencies: + tslib "^1.9.3" + +inquirer@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@1.1.5, ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + dependencies: + is-path-inside "^1.0.0" + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-reference@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-regex@^1.0.4, is-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^1.0.1" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + +isbinaryfile@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" + integrity sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jasmine-core@^3.5.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.6.0.tgz#491f3bb23941799c353ceb7a45b38a950ebc5a20" + integrity sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw== + +jasmine-core@~2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + +jasmine-core@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.5.0.tgz#132c23e645af96d85c8bca13c8758b18429fc1e4" + integrity sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA== + +jasmine-spec-reporter@~5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz#b61288ab074ad440dc2477c4d42840b0e74a6b95" + integrity sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g== + dependencies: + colors "1.4.0" + +jasmine@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" + integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.8.0" + +jasminewd2@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" + integrity sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4= + +jest-worker@26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.0.0.tgz#4920c7714f0a96c6412464718d0c58a3df3fb066" + integrity sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^26.0.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" + integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.0, json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsonc-parser@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.0.tgz#7c7fc988ee1486d35734faaaa866fadb00fa91ee" + integrity sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" + integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + dependencies: + universalify "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jszip@^3.1.3: + version "3.5.0" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.5.0.tgz#b4fd1f368245346658e781fec9675802489e15f6" + integrity sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + set-immediate-shim "~1.0.1" + +just-clone@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/just-clone/-/just-clone-3.1.0.tgz#10efc422e9b041355c43b8076d7b768b7a09fbbd" + integrity sha512-sROn15yHaeNYSTG49HmfbQLtsZvMBb2COvVofNXbeUXx6GkERkdjG3dfejD0fe78gdHJLyS+fOz897H73S8LqA== + +just-compare@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/just-compare/-/just-compare-1.3.0.tgz#a53c31373f150a5b238555c243af4d8a38d7a0e5" + integrity sha512-i4QNo3mPYubDmAwPbCKQl5C2b5s0yudP5V5GDp6lGR1PM22Em4Idf7mcaIzXYcL6/RLdZtuGrAqkBe9RYM/t4w== + +karma-chrome-launcher@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz#805a586799a4d05f4e54f72a204979f3f3066738" + integrity sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg== + dependencies: + which "^1.2.1" + +karma-coverage-istanbul-reporter@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz#f3b5303553aadc8e681d40d360dfdc19bc7e9fe9" + integrity sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw== + dependencies: + istanbul-lib-coverage "^3.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^3.0.6" + istanbul-reports "^3.0.2" + minimatch "^3.0.4" + +karma-jasmine-html-reporter@^1.5.0: + version "1.5.4" + resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz#669f33d694d88fce1b0ccfda57111de716cb0192" + integrity sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q== + +karma-jasmine@~3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-3.3.1.tgz#c01b1a2ec973e1531c1f6535e1d7d66b8e4275c2" + integrity sha512-Nxh7eX9mOQMyK0VSsMxdod+bcqrR/ikrmEiWj5M6fwuQ7oI+YEF1FckaDsWfs6TIpULm9f0fTKMjF7XcrvWyqQ== + dependencies: + jasmine-core "^3.5.0" + +karma-source-map-support@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz#58526ceccf7e8730e56effd97a4de8d712ac0d6b" + integrity sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A== + dependencies: + source-map-support "^0.5.5" + +karma@~5.0.0: + version "5.0.9" + resolved "https://registry.yarnpkg.com/karma/-/karma-5.0.9.tgz#11a119b0c763a806fdc471b40c594a2240b5ca13" + integrity sha512-dUA5z7Lo7G4FRSe1ZAXqOINEEWxmCjDBbfRBmU/wYlSMwxUQJP/tEEP90yJt3Uqo03s9rCgVnxtlfq+uDhxSPg== + dependencies: + body-parser "^1.19.0" + braces "^3.0.2" + chokidar "^3.0.0" + colors "^1.4.0" + connect "^3.7.0" + di "^0.0.1" + dom-serialize "^2.2.1" + flatted "^2.0.2" + glob "^7.1.6" + graceful-fs "^4.2.4" + http-proxy "^1.18.1" + isbinaryfile "^4.0.6" + lodash "^4.17.15" + log4js "^6.2.1" + mime "^2.4.5" + minimatch "^3.0.4" + qjobs "^1.2.0" + range-parser "^1.2.1" + rimraf "^3.0.2" + socket.io "^2.3.0" + source-map "^0.6.1" + tmp "0.2.1" + ua-parser-js "0.7.21" + yargs "^15.3.1" + +keyv@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.1.tgz#9fe703cb4a94d6d11729d320af033307efd02ee6" + integrity sha512-xz6Jv6oNkbhrFCvCP7HQa8AaII8y8LRpoSm661NOKLr4uHuBwhX4epXrPQgF3+xdJnN4Esm5X0xwY4bOlALOtw== + dependencies: + json-buffer "3.0.1" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +less-loader@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-6.1.0.tgz#59fd591df408ced89a40fce11a2aea449b005631" + integrity sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA== + dependencies: + clone "^2.1.2" + less "^3.11.1" + loader-utils "^2.0.0" + schema-utils "^2.6.6" + +less@^3.10.3, less@^3.11.1: + version "3.12.2" + resolved "https://registry.yarnpkg.com/less/-/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4" + integrity sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q== + dependencies: + tslib "^1.10.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + native-request "^1.0.5" + source-map "~0.6.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +license-webpack-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.2.0.tgz#5c964380d7d0e0c27c349d86a6f856c82924590e" + integrity sha512-XPsdL/0brSHf+7dXIlRqotnCQ58RX2au6otkOg4U3dm8uH+Ka/fW4iukEs95uXm+qKe/SBs+s1Ll/aQddKG+tg== + dependencies: + "@types/webpack-sources" "^0.1.5" + webpack-sources "^1.2.0" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@2.0.0, loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +log4js@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.3.0.tgz#10dfafbb434351a3e30277a00b9879446f715bcb" + integrity sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw== + dependencies: + date-format "^3.0.0" + debug "^4.1.1" + flatted "^2.0.1" + rfdc "^1.1.4" + streamroller "^2.2.4" + +loglevel@^1.6.8: + version "1.7.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" + integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@0.25.7, magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== + dependencies: + agentkeepalive "^3.4.1" + cacache "^12.0.0" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdn-data@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" + integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@1.6.0, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.3.1, mime@^2.4.4, mime@^2.4.5: + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +mini-css-extract-plugin@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1, mkdirp@~0.5.x: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +moment@^2.10.2: + version "2.27.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" + integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +move-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/move-file/-/move-file-2.0.0.tgz#83ffa309b5d7f69d518b28e1333e2ffadf331e3e" + integrity sha512-cdkdhNCgbP5dvS4tlGxZbD+nloio9GIimP57EjqFhwLcMjnU+XJKAZzlmg/TN/AK1LuNAdTSvm3CPPP4Xkv0iQ== + dependencies: + path-exists "^4.0.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.0.0, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +native-request@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.7.tgz#ff742dc555b4c8f2f1c14b548639ba174e573856" + integrity sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ== + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +ng-packagr@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/ng-packagr/-/ng-packagr-10.1.0.tgz#a2fc0f86f5f8895f811597d33d943f93c7c77c17" + integrity sha512-KXyajkAyY/51iMJPVezDybb5Bn1rtl/JDGC4w9jjIdeL2Ip+KTMDGsqpc+5nQm/vnasZcJ/Xj2a+0VOwrbyVWg== + dependencies: + "@rollup/plugin-commonjs" "^15.0.0" + "@rollup/plugin-json" "^4.0.0" + "@rollup/plugin-node-resolve" "^9.0.0" + ajv "^6.12.3" + autoprefixer "^9.6.5" + browserslist "^4.7.0" + chalk "^4.0.0" + chokidar "^3.2.1" + commander "^6.0.0" + cssnano-preset-default "^4.0.7" + fs-extra "^9.0.0" + glob "^7.1.2" + injection-js "^2.2.1" + less "^3.10.3" + node-sass-tilde-importer "^1.0.0" + postcss "^7.0.29" + postcss-url "^8.0.0" + read-pkg-up "^5.0.0" + rimraf "^3.0.0" + rollup "^2.8.0" + rollup-plugin-sourcemaps "^0.6.0" + rxjs "^6.5.0" + sass "^1.23.0" + stylus "^0.54.7" + terser "^5.0.0" + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-fetch-npm@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" + integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-releases@^1.1.60: + version "1.1.60" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.60.tgz#6948bdfce8286f0b5d0e5a88e8384e954dfe7084" + integrity sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA== + +node-sass-tilde-importer@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz#1a15105c153f648323b4347693fdb0f331bad1ce" + integrity sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg== + dependencies: + find-parent-dir "^0.3.0" + +normalize-package-data@^2.0.0, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + +npm-bundled@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-install-checks@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" + integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-package-arg@8.0.1, npm-package-arg@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.0.1.tgz#9d76f8d7667b2373ffda60bb801a27ef71e3e270" + integrity sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ== + dependencies: + hosted-git-info "^3.0.2" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + +npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== + dependencies: + hosted-git-info "^2.7.1" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.1.12: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + +npm-pick-manifest@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" + integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== + dependencies: + npm-install-checks "^4.0.0" + npm-package-arg "^8.0.0" + semver "^7.0.0" + +npm-pick-manifest@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.1" + +npm-registry-fetch@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz#57951bf6541e0246b34c9f9a38ab73607c9449d7" + integrity sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + npm-package-arg "^6.1.0" + safe-buffer "^5.2.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-is@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-path@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.4.tgz#c28a9d315e5c98340bf979fdcb2e58664aa10d83" + integrity sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +ora@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.4.tgz#e8da697cc5b6a47266655bf68e0fb588d29a545d" + integrity sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww== + dependencies: + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-cancelable@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" + integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" + integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pacote@9.5.12: + version "9.5.12" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66" + integrity sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ== + dependencies: + bluebird "^3.5.3" + cacache "^12.0.2" + chownr "^1.1.2" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.3" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + minimatch "^3.0.4" + minipass "^2.3.5" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.4.0" + npm-normalize-package-bin "^1.0.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.1.12" + npm-pick-manifest "^3.0.0" + npm-registry-fetch "^4.0.0" + osenv "^0.1.5" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^5.0.1" + rimraf "^2.6.2" + safe-buffer "^5.1.2" + semver "^5.6.0" + ssri "^6.0.1" + tar "^4.4.10" + unique-filename "^1.1.1" + which "^1.3.1" + +pako@~1.0.2, pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-calc@^7.0.1: + version "7.0.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.4.tgz#5e177ddb417341e6d4a193c5d9fd8ada79094f8b" + integrity sha512-0I79VRAd1UTkaHzY9w83P39YGO/M3bG7/tNLrHGEunBolfoGM0hSjrGvjoeaj0JE/zIw5GsI2KZ0UwDJqv5hjw== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-import@12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-12.0.1.tgz#cf8c7ab0b5ccab5649024536e565f841928b7153" + integrity sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw== + dependencies: + postcss "^7.0.1" + postcss-value-parser "^3.2.3" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-url@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-8.0.0.tgz#7b10059bd12929cdbb1971c60f61a0e5af86b4ca" + integrity sha512-E2cbOQ5aii2zNHh8F6fk1cxls7QVFZjLPSrqvmiza8OuXLzIpErij8BDS5Y3STPfJgpIMNCPEr8JlKQWEoozUw== + dependencies: + mime "^2.3.1" + minimatch "^3.0.4" + mkdirp "^0.5.0" + postcss "^7.0.2" + xxhashjs "^0.2.1" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.0.3, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@7.0.31: + version "7.0.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd" + integrity sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.27, postcss@^7.0.29, postcss@^7.0.30, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" + integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + +protoduck@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== + dependencies: + genfun "^5.0.0" + +protractor@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/protractor/-/protractor-7.0.0.tgz#c3e263608bd72e2c2dc802b11a772711a4792d03" + integrity sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw== + dependencies: + "@types/q" "^0.0.32" + "@types/selenium-webdriver" "^3.0.0" + blocking-proxy "^1.0.0" + browserstack "^1.5.1" + chalk "^1.1.3" + glob "^7.0.3" + jasmine "2.8.0" + jasminewd2 "^2.1.0" + q "1.4.1" + saucelabs "^1.5.0" + selenium-webdriver "3.6.0" + source-map-support "~0.4.0" + webdriver-js-extender "2.1.0" + webdriver-manager "^12.1.7" + yargs "^15.3.1" + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + integrity sha1-VXBbzZPF82c1MMLCy8DCs63cKG4= + +q@^1.1.2, q@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qjobs@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-loader@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.1.tgz#14e1f726a359b68437e183d5a5b7d33a3eba6933" + integrity sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.5" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + dependencies: + pify "^2.3.0" + +read-package-json@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" + integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== + dependencies: + glob "^7.1.1" + json-parse-even-better-errors "^2.3.0" + normalize-package-data "^2.0.0" + npm-normalize-package-bin "^1.0.0" + +read-package-tree@5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" + integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== + dependencies: + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + util-promisify "^2.1.0" + +read-pkg-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-5.0.0.tgz#b6a6741cb144ed3610554f40162aa07a6db621b8" + integrity sha512-XBQjqOBtTzyol2CpsQOw8LHV0XbDZVG7xMMjmXAJomlVY03WOBRmYgDJETlvcg0H63AJvPRwT7GFi5rvOzUOKg== + dependencies: + find-up "^3.0.0" + read-pkg "^5.0.0" + +read-pkg@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdir-scoped-modules@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + +reflect-metadata@^0.1.2: + version "0.1.13" + 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== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" + integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== + +regenerator-runtime@0.13.5: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regex-parser@2.2.10: + version "2.2.10" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" + integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== + +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + 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 "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.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-alpn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" + integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== + dependencies: + adjust-sourcemap-loader "2.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +responselike@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" + integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== + dependencies: + lowercase-keys "^2.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + +rfdc@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" + integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup-plugin-sourcemaps@^0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.2.tgz#1eed5a3e07b833dc14c4cdb1e63b300d340f4a74" + integrity sha512-9AwTKg3yRykwzemfLt71ySe0LvrAci+bpsOL1LaTYFk5BX4HF6X7DQfpHa74ANfSja3hyjiQkXCR8goSOnW//Q== + dependencies: + "@rollup/pluginutils" "^3.0.9" + source-map-resolve "^0.6.0" + +rollup@2.10.9: + version "2.10.9" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.10.9.tgz#17dcc6753c619efcc1be2cf61d73a87827eebdf9" + integrity sha512-dY/EbjiWC17ZCUSyk14hkxATAMAShkMsD43XmZGWjLrgFj15M3Dw2kEkA9ns64BiLFm9PKN6vTQw8neHwK74eg== + optionalDependencies: + fsevents "~2.1.2" + +rollup@^2.8.0: + version "2.26.10" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.26.10.tgz#0ffe0390d35f07af850382f22f1b8525c7f57f07" + integrity sha512-dUnjCWOA0h9qNX6qtcHidyatz8FAFZxVxt1dbcGtKdlJkpSxGK3G9+DLCYvtZr9v94D129ij9zUhG+xbRoqepw== + optionalDependencies: + fsevents "~2.1.2" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rxjs@6.5.5, rxjs@~6.5.4: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + +rxjs@^6.5.0, rxjs@^6.5.3: + version "6.6.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" + integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" + +sass@1.26.5: + version "1.26.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.5.tgz#2d7aecfbbabfa298567c8f06615b6e24d2d68099" + integrity sha512-FG2swzaZUiX53YzZSjSakzvGtlds0lcbF+URuU9mxOv7WBh7NhXEVDa4kPKN4hN6fC2TkOTOKqiqp6d53N9X5Q== + dependencies: + chokidar ">=2.0.0 <4.0.0" + +sass@^1.23.0: + version "1.26.10" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.10.tgz#851d126021cdc93decbf201d1eca2a20ee434760" + integrity sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw== + dependencies: + chokidar ">=2.0.0 <4.0.0" + +saucelabs@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== + dependencies: + https-proxy-agent "^2.2.1" + +sax@>=0.6.0, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc" + integrity sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q== + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== + dependencies: + node-forge "0.9.0" + +semver-dsl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0" + integrity sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA= + dependencies: + semver "^5.3.0" + +semver-intersect@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.4.0.tgz#bdd9c06bedcdd2fedb8cd352c3c43ee8c61321f3" + integrity sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ== + dependencies: + semver "^5.0.0" + +"semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.3.2, semver@^7.0.0, semver@^7.1.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" + integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-immediate-shim@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +snq@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/snq/-/snq-1.0.3.tgz#f9661d10eebb224c52fc3c50106445c268618168" + integrity sha512-bXcxd1ppFnSNYKq84HyOYuYtbMHCFTZvuPSNCn/80yx9+DLkU/hLqjqCRKRHSDISrL1T/lWGXJyQxWS8TnutFA== + +socket.io-adapter@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" + integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== + +socket.io-client@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" + integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~4.1.0" + engine.io-client "~3.4.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.3.0" + to-array "0.1.4" + +socket.io-parser@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" + integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io-parser@~3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.1.tgz#b06af838302975837eab2dc980037da24054d64a" + integrity sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A== + dependencies: + component-emitter "1.2.1" + debug "~4.1.0" + isarray "2.0.1" + +socket.io@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.3.0.tgz#cd762ed6a4faeca59bc1f3e243c0969311eb73fb" + integrity sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg== + dependencies: + debug "~4.1.0" + engine.io "~3.4.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.3.0" + socket.io-parser "~3.4.0" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" + +socks-proxy-agent@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== + dependencies: + agent-base "~4.2.1" + socks "~2.3.2" + +socks@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== + dependencies: + ip "1.1.5" + smart-buffer "^4.1.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-loader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-1.0.0.tgz#240b88575a9b0d27214aeecbd4e7686af95cfa56" + integrity sha512-ZayyQCSCrQazN50aCvuS84lJT4xc1ZAcykH5blHaBdVveSwjiFK8UGMPvao0ho54DTb0Jf7m57uRRG/YYUZ2Fg== + dependencies: + data-urls "^2.0.0" + iconv-lite "^0.5.1" + loader-utils "^2.0.0" + schema-utils "^2.6.6" + source-map "^0.6.0" + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@0.5.19, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.4.0: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@0.7.3, source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +speed-measure-webpack-plugin@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz#6ff894fc83e8a6310dde3af863a0329cd79da4f5" + integrity sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ== + dependencies: + chalk "^2.0.1" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" + integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.0, ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" + integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +streamroller@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-2.2.4.tgz#c198ced42db94086a6193608187ce80a5f2b0e53" + integrity sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ== + dependencies: + date-format "^2.1.0" + debug "^4.1.1" + fs-extra "^8.1.0" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +style-loader@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" + integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.6" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +stylus-loader@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6" + integrity sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA== + dependencies: + loader-utils "^1.0.2" + lodash.clonedeep "^4.5.0" + when "~3.6.x" + +stylus@0.54.7: + version "0.54.7" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.7.tgz#c6ce4793965ee538bcebe50f31537bfc04d88cd2" + integrity sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug== + dependencies: + css-parse "~2.0.0" + debug "~3.1.0" + glob "^7.1.3" + mkdirp "~0.5.x" + safer-buffer "^2.1.2" + sax "~1.2.4" + semver "^6.0.0" + source-map "^0.7.3" + +stylus@^0.54.7: + version "0.54.8" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.8.tgz#3da3e65966bc567a7b044bfe0eece653e099d147" + integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg== + dependencies: + css-parse "~2.0.0" + debug "~3.1.0" + glob "^7.1.6" + mkdirp "~1.0.4" + safer-buffer "^2.1.2" + sax "~1.2.4" + semver "^6.3.0" + source-map "^0.7.3" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-observable@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^4.4.10: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +tar@^6.0.2: + version "6.0.5" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" + integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +terser-webpack-plugin@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.0.1.tgz#31928c9330a582fb5ec6f90805337289b85cb8fe" + integrity sha512-eFDtq8qPUEa9hXcUzTwKXTnugIVtlqc1Z/ZVhG8LmRT3lgRY13+pQTnFLY2N7ATB6TKCHuW/IGjoAnZz9wOIqw== + dependencies: + cacache "^15.0.3" + find-cache-dir "^3.3.1" + jest-worker "^26.0.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^3.0.0" + source-map "^0.6.1" + terser "^4.6.13" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" + integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^4.1.2, terser@^4.6.13: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^5.0.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.0.tgz#c481f4afecdcc182d5e2bdd2ff2dc61555161e81" + integrity sha512-XTT3D3AwxC54KywJijmY2mxZ8nJiEjBHVYzq8l9OaYuRFWeQNBwvipuzzYEP4e+/AVcd1hqG/CqgsdIRyT45Fg== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +"through@>=2.2.7 <3", through@X.X.X, through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= + dependencies: + os-tmpdir "~1.0.1" + +tmp@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" + +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-node@~8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.3.0.tgz#e4059618411371924a1fb5f3b125915f324efb57" + integrity sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.6" + yn "^3.0.0" + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +ts-toolbelt@6.15.4: + version "6.15.4" + resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-6.15.4.tgz#f7fad584e197d0f495f77b5e3ee75a8f4c4dd3da" + integrity sha512-Ifp2yNo4I8q5UwNARUBMnBiFpv5DEtTbCtS8RCjjLOz+PNcThbjUsPJCK3hRnz0dTygM1Fi3Mgvnt/DoKUTU2g== + +tslib@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" + integrity sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== + +tslib@^1.10.0, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + +tslib@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" + integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== + +tslint@~6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" + integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== + dependencies: + "@babel/code-frame" "^7.0.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^4.0.1" + glob "^7.1.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + mkdirp "^0.5.3" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.13.0" + tsutils "^2.29.0" + +tsutils@^2.29.0: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" + integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@~3.9.2, typescript@~3.9.5: + version "3.9.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" + integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== + +ua-parser-js@0.7.21: + version "0.7.21" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" + integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== + +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-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== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +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-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== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universal-analytics@0.4.20: + version "0.4.20" + resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.4.20.tgz#d6b64e5312bf74f7c368e3024a922135dbf24b03" + integrity sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw== + dependencies: + debug "^3.0.0" + request "^2.88.0" + uuid "^3.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util-promisify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" + integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= + dependencies: + object.getownpropertydescriptors "^2.0.3" + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.1.0.tgz#6f1536eb43249f473abc6bd58ff983da1ca30d8d" + integrity sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg== + +uuid@^3.0.0, uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.6.1: + version "1.7.4" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" + integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.0" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +webdriver-js-extender@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz#57d7a93c00db4cc8d556e4d3db4b5db0a80c3bb7" + integrity sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ== + dependencies: + "@types/selenium-webdriver" "^3.0.0" + selenium-webdriver "^3.0.1" + +webdriver-manager@^12.1.7: + version "12.1.7" + resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.7.tgz#ed4eaee8f906b33c146e869b55e850553a1b1162" + integrity sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA== + dependencies: + adm-zip "^0.4.9" + chalk "^1.1.1" + del "^2.2.0" + glob "^7.0.3" + ini "^1.3.4" + minimist "^1.2.0" + q "^1.4.1" + request "^2.87.0" + rimraf "^2.5.2" + semver "^5.3.0" + xml2js "^0.4.17" + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-dev-middleware@3.7.2, webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-merge@4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-sources@1.4.3, webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-subresource-integrity@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz#e8bf918b444277df46a66cd84542cbcdc5a6272d" + integrity sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw== + dependencies: + webpack-sources "^1.3.0" + +webpack@4.43.0: + version "4.43.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" + integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.1" + webpack-sources "^1.4.1" + +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0: + version "8.2.1" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.2.1.tgz#ed73417230784b281fb2a32c3c501738b46167c3" + integrity sha512-ZmVCr6nfBeaMxEHALLEGy0LszYjpJqf6PVNQUQ1qd9Et+q7Jpygd4rGGDXgHjD8e99yLFseD69msHDM4YwPZ4A== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + +when@~3.6.x: + version "3.6.4" + resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" + integrity sha1-RztRfsFZ4rhQBUl6E5g/CVQS404= + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.1, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-plugin@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/worker-plugin/-/worker-plugin-4.0.3.tgz#7c42e600d5931ad154d3d5f187a32446df64db0f" + integrity sha512-7hFDYWiKcE3yHZvemsoM9lZis/PzurHAEX1ej8PLCu818Rt6QqUAiDdxHPCKZctzmhqzPpcFSgvMCiPbtooqAg== + dependencies: + loader-utils "^1.1.0" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +ws@^7.1.2: + version "7.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" + integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + +ws@~6.1.0: + version "6.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" + integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== + dependencies: + async-limiter "~1.0.0" + +xml2js@^0.4.17: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +xxhashjs@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== + dependencies: + cuint "^0.2.2" + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.0, yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@15.3.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.0.tgz#403af6edc75b3ae04bf66c94202228ba119f0976" + integrity sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= + +yn@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +zone.js@~0.10.2: + version "0.10.3" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.10.3.tgz#3e5e4da03c607c9dcd92e37dd35687a14a140c16" + integrity sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg== From c2191fee2e0696274b34f6c5a509e7c0f2b1a311 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 03:16:49 +0300 Subject: [PATCH 275/474] chore: uncomment a step --- .github/workflows/angular.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index 8df639431f..a011f40195 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -43,6 +43,6 @@ jobs: run: yarn install working-directory: templates/app/angular - # - name: Build app template - # run: yarn build --prod - # working-directory: templates/app/angular + - name: Build app template + run: yarn build --prod + working-directory: templates/app/angular From cee44528639598d5b4f73c5695dd93850258b1c1 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 03:30:10 +0300 Subject: [PATCH 277/474] ci: update target cache folder paths --- .github/workflows/angular.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index a011f40195..c5450b339e 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -12,7 +12,9 @@ jobs: - uses: actions/cache@v2 with: - path: '*/*/node_modules' + path: | + npm/ng-packs/node_modules + templates/app/angular/node_modules key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - uses: actions/setup-node@v1 @@ -43,6 +45,6 @@ jobs: run: yarn install working-directory: templates/app/angular - - name: Build app template - run: yarn build --prod - working-directory: templates/app/angular + # - name: Build app template + # run: yarn build --prod + # working-directory: templates/app/angular From c47e70a36154836594b2fa7bb308b916eeb5e7a1 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 03:38:14 +0300 Subject: [PATCH 279/474] chore: update angular.yml --- .github/workflows/angular.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index c5450b339e..0d0d81e455 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -42,7 +42,7 @@ jobs: # working-directory: npm/ng-packs - name: Install packages of app template - run: yarn install + run: yarn install && yarn ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points working-directory: templates/app/angular # - name: Build app template From e1fd221610c5b9cb40a305171ecd1b4453b8d76c Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 03:40:55 +0300 Subject: [PATCH 280/474] chore: trigger ci --- .github/workflows/angular.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index 0d0d81e455..4392a37993 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -17,9 +17,9 @@ jobs: templates/app/angular/node_modules key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - - uses: actions/setup-node@v1 - with: - node-version: '12.x' + # - uses: actions/setup-node@v1 + # with: + # node-version: '12.x' - name: Install packages run: yarn install From a16dfaa1069f58cb65546275a49025a78aebe0a0 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 03:43:16 +0300 Subject: [PATCH 281/474] chore: reset cache --- .github/workflows/angular.yml | 8 ++++---- templates/app/angular/yarn.lock | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index 4392a37993..d187cf301a 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -42,9 +42,9 @@ jobs: # working-directory: npm/ng-packs - name: Install packages of app template - run: yarn install && yarn ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points + run: yarn install working-directory: templates/app/angular - # - name: Build app template - # run: yarn build --prod - # working-directory: templates/app/angular + - name: Build app template + run: yarn build --prod + working-directory: templates/app/angular diff --git a/templates/app/angular/yarn.lock b/templates/app/angular/yarn.lock index fdc7fcb450..1a778347bd 100644 --- a/templates/app/angular/yarn.lock +++ b/templates/app/angular/yarn.lock @@ -9717,4 +9717,4 @@ yn@^3.0.0: zone.js@~0.10.2: version "0.10.3" resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.10.3.tgz#3e5e4da03c607c9dcd92e37dd35687a14a140c16" - integrity sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg== + integrity sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg== \ No newline at end of file From e7a199d9d7e83e1cd8d4a1ee97630891dd5c1e1b Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Sat, 5 Sep 2020 03:57:26 +0300 Subject: [PATCH 283/474] chore: uncomment ci steps --- .github/workflows/angular.yml | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index d187cf301a..3a6d486144 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -17,29 +17,25 @@ jobs: templates/app/angular/node_modules key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} - # - uses: actions/setup-node@v1 - # with: - # node-version: '12.x' - - name: Install packages run: yarn install working-directory: npm/ng-packs - # - name: Run lint - # run: yarn ng lint - # working-directory: npm/ng-packs + - name: Run lint + run: yarn ng lint + working-directory: npm/ng-packs - # - name: Run prepare workspace - # run: yarn prepare:workspace - # working-directory: npm/ng-packs + - name: Run prepare workspace + run: yarn prepare:workspace + working-directory: npm/ng-packs - # - name: Run test - # run: yarn ci:test - # working-directory: npm/ng-packs + - name: Run test + run: yarn ci:test + working-directory: npm/ng-packs - # - name: Build dev-app - # run: yarn build --prod - # working-directory: npm/ng-packs + - name: Build dev-app + run: yarn build --prod + working-directory: npm/ng-packs - name: Install packages of app template run: yarn install From 077e583938e0be81b13f8a5b46455dc0f6f15c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 5 Sep 2020 14:12:58 +0300 Subject: [PATCH 284/474] Rename Volo.Abp.Blazorise package to Volo.Abp.BlazoriseUI. --- framework/Volo.Abp.sln | 12 ++++++------ .../FodyWeavers.xml | 0 .../FodyWeavers.xsd | 0 .../Volo.Abp.BlazoriseUI.csproj} | 0 .../Volo/Abp/BlazoriseUI}/AbpBlazoriseModule.cs | 4 ++-- .../AbpIdentityBlazorModule.cs | 4 ++-- .../Volo.Abp.Identity.Blazor.csproj | 2 +- nupkg/common.ps1 | 1 + 8 files changed, 12 insertions(+), 11 deletions(-) rename framework/src/{Volo.Abp.Blazorise => Volo.Abp.BlazoriseUI}/FodyWeavers.xml (100%) rename framework/src/{Volo.Abp.Blazorise => Volo.Abp.BlazoriseUI}/FodyWeavers.xsd (100%) rename framework/src/{Volo.Abp.Blazorise/Volo.Abp.Blazorise.csproj => Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj} (100%) rename framework/src/{Volo.Abp.Blazorise/Volo/Abp/BlazoriseLib => Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI}/AbpBlazoriseModule.cs (86%) diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index 3a3572138f..a0bbb4c5c2 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -337,7 +337,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.Cli EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Components.WebAssembly", "src\Volo.Abp.AspNetCore.Components.WebAssembly\Volo.Abp.AspNetCore.Components.WebAssembly.csproj", "{E1A62D10-F2FB-4040-BD60-11A3934058DF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Blazorise", "src\Volo.Abp.Blazorise\Volo.Abp.Blazorise.csproj", "{D97028EB-A66C-4739-B5C8-1F035F7228E7}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlazoriseUI", "src\Volo.Abp.BlazoriseUI\Volo.Abp.BlazoriseUI.csproj", "{4EBDDB1B-D6C5-4FAE-B5A7-2171B18CDFA5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -1005,10 +1005,10 @@ Global {E1A62D10-F2FB-4040-BD60-11A3934058DF}.Debug|Any CPU.Build.0 = Debug|Any CPU {E1A62D10-F2FB-4040-BD60-11A3934058DF}.Release|Any CPU.ActiveCfg = Release|Any CPU {E1A62D10-F2FB-4040-BD60-11A3934058DF}.Release|Any CPU.Build.0 = Release|Any CPU - {D97028EB-A66C-4739-B5C8-1F035F7228E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D97028EB-A66C-4739-B5C8-1F035F7228E7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D97028EB-A66C-4739-B5C8-1F035F7228E7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D97028EB-A66C-4739-B5C8-1F035F7228E7}.Release|Any CPU.Build.0 = Release|Any CPU + {4EBDDB1B-D6C5-4FAE-B5A7-2171B18CDFA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4EBDDB1B-D6C5-4FAE-B5A7-2171B18CDFA5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4EBDDB1B-D6C5-4FAE-B5A7-2171B18CDFA5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4EBDDB1B-D6C5-4FAE-B5A7-2171B18CDFA5}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1179,7 +1179,7 @@ Global {3D35A1E0-A9A1-404F-9B55-5F1A7EB6D5B8} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {8A22D962-016E-474A-8BB7-F831F0ABF3AC} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {E1A62D10-F2FB-4040-BD60-11A3934058DF} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} - {D97028EB-A66C-4739-B5C8-1F035F7228E7} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {4EBDDB1B-D6C5-4FAE-B5A7-2171B18CDFA5} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.Blazorise/FodyWeavers.xml b/framework/src/Volo.Abp.BlazoriseUI/FodyWeavers.xml similarity index 100% rename from framework/src/Volo.Abp.Blazorise/FodyWeavers.xml rename to framework/src/Volo.Abp.BlazoriseUI/FodyWeavers.xml diff --git a/framework/src/Volo.Abp.Blazorise/FodyWeavers.xsd b/framework/src/Volo.Abp.BlazoriseUI/FodyWeavers.xsd similarity index 100% rename from framework/src/Volo.Abp.Blazorise/FodyWeavers.xsd rename to framework/src/Volo.Abp.BlazoriseUI/FodyWeavers.xsd diff --git a/framework/src/Volo.Abp.Blazorise/Volo.Abp.Blazorise.csproj b/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj similarity index 100% rename from framework/src/Volo.Abp.Blazorise/Volo.Abp.Blazorise.csproj rename to framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj diff --git a/framework/src/Volo.Abp.Blazorise/Volo/Abp/BlazoriseLib/AbpBlazoriseModule.cs b/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/AbpBlazoriseModule.cs similarity index 86% rename from framework/src/Volo.Abp.Blazorise/Volo/Abp/BlazoriseLib/AbpBlazoriseModule.cs rename to framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/AbpBlazoriseModule.cs index f49d560b01..716f36b1ea 100644 --- a/framework/src/Volo.Abp.Blazorise/Volo/Abp/BlazoriseLib/AbpBlazoriseModule.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/Volo/Abp/BlazoriseUI/AbpBlazoriseModule.cs @@ -2,12 +2,12 @@ using Volo.Abp.AspNetCore.Components.WebAssembly; using Volo.Abp.Modularity; -namespace Volo.Abp.BlazoriseLib +namespace Volo.Abp.BlazoriseUI { [DependsOn( typeof(AbpAspNetCoreComponentsWebAssemblyModule) )] - public class AbpBlazoriseModule : AbpModule + public class AbpBlazoriseUIModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs index 85695062c6..4b5cabda8c 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs @@ -1,11 +1,11 @@ using Volo.Abp.Modularity; -using Volo.Abp.BlazoriseLib; +using Volo.Abp.BlazoriseUI; namespace Volo.Abp.Identity.Blazor { [DependsOn( typeof(AbpIdentityHttpApiClientModule), - typeof(AbpBlazoriseModule) + typeof(AbpBlazoriseUIModule) )] public class AbpIdentityBlazorModule : AbpModule { diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj b/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj index 33f26edc57..d5bca0ad55 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj @@ -10,7 +10,7 @@ - + diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index 9b938975bf..4ac0f70fa5 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -58,6 +58,7 @@ $projects = ( "framework/src/Volo.Abp.BackgroundJobs.Quartz", "framework/src/Volo.Abp.BackgroundWorkers", "framework/src/Volo.Abp.BackgroundWorkers.Quartz", + "framework/src/Volo.Abp.BlazoriseUI", "framework/src/Volo.Abp.BlobStoring", "framework/src/Volo.Abp.BlobStoring.FileSystem", "framework/src/Volo.Abp.BlobStoring.Aliyun", From ddc2b9a7300a2293538b1625449970aaa7d3353b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 5 Sep 2020 14:21:00 +0300 Subject: [PATCH 285/474] Inject in the code behind. --- .../Pages/Identity/RoleManagement.razor | 2 -- .../Pages/Identity/RoleManagement.razor.cs | 11 ++++++++--- .../src/Volo.Abp.Identity.Blazor/_Imports.razor | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor index 18dc4f5d03..2def9fc346 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor @@ -5,9 +5,7 @@ @using Microsoft.Extensions.Localization @using Volo.Abp.Application.Dtos @using Volo.Abp.Identity.Localization -@inject IIdentityRoleAppService RoleAppService @inject IStringLocalizer L -@inject IUiMessageService UiMessageService @* ************************* PAGE HEADER ************************* *@ diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs index 09c967ceb6..cd3c8db609 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs @@ -4,23 +4,28 @@ using System.Linq; using System.Threading.Tasks; using Blazorise; using Blazorise.DataGrid; +using Microsoft.AspNetCore.Components; using Volo.Abp.ObjectExtending; using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Components.WebAssembly; namespace Volo.Abp.Identity.Blazor.Pages.Identity { public partial class RoleManagement { + [Inject] private IIdentityRoleAppService RoleAppService { get; set; } + [Inject] private IUiMessageService UiMessageService { get; set; } + private int _currentPage; private string _currentSorting; private int? _totalCount; - + private IReadOnlyList _roles; - + private IdentityRoleCreateDto _newRole; private Guid _editingRoleId; private IdentityRoleUpdateDto _editingRole; - + private Modal _createModal; private Modal _editModal; diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor b/modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor index 1b2fa8ffc4..4685ac9893 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/_Imports.razor @@ -1,5 +1,5 @@ @using Microsoft.AspNetCore.Components.Web @using Volo.Abp.AspNetCore.Components.WebAssembly -@using Volo.Abp.BlazoriseLib +@using Volo.Abp.BlazoriseUI @using Blazorise @using Blazorise.DataGrid \ No newline at end of file From ffed310ea544802fdb057437fedef8350d1d8b1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 5 Sep 2020 14:27:18 +0300 Subject: [PATCH 286/474] No need to depends on the AbpAspNetCoreMvcUiBootstrapModule since AbpAspNetCoreMvcUiThemeSharedModule already depends on it! --- .../identity/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs | 2 -- .../src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj | 1 - 2 files changed, 3 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs b/modules/identity/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs index 23a4529502..5362969011 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs @@ -1,7 +1,6 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Mvc.Localization; -using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AutoMapper; using Volo.Abp.Identity.Localization; @@ -16,7 +15,6 @@ using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.Identity.Web { [DependsOn(typeof(AbpIdentityHttpApiModule))] - [DependsOn(typeof(AbpAspNetCoreMvcUiBootstrapModule))] [DependsOn(typeof(AbpAutoMapperModule))] [DependsOn(typeof(AbpPermissionManagementWebModule))] [DependsOn(typeof(AbpAspNetCoreMvcUiThemeSharedModule))] diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj index 89bb07688a..8a0b8ebd5c 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj @@ -38,7 +38,6 @@ - From 786d538da5549c5d7d12c73c010f20bf4ec82b2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 5 Sep 2020 14:44:07 +0300 Subject: [PATCH 287/474] Use AutoMapper on the Identity Blazor UI --- .../AbpIdentityBlazorAutoMapperProfile.cs | 13 +++++++++ .../AbpIdentityBlazorModule.cs | 16 +++++++++-- .../Pages/Identity/RoleManagement.razor.cs | 28 ++++++++----------- .../Volo.Abp.Identity.Blazor.csproj | 6 +++- .../Shared/LoginDisplay.razor | 3 +- 5 files changed, 45 insertions(+), 21 deletions(-) create mode 100644 modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorAutoMapperProfile.cs diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorAutoMapperProfile.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorAutoMapperProfile.cs new file mode 100644 index 0000000000..f4f111df41 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorAutoMapperProfile.cs @@ -0,0 +1,13 @@ +using AutoMapper; + +namespace Volo.Abp.Identity.Blazor +{ + public class AbpIdentityBlazorAutoMapperProfile : Profile + { + public AbpIdentityBlazorAutoMapperProfile() + { + CreateMap() + .MapExtraProperties(); + } + } +} diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs index 4b5cabda8c..0e8477d75c 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/AbpIdentityBlazorModule.cs @@ -1,13 +1,25 @@ -using Volo.Abp.Modularity; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.AutoMapper; +using Volo.Abp.Modularity; using Volo.Abp.BlazoriseUI; namespace Volo.Abp.Identity.Blazor { [DependsOn( typeof(AbpIdentityHttpApiClientModule), - typeof(AbpBlazoriseUIModule) + typeof(AbpBlazoriseUIModule), + typeof(AbpAutoMapperModule) )] public class AbpIdentityBlazorModule : AbpModule { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAutoMapperObjectMapper(); + + Configure(options => + { + options.AddProfile(validate: true); + }); + } } } diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs index cd3c8db609..9b86d68fdf 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Components; using Volo.Abp.ObjectExtending; using Volo.Abp.Application.Dtos; using Volo.Abp.AspNetCore.Components.WebAssembly; +using Volo.Abp.ObjectMapping; namespace Volo.Abp.Identity.Blazor.Pages.Identity { @@ -15,6 +16,7 @@ namespace Volo.Abp.Identity.Blazor.Pages.Identity { [Inject] private IIdentityRoleAppService RoleAppService { get; set; } [Inject] private IUiMessageService UiMessageService { get; set; } + [Inject] private IObjectMapper ObjectMapper { get; set; } private int _currentPage; private string _currentSorting; @@ -22,17 +24,17 @@ namespace Volo.Abp.Identity.Blazor.Pages.Identity private IReadOnlyList _roles; - private IdentityRoleCreateDto _newRole; + private IdentityRoleCreateDto _newRole; //TODO: Would be better to create a UI model class private Guid _editingRoleId; - private IdentityRoleUpdateDto _editingRole; + private IdentityRoleUpdateDto _editingRole; //TODO: Would be better to create a UI model class private Modal _createModal; private Modal _editModal; public RoleManagement() { - _newRole = new IdentityRoleCreateDto(); - _editingRole = new IdentityRoleUpdateDto(); + _newRole = new IdentityRoleCreateDto(); //TODO: Can we discard this (create on modal opening)? + _editingRole = new IdentityRoleUpdateDto(); //TODO: Can we discard this (create on modal opening)? } protected override async Task OnInitializedAsync() @@ -62,6 +64,7 @@ namespace Volo.Abp.Identity.Blazor.Pages.Identity .JoinAsString(","); _currentPage = e.Page - 1; + await GetRolesAsync(); StateHasChanged(); } @@ -69,6 +72,7 @@ namespace Volo.Abp.Identity.Blazor.Pages.Identity private void OpenCreateModal() { _newRole = new IdentityRoleCreateDto(); + _createModal.Show(); } @@ -82,18 +86,8 @@ namespace Volo.Abp.Identity.Blazor.Pages.Identity var role = await RoleAppService.GetAsync(id); _editingRoleId = id; - - //TODO: User AutoMapper! - _editingRole = new IdentityRoleUpdateDto - { - Name = role.Name, - ConcurrencyStamp = role.ConcurrencyStamp, - IsDefault = role.IsDefault, - IsPublic = role.IsPublic - }; - - role.MapExtraPropertiesTo(_editingRole); - + _editingRole = ObjectMapper.Map(role); + _editModal.Show(); } @@ -106,6 +100,7 @@ namespace Volo.Abp.Identity.Blazor.Pages.Identity { await RoleAppService.CreateAsync(_newRole); await GetRolesAsync(); + _createModal.Hide(); } @@ -113,6 +108,7 @@ namespace Volo.Abp.Identity.Blazor.Pages.Identity { await RoleAppService.UpdateAsync(_editingRoleId, _editingRole); await GetRolesAsync(); + _editModal.Hide(); } diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj b/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj index d5bca0ad55..6d7f3f83bb 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Volo.Abp.Identity.Blazor.csproj @@ -9,8 +9,12 @@ - + + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/LoginDisplay.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/LoginDisplay.razor index 10a8c06278..39e1dc3462 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/LoginDisplay.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/LoginDisplay.razor @@ -1,5 +1,4 @@ -@using Microsoft.AspNetCore.Components.Authorization -@using Microsoft.AspNetCore.Components.WebAssembly.Authentication +@using Microsoft.AspNetCore.Components.WebAssembly.Authentication @inject NavigationManager Navigation @inject SignOutSessionStateManager SignOutManager From 72992ec803891807ac2233a506b260c35268358d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 5 Sep 2020 14:47:04 +0300 Subject: [PATCH 288/474] Add AbpPageBase --- .../Pages/AbpPageBase.cs | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 modules/identity/src/Volo.Abp.Identity.Blazor/Pages/AbpPageBase.cs diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/AbpPageBase.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/AbpPageBase.cs new file mode 100644 index 0000000000..4f2828e8a2 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/AbpPageBase.cs @@ -0,0 +1,131 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Blazorise; +using Blazorise.DataGrid; +using Microsoft.AspNetCore.Components; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; +using Volo.Abp.ObjectMapping; + +namespace Volo.Abp.Identity.Blazor.Pages +{ + public abstract class AbpPageBase< + TAppService, + TEntityDto, + TKey, + TGetListInput, + TCreateInput, + TUpdateInput> + : ComponentBase + where TAppService : ICrudAppService + where TEntityDto : IEntityDto + where TCreateInput : new() + where TUpdateInput : new() + where TGetListInput : PagedAndSortedResultRequestDto, new() + { + [Inject] protected abstract TAppService AppService { get; } + [Inject] protected abstract IObjectMapper ObjectMapper { get; } + + protected int _currentPage; + protected string _currentSorting; + protected int? _totalCount; + + protected IReadOnlyList _roles; + + protected TCreateInput _newRole; + protected TKey _editingRoleId; + protected TUpdateInput _editingRole; + + protected Modal _createModal; + protected Modal _editModal; + + protected AbpPageBase() + { + _newRole = new TCreateInput(); + _editingRole = new TUpdateInput(); + } + + protected override async Task OnInitializedAsync() + { + await GetRolesAsync(); + } + + protected async Task GetRolesAsync() + { + var result = await AppService.GetListAsync( + new TGetListInput + { + SkipCount = _currentPage * LimitedResultRequestDto.DefaultMaxResultCount, + MaxResultCount = LimitedResultRequestDto.DefaultMaxResultCount, + Sorting = _currentSorting + }); + + _roles = result.Items; + _totalCount = (int?)result.TotalCount; + } + + protected async Task OnDataGridReadAsync(DataGridReadDataEventArgs e) + { + _currentSorting = e.Columns + .Where(c => c.Direction != SortDirection.None) + .Select(c => c.Field + (c.Direction == SortDirection.Descending ? " DESC" : "")) + .JoinAsString(","); + + _currentPage = e.Page - 1; + await GetRolesAsync(); + StateHasChanged(); + } + + protected void OpenCreateModal() + { + _newRole = new TCreateInput(); + _createModal.Show(); + } + + protected void CloseCreateModal() + { + _createModal.Hide(); + } + + protected async Task OpenEditModalAsync(TKey id) + { + var role = await AppService.GetAsync(id); + + _editingRoleId = id; + _editingRole = ObjectMapper.Map(role); + + _editModal.Show(); + } + + protected void CloseEditModal() + { + _editModal.Hide(); + } + + protected async Task CreateRoleAsync() + { + await AppService.CreateAsync(_newRole); + await GetRolesAsync(); + _createModal.Hide(); + } + + protected async Task UpdateRoleAsync() + { + await AppService.UpdateAsync(_editingRoleId, _editingRole); + await GetRolesAsync(); + _editModal.Hide(); + } + + protected async Task DeleteRoleAsync(TEntityDto role) + { + //if (!await UiMessageService.ConfirmAsync(L["RoleDeletionConfirmationMessage", role.Name])) + //{ + // return; + //} + + await AppService.DeleteAsync(role.Id); + await GetRolesAsync(); + } + } +} \ No newline at end of file From 77f417001b6dd3616067da07a64e469de5e614ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 5 Sep 2020 14:51:19 +0300 Subject: [PATCH 289/474] Update AbpPageBase.cs --- .../src/Volo.Abp.Identity.Blazor/Pages/AbpPageBase.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/AbpPageBase.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/AbpPageBase.cs index 4f2828e8a2..a657256376 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/AbpPageBase.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/AbpPageBase.cs @@ -24,8 +24,8 @@ namespace Volo.Abp.Identity.Blazor.Pages where TUpdateInput : new() where TGetListInput : PagedAndSortedResultRequestDto, new() { - [Inject] protected abstract TAppService AppService { get; } - [Inject] protected abstract IObjectMapper ObjectMapper { get; } + [Inject] protected TAppService AppService { get; set; } + [Inject] protected IObjectMapper ObjectMapper { get; set; } protected int _currentPage; protected string _currentSorting; From 38b1943b6055a1614b21b724a7e4018bc068c97f Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Sat, 5 Sep 2020 22:11:24 +0800 Subject: [PATCH 290/474] Add CS0436 to common.props. Resolve #4778 --- common.props | 2 +- common.test.props | 2 +- modules/cms-kit/common.props | 2 +- modules/identityserver/common.props | 2 +- templates/app/aspnet-core/common.props | 2 +- templates/console/common.props | 2 +- templates/module/aspnet-core/common.props | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/common.props b/common.props index 890cdff1e6..c9f4a9656a 100644 --- a/common.props +++ b/common.props @@ -2,7 +2,7 @@ latest 3.2.0 - $(NoWarn);CS1591 + $(NoWarn);CS1591;CS0436 https://abp.io/assets/abp_nupkg.png https://abp.io/ LICENSE.md diff --git a/common.test.props b/common.test.props index e90103e606..233afe8282 100644 --- a/common.test.props +++ b/common.test.props @@ -1,7 +1,7 @@ latest - $(NoWarn);CS1591 + $(NoWarn);CS1591;CS0436 true false false diff --git a/modules/cms-kit/common.props b/modules/cms-kit/common.props index 0e2bf35066..420d9c492c 100644 --- a/modules/cms-kit/common.props +++ b/modules/cms-kit/common.props @@ -2,7 +2,7 @@ latest 0.1.0 - $(NoWarn);CS1591 + $(NoWarn);CS1591;CS0436 module diff --git a/modules/identityserver/common.props b/modules/identityserver/common.props index a9aaa3c07a..7f5a705307 100644 --- a/modules/identityserver/common.props +++ b/modules/identityserver/common.props @@ -2,7 +2,7 @@ latest 0.3.0 - $(NoWarn);CS1591 + $(NoWarn);CS1591;CS0436 http://www.aspnetboilerplate.com/images/abp_nupkg.png http://abp.io git diff --git a/templates/app/aspnet-core/common.props b/templates/app/aspnet-core/common.props index 6caad60263..fbef88367b 100644 --- a/templates/app/aspnet-core/common.props +++ b/templates/app/aspnet-core/common.props @@ -2,7 +2,7 @@ latest 1.0.0 - $(NoWarn);CS1591 + $(NoWarn);CS1591;CS0436 app \ No newline at end of file diff --git a/templates/console/common.props b/templates/console/common.props index 4adb69f0fe..233f41c1ba 100644 --- a/templates/console/common.props +++ b/templates/console/common.props @@ -2,7 +2,7 @@ latest 0.1.0 - $(NoWarn);CS1591 + $(NoWarn);CS1591;CS0436 diff --git a/templates/module/aspnet-core/common.props b/templates/module/aspnet-core/common.props index 0e2bf35066..420d9c492c 100644 --- a/templates/module/aspnet-core/common.props +++ b/templates/module/aspnet-core/common.props @@ -2,7 +2,7 @@ latest 0.1.0 - $(NoWarn);CS1591 + $(NoWarn);CS1591;CS0436 module From 040971e1e94c8b9ff9087b61b56bfd80d19a55f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 5 Sep 2020 19:52:30 +0300 Subject: [PATCH 291/474] Resolved #5304: Introduce AbpHttpClientBuilderOptions & Remove AbpHttpClientOptions.HttpClientActions. --- ...lectionDynamicHttpClientProxyExtensions.cs | 79 +++++++------------ .../Client/AbpHttpClientBuilderOptions.cs | 19 +++++ .../Abp/Http/Client/AbpHttpClientModule.cs | 39 +++++---- .../Abp/Http/Client/AbpHttpClientOptions.cs | 4 - 4 files changed, 66 insertions(+), 75 deletions(-) create mode 100644 framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientBuilderOptions.cs diff --git a/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionDynamicHttpClientProxyExtensions.cs b/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionDynamicHttpClientProxyExtensions.cs index e20b60bf54..4d79779dd1 100644 --- a/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionDynamicHttpClientProxyExtensions.cs +++ b/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionDynamicHttpClientProxyExtensions.cs @@ -3,7 +3,6 @@ using System.Linq; using System.Reflection; using Castle.DynamicProxy; using JetBrains.Annotations; -using Polly; using Volo.Abp; using Volo.Abp.Castle.DynamicProxy; using Volo.Abp.Http.Client; @@ -30,23 +29,15 @@ namespace Microsoft.Extensions.DependencyInjection /// /// True, to register the HTTP client proxy as the default implementation for the services. /// - /// - /// A delegate that is used to configure an . - /// public static IServiceCollection AddHttpClientProxies( [NotNull] this IServiceCollection services, [NotNull] Assembly assembly, [NotNull] string remoteServiceConfigurationName = RemoteServiceConfigurationDictionary.DefaultName, - bool asDefaultServices = true, - Action configureHttpClientBuilder = null) + bool asDefaultServices = true) { Check.NotNull(services, nameof(assembly)); - AddHttpClientFactoryAndPolicy(services, remoteServiceConfigurationName, configureHttpClientBuilder); - - //TODO: Make a configuration option and add remoteServiceName inside it! - - var serviceTypes = assembly.GetTypes().Where(IsSuitableForDynamicClientProxying); + var serviceTypes = assembly.GetTypes().Where(IsSuitableForDynamicClientProxying).ToArray(); foreach (var serviceType in serviceTypes) { @@ -72,17 +63,11 @@ namespace Microsoft.Extensions.DependencyInjection /// /// True, to register the HTTP client proxy as the default implementation for the service . /// - /// - /// A delegate that is used to configure an . - /// public static IServiceCollection AddHttpClientProxy( [NotNull] this IServiceCollection services, [NotNull] string remoteServiceConfigurationName = RemoteServiceConfigurationDictionary.DefaultName, - bool asDefaultService = true, - Action configureHttpClientBuilder = null) + bool asDefaultService = true) { - AddHttpClientFactoryAndPolicy(services, remoteServiceConfigurationName, configureHttpClientBuilder); - return services.AddHttpClientProxy( typeof(T), remoteServiceConfigurationName, @@ -90,37 +75,6 @@ namespace Microsoft.Extensions.DependencyInjection ); } - /// - /// Use IHttpClientFactory and polly - /// - /// Service collection - /// - /// The name of the remote service configuration to be used by the HTTP Client proxies. - /// See . - /// - /// - /// A delegate that is used to configure an . - /// - public static IServiceCollection AddHttpClientFactoryAndPolicy( - [NotNull] this IServiceCollection services, - [NotNull] string remoteServiceConfigurationName = RemoteServiceConfigurationDictionary.DefaultName, - Action configureHttpClientBuilder = null) - { - var httpClientBuilder = services.AddHttpClient(remoteServiceConfigurationName); - if (configureHttpClientBuilder == null) - { - httpClientBuilder.AddTransientHttpErrorPolicy(builder => - // retry 3 times - builder.WaitAndRetryAsync(3, i => TimeSpan.FromSeconds(Math.Pow(2, i)))); - } - else - { - configureHttpClientBuilder.Invoke(httpClientBuilder); - } - - return services; - } - /// /// Registers HTTP Client Proxy for given service . /// @@ -143,6 +97,8 @@ namespace Microsoft.Extensions.DependencyInjection Check.NotNull(type, nameof(type)); Check.NotNullOrWhiteSpace(remoteServiceConfigurationName, nameof(remoteServiceConfigurationName)); + AddHttpClientFactoryAndPolicy(services, remoteServiceConfigurationName); + services.Configure(options => { options.HttpClientProxies[type] = new DynamicHttpClientProxyConfig(type, remoteServiceConfigurationName); @@ -189,13 +145,36 @@ namespace Microsoft.Extensions.DependencyInjection return services; } + private static IServiceCollection AddHttpClientFactoryAndPolicy( + [NotNull] this IServiceCollection services, + [NotNull] string remoteServiceConfigurationName = RemoteServiceConfigurationDictionary.DefaultName) + { + var preOptions = services.ExecutePreConfiguredActions(); + + if (preOptions.ConfiguredProxyClients.Contains(remoteServiceConfigurationName)) + { + return services; + } + + var clientBuilder = services.AddHttpClient(remoteServiceConfigurationName); + + foreach (var clientBuildAction in preOptions.ProxyClientBuildActions) + { + clientBuildAction(remoteServiceConfigurationName, clientBuilder); + } + + preOptions.ConfiguredProxyClients.Add(remoteServiceConfigurationName); + + return services; + } + /// /// Checks wether the type is suitable to use with the dynamic proxying. /// Currently the type is checked statically against some fixed conditions. /// /// Type to check /// True, if the type is suitable for dynamic proxying. Otherwise false. - static bool IsSuitableForDynamicClientProxying(Type type) + private static bool IsSuitableForDynamicClientProxying(Type type) { //TODO: Add option to change type filter diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientBuilderOptions.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientBuilderOptions.cs new file mode 100644 index 0000000000..7f11a6be12 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientBuilderOptions.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using Microsoft.Extensions.DependencyInjection; + +namespace Volo.Abp.Http.Client +{ + public class AbpHttpClientBuilderOptions + { + public List> ProxyClientBuildActions { get; } + + internal HashSet ConfiguredProxyClients { get; } + + public AbpHttpClientBuilderOptions() + { + ProxyClientBuildActions = new List>(); + ConfiguredProxyClients = new HashSet(); + } + } +} diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientModule.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientModule.cs index e2e5b7b9fe..e4e4f3e802 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientModule.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientModule.cs @@ -1,11 +1,11 @@ -using System.Linq; +using System; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Http; using Volo.Abp.Castle; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; using Volo.Abp.Threading; using Volo.Abp.Validation; +using Polly; namespace Volo.Abp.Http.Client { @@ -18,29 +18,26 @@ namespace Volo.Abp.Http.Client )] public class AbpHttpClientModule : AbpModule { - public override void ConfigureServices(ServiceConfigurationContext context) - { - var configuration = context.Services.GetConfiguration(); - Configure(configuration); - } - - public override void PostConfigureServices(ServiceConfigurationContext context) + public override void PreConfigureServices(ServiceConfigurationContext context) { - Configure(options => + PreConfigure(options => { - if (options.HttpClientActions.Any()) + options.ProxyClientBuildActions.Add((remoteServiceName, clientBuilder) => { - var httpClientNames = options.HttpClientProxies.Select(x => x.Value.RemoteServiceName); - foreach (var httpClientName in httpClientNames) - { - foreach (var httpClientAction in options.HttpClientActions) - { - context.Services.Configure(httpClientName, - x => x.HttpClientActions.Add(httpClientAction.Invoke(httpClientName))); - } - } - } + clientBuilder.AddTransientHttpErrorPolicy(policyBuilder => + policyBuilder.WaitAndRetryAsync( + 3, + i => TimeSpan.FromSeconds(Math.Pow(2, i)) + ) + ); + }); }); } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + Configure(configuration); + } } } diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientOptions.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientOptions.cs index 54cc4eb624..2e6cd3798d 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientOptions.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientOptions.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Net.Http; using Volo.Abp.Http.Client.DynamicProxying; namespace Volo.Abp.Http.Client @@ -9,12 +8,9 @@ namespace Volo.Abp.Http.Client { public Dictionary HttpClientProxies { get; set; } - public List>> HttpClientActions { get; } - public AbpHttpClientOptions() { HttpClientProxies = new Dictionary(); - HttpClientActions = new List>>(); } } } From baac20ced07513019e698c4e2a64bb6c245edab2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 5 Sep 2020 20:23:41 +0300 Subject: [PATCH 292/474] Implemented POC for the language switch. --- .../BlazorClientHttpMessageHandler.cs | 42 ++++++++++++ .../MyProjectNameBlazorModule.cs | 12 ++++ .../Shared/LanguageSwitch.razor | 67 +++++++++++++++++++ .../Shared/MainLayout.razor | 3 +- 4 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/BlazorClientHttpMessageHandler.cs create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/LanguageSwitch.razor diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/BlazorClientHttpMessageHandler.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/BlazorClientHttpMessageHandler.cs new file mode 100644 index 0000000000..8c96325b6d --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/BlazorClientHttpMessageHandler.cs @@ -0,0 +1,42 @@ +using System; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.JSInterop; +using Volo.Abp.DependencyInjection; + +namespace MyCompanyName.MyProjectName.Blazor +{ + public class BlazorClientHttpMessageHandler : DelegatingHandler, ITransientDependency + { + private readonly IJSRuntime _jsRuntime; + + public BlazorClientHttpMessageHandler(IJSRuntime jsRuntime) + { + _jsRuntime = jsRuntime; + } + + protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + await SetLanguageAsync(request, cancellationToken); + + return await base.SendAsync(request, cancellationToken); + } + + private async Task SetLanguageAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + var selectedLanguage = await _jsRuntime.InvokeAsync( + "localStorage.getItem", + cancellationToken, + "Abp.SelectedLanguage" + ); + + if (!selectedLanguage.IsNullOrWhiteSpace()) + { + request.Headers.AcceptLanguage.Clear(); + request.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue(selectedLanguage)); + } + } + } +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs index 996c8a4925..fa3dcd8d51 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs @@ -9,6 +9,7 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp; using Volo.Abp.AspNetCore.Components.WebAssembly; using Volo.Abp.Autofac; +using Volo.Abp.Http.Client; using Volo.Abp.Http.Client.IdentityModel.WebAssembly; using Volo.Abp.Identity.Blazor; using Volo.Abp.Modularity; @@ -24,6 +25,17 @@ namespace MyCompanyName.MyProjectName.Blazor )] public class MyProjectNameBlazorModule : AbpModule { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(options => + { + options.ProxyClientBuildActions.Add((_, builder) => + { + builder.AddHttpMessageHandler(); + }); + }); + } + public override void ConfigureServices(ServiceConfigurationContext context) { var environment = context.Services.GetSingletonInstance(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/LanguageSwitch.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/LanguageSwitch.razor new file mode 100644 index 0000000000..05c14e0a3f --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/LanguageSwitch.razor @@ -0,0 +1,67 @@ +@using Volo.Abp.Localization +@using System.Globalization +@inject ILanguageProvider LanguageProvider +@inject IJSRuntime JsRuntime +@if (_languages != null && _languages.Count > 1) +{ + + + @_currentLanguage.DisplayName + + + @foreach (var language in _languages) + { + if (language == _currentLanguage) + { + continue; + } + + @language.DisplayName + } + + +} +@code { + private IReadOnlyList _languages; + private LanguageInfo _currentLanguage; + + protected override async Task OnInitializedAsync() + { + var selectedLanguageName = await JsRuntime.InvokeAsync( + "localStorage.getItem", + "Abp.SelectedLanguage" + ); + + _languages = await LanguageProvider.GetLanguagesAsync(); + + if (!_languages.Any()) + { + return; + } + + if (!selectedLanguageName.IsNullOrWhiteSpace()) + { + _currentLanguage = _languages.FirstOrDefault(l => l.UiCultureName == selectedLanguageName); + } + + if (_currentLanguage == null) + { + _currentLanguage = _languages.FirstOrDefault(l => l.UiCultureName == CultureInfo.CurrentUICulture.Name); + } + + if (_currentLanguage == null) + { + _currentLanguage = _languages.FirstOrDefault(); + } + } + + private async Task ChangeLanguageAsync(LanguageInfo language) + { + await JsRuntime.InvokeVoidAsync( + "localStorage.setItem", + "Abp.SelectedLanguage", language.UiCultureName + ); + + await JsRuntime.InvokeVoidAsync("location.reload"); + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/MainLayout.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/MainLayout.razor index fafa2f55f1..b01e17ddcd 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/MainLayout.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/MainLayout.razor @@ -6,7 +6,8 @@
    - + + About
    From 1a570a1984e7648327dfc1f4dd0c1427c581dd22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 5 Sep 2020 20:34:55 +0300 Subject: [PATCH 293/474] Change routes. --- .../Pages/Identity/RoleManagement.razor | 2 +- .../src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor | 5 +++-- .../Volo.Abp.Identity.Blazor/Pages/UserManagement.razor.cs | 3 +-- .../MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor index 2def9fc346..0e8efd27f5 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor @@ -1,4 +1,4 @@ -@page "/identity/role-management" +@page "/identity/roles" @attribute [Authorize] @using Volo.Abp.Identity @using Microsoft.AspNetCore.Authorization diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor index a18b56022f..0e0301f636 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor @@ -1,10 +1,10 @@ -@page "/user-management" +@page "/identity/users" @attribute [Authorize] @using Volo.Abp.Identity @using Microsoft.AspNetCore.Authorization @inject IIdentityUserAppService UserAppService -

    UserManagement (in the Identity Module)

    +

    Users

    @@ -16,5 +16,6 @@
  • @user.UserName / @user.Email
  • } +

    Total user count: @_totalUserCount

    } \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor.cs index b663b1b6be..682222833f 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/UserManagement.razor.cs @@ -1,10 +1,9 @@ using System.Collections.Generic; using System.Threading.Tasks; -using Microsoft.AspNetCore.Components; namespace Volo.Abp.Identity.Blazor.Pages { - public partial class UserManagement : ComponentBase + public partial class UserManagement { private long _totalUserCount; private IReadOnlyList _users; diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor index 619923b7c7..2cc918fc8e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Shared/NavMenu.razor @@ -13,12 +13,12 @@ From 62277ec59e5d78e31ca7ad9b205ecb54d66fa030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=B4=AA=E6=9E=97?= Date: Sun, 6 Sep 2020 15:35:05 +0800 Subject: [PATCH 294/474] add create role with org details unit test --- .../Identity/IdentityRoleAppService_Tests.cs | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs index 5d64bb6c78..0126758eb8 100644 --- a/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs @@ -11,11 +11,14 @@ namespace Volo.Abp.Identity { private readonly IIdentityRoleAppService _roleAppService; private readonly IIdentityRoleRepository _roleRepository; - + private readonly IOrganizationUnitRepository _organizationUnitRepository; + private readonly OrganizationUnitManager _organization; public IdentityRoleAppService_Tests() { _roleAppService = GetRequiredService(); _roleRepository = GetRequiredService(); + _organization = GetRequiredService(); + _organizationUnitRepository=GetRequiredService(); } [Fact] @@ -81,6 +84,32 @@ namespace Volo.Abp.Identity role.Name.ShouldBe(input.Name); } + [Fact] + public async Task CreateWithDetailsAsync() + { + //Arrange + var input = new IdentityRoleCreateDto + { + Name = Guid.NewGuid().ToString("N").Left(8) + }; + + var orgInput=new OrganizationUnit( + _organization.GuidGenerator.Create(), + Guid.NewGuid().ToString("N").Left(8) + ); + + //Act + var result = await _roleAppService.CreateAsync(input); + + await _organization.CreateAsync(orgInput); + + await _organization.AddRoleToOrganizationUnitAsync(result.Id,orgInput.Id); + + var orgRolesCount=await _organizationUnitRepository.GetRolesCountAsync(orgInput); + //Assert + orgRolesCount.ShouldBeGreaterThan(0); + } + [Fact] public async Task UpdateAsync() { From c02fdae537d43da1f33d8c42c2342944e9be8bda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=B4=AA=E6=9E=97?= Date: Sun, 6 Sep 2020 16:27:15 +0800 Subject: [PATCH 295/474] fixed CreateWithDetails unit test --- .../Volo/Abp/Identity/IdentityRoleAppService_Tests.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs index 0126758eb8..b32c830002 100644 --- a/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs @@ -102,12 +102,11 @@ namespace Volo.Abp.Identity var result = await _roleAppService.CreateAsync(input); await _organization.CreateAsync(orgInput); - - await _organization.AddRoleToOrganizationUnitAsync(result.Id,orgInput.Id); - - var orgRolesCount=await _organizationUnitRepository.GetRolesCountAsync(orgInput); + + var role = await _roleRepository.GetAsync(result.Id); + await _organization.AddRoleToOrganizationUnitAsync(role,orgInput); //Assert - orgRolesCount.ShouldBeGreaterThan(0); + orgInput.Roles.Count.ShouldBeGreaterThan(0); } [Fact] From 60453f12f56a3441a0433e7ea9c45aff7dc65fee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 6 Sep 2020 14:41:49 +0300 Subject: [PATCH 296/474] Update the Angular-Service-Proxies post for the 3.1 final release. --- .../POST.md | 92 ++++++++++++------- 1 file changed, 59 insertions(+), 33 deletions(-) diff --git a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md index d16540872f..09df3a2119 100644 --- a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md +++ b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/POST.md @@ -1,8 +1,8 @@ # Introducing the Angular Service Proxy Generation -Angular Service Proxy System **generates TypeScript services and models** to consume your backend HTTP APIs developed using the ABP Framework. So, you **don't manually create** models for your server side DTOs and perform raw HTTP calls to the server. +ABP Angular Service Proxy System **generates TypeScript services and models** to consume your backend HTTP APIs developed using the ABP Framework. So, you **don't manually create** models for your server side DTOs and perform raw HTTP calls to the server. -ABP Framework has introduced the **new** Angular Service Proxy Generation system with the version 3.1. While this feature was available since the [v2.3](https://blog.abp.io/abp/ABP-Framework-v2_3_0-Has-Been-Released), it was not well covering some scenarios, like inheritance and generic types and had some known problems. **With the v3.1, we've re-written** it using the [Angular Schematics](https://angular.io/guide/schematics) system. Now, it is much more stable and feature rich. +ABP Framework has introduced the **new** Angular Service Proxy Generation system with the **version 3.1**. While this feature was available since the [v2.3](https://blog.abp.io/abp/ABP-Framework-v2_3_0-Has-Been-Released), it was not well covering some scenarios, like inheritance and generic types and had some known problems. **With the v3.1, we've re-written** it using the [Angular Schematics](https://angular.io/guide/schematics) system. Now, it is much more stable and feature rich. This post introduces the service proxy generation system and highlights some important features. @@ -47,6 +47,15 @@ apis: { `Acme.BookStore` should be replaced by the root namespace of your .NET project. This ensures to not create unnecessary nested folders while creating the service proxy code. This value is `AngularProxyDemo` for the example solution explained below. +* Finally, add the following paths to the `tsconfig.base.json` to have a shortcut while importing proxies: + +```json +"paths": { + "@proxy": ["src/app/proxy/index.ts"], + "@proxy/*": ["src/app/proxy/*"] +} +``` + ## Basic Usage ### Project Creation @@ -139,21 +148,23 @@ abp generate-proxy It should produce an output like the following: ````bash -CREATE src/app/shared/models/books/index.ts (142 bytes) -CREATE src/app/shared/services/books/book.service.ts (437 bytes) ... +CREATE src/app/proxy/books/book.service.ts (446 bytes) +CREATE src/app/proxy/books/models.ts (148 bytes) +CREATE src/app/proxy/books/index.ts (57 bytes) +CREATE src/app/proxy/index.ts (33 bytes) ```` > `generate-proxy` command can take some some optional parameters for advanced scenarios (like [modular development](https://docs.abp.io/en/abp/latest/Module-Development-Basics)). You can take a look at the [documentation](https://docs.abp.io/en/abp/latest/UI/Angular/Service-Proxies). -It basically creates two files; +#### The Generated Code -src/app/shared/services/books/**book.service.ts**: This is the service that can be injected and used to get the list of books; +`src/app/proxy/books/book.service.ts`: This is the service that can be injected and used to get the list of books; -````typescript +````js +import type { BookDto } from './models'; import { RestService } from '@abp/ng.core'; import { Injectable } from '@angular/core'; -import type { BookDto } from '../../models/book'; @Injectable({ providedIn: 'root', @@ -170,12 +181,11 @@ export class BookService { constructor(private restService: RestService) {} } - ```` -src/app/shared/models/books/**index.ts**: This file contains the modal classes corresponding to the DTOs defined in the server side; +`src/app/proxy/books/models.ts`: This file contains the modal classes corresponding to the DTOs defined in the server side; -````typescript +````js import type { EntityDto } from '@abp/ng.core'; export interface BookDto extends EntityDto { @@ -184,7 +194,21 @@ export interface BookDto extends EntityDto { } ```` -You can now inject the `BookService` into any Angular component and use the `getList()` method to get the list of books. +> There are a few more files have been generated to help you import the types easier. + +#### How to Import + +You can now import the `BookService` into any Angular component and use the `getList()` method to get the list of books. + +````js +import { BookService, BookDto } from '../proxy/books'; +```` + +You can also use the `@proxy` as a shortcut of the proxy folder: + +````js +import { BookService, BookDto } from '@proxy/books'; +```` ### About the Generated Code @@ -235,27 +259,20 @@ namespace AngularProxyDemo.Books } ``` -Let's re-run the `generate-proxy` command to see the result: - -```` -abp generate-proxy -```` - -The output of this command will be like the following: +Let's re-run the `generate-proxy` command: ````bash -UPDATE src/app/shared/services/books/book.service.ts (660 bytes) -UPDATE src/app/shared/models/books/index.ts (217 bytes) +abp generate-proxy ```` -It tells us two files have been updated. Let's see the changes; +This command will re-generate the proxies by updating some files. Let's see some of the changes; **book.service.ts** -````typescript +````js +import type { BookDto, BookUpdateDto } from './models'; import { RestService } from '@abp/ng.core'; import { Injectable } from '@angular/core'; -import type { BookDto, BookUpdateDto } from '../../models/books'; @Injectable({ providedIn: 'root', @@ -284,7 +301,7 @@ export class BookService { `update` function has been added to the `BookService` that gets an `id` and a `BookUpdateDto` as the parameters. -**index.ts** +**models.ts** ````typescript import type { EntityDto } from '@abp/ng.core'; @@ -358,14 +375,14 @@ namespace AngularProxyDemo.Orders } ```` -When I run the `abp generate-proxy` command again, I see two new files have been created. +When I run the `abp generate-proxy` command again, I see there are some created and updated files. Let's see some important ones; -src/app/shared/services/orders/**order.service.ts** +`src/app/proxy/orders/order.service.ts` -````typescript +````js +import type { OrderCreateDto } from './models'; import { RestService } from '@abp/ng.core'; import { Injectable } from '@angular/core'; -import type { OrderCreateDto } from '../../models/orders'; @Injectable({ providedIn: 'root', @@ -385,16 +402,19 @@ export class OrderService { } ```` -src/app/shared/models/orders/**index.ts** +`src/app/proxy/orders/models.ts` ````typescript -import type { GenericDetailDto } from '../../models/orders'; +export interface GenericDetailDto { + productId: string; + count: TCount; +} export interface OrderCreateDto { customerId: string; creationTime: string; details: OrderDetailDto[]; - extraProperties: string | object; + extraProperties: Record; } export interface OrderDetailDto extends GenericDetailDto { @@ -402,4 +422,10 @@ export interface OrderDetailDto extends GenericDetailDto { } ```` -NOTE: 3.1.0-rc2 was generating the code above, which is wrong. It will be fixed in the next RC versions. \ No newline at end of file +## Conclusion + +`abp generate-proxy` is a very handy command that creates all the necessary code to consume your ABP based backend HTTP APIs. It generates a clean code that is well aligned to the backend services and benefits from the power of TypeScript (by using generics, inheritance...). + +## The Documentation + +See [the documentation](https://docs.abp.io/en/abp/latest/UI/Angular/Service-Proxies) for details of the Angular Service Proxy Generation. \ No newline at end of file From 57a90ad5eb25793f0be12ca169ef35ae41ee3eec Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Sun, 6 Sep 2020 23:01:00 +0800 Subject: [PATCH 297/474] Update Chinese documents. --- .../Authentication/Social-External-Logins.md | 9 +- docs/zh-Hans/CLI.md | 189 +++++++++++++----- docs/zh-Hans/Contribution/Index.md | 28 +-- ...-Application-Modules-Extending-Entities.md | 5 +- docs/zh-Hans/Entities.md | 6 + .../Entity-Framework-Core-Migrations.md | 5 +- docs/zh-Hans/Entity-Framework-Core.md | 5 +- .../Getting-Started-Console-Application.md | 3 - docs/zh-Hans/Global-Features.md | 3 + docs/zh-Hans/How-To/Index.md | 9 - docs/zh-Hans/Local-Event-Bus.md | 2 + docs/zh-Hans/MailKit.md | 1 + docs/zh-Hans/Module-Development-Basics.md | 2 +- docs/zh-Hans/Moodule-Entity-Extensions.md | 3 + docs/zh-Hans/Nightly-Builds.md | 32 +-- docs/zh-Hans/Previews.md | 1 + docs/zh-Hans/Repositories.md | 6 +- docs/zh-Hans/Samples/Index.md | 27 ++- docs/zh-Hans/Startup-Templates/Application.md | 14 ++ docs/zh-Hans/UI/Angular/Environment.md | 1 + docs/zh-Hans/UI/Angular/Migration-Guide-v3.md | 2 +- docs/zh-Hans/UI/Angular/Multi-Tenancy.md | 1 + .../UI/Angular/Permission-Management.md | 4 +- docs/zh-Hans/UI/Angular/Toaster-Service.md | 8 +- .../Customization-User-Interface.md | 2 +- docs/zh-Hans/Upgrading.md | 1 + docs/zh-Hans/Virtual-File-System.md | 105 ++++++---- docs/zh-Hans/docs-nav.json | 52 +++-- docs/zh-Hans/images/replace-email-layout.png | Bin 0 -> 31878 bytes .../zh-Hans/images/solution-files-non-mvc.png | Bin 5658 -> 3043 bytes 30 files changed, 332 insertions(+), 194 deletions(-) delete mode 100644 docs/zh-Hans/Getting-Started-Console-Application.md create mode 100644 docs/zh-Hans/Global-Features.md delete mode 100644 docs/zh-Hans/How-To/Index.md create mode 100644 docs/zh-Hans/MailKit.md create mode 100644 docs/zh-Hans/Moodule-Entity-Extensions.md create mode 100644 docs/zh-Hans/Previews.md create mode 100644 docs/zh-Hans/UI/Angular/Environment.md create mode 100644 docs/zh-Hans/UI/Angular/Multi-Tenancy.md create mode 100644 docs/zh-Hans/Upgrading.md create mode 100644 docs/zh-Hans/images/replace-email-layout.png diff --git a/docs/zh-Hans/Authentication/Social-External-Logins.md b/docs/zh-Hans/Authentication/Social-External-Logins.md index 3d599a962d..55ab97374c 100644 --- a/docs/zh-Hans/Authentication/Social-External-Logins.md +++ b/docs/zh-Hans/Authentication/Social-External-Logins.md @@ -1,10 +1,9 @@ # 社交/外部登录 -## ASP.NET Core MVC / Razor Pages UI [帐户模块](../Modules/Account.md)已配置为开箱即用的处理社交或外部登录. 你可以按照ASP.NET Core文档向你的应用程序添加社交/外部登录提供程序. -### 示例: Facebook 认证 +## 示例: Facebook 认证 按照[ASP.NET Core Facebook集成文档](https://docs.microsoft.com/zh-cn/aspnet/core/security/authentication/social/facebook-logins)向你应用程序添加Facebook登录. @@ -27,4 +26,8 @@ context.Services.AddAuthentication() }); ```` -> 最佳实践是使用 `appsettings.json` 或ASP.NET Core用户机密系统来存储你的凭据,而不是像这样硬编码值. 请参阅[微软](https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/facebook-logins)文档了解如何使用用户机密. \ No newline at end of file +> 最佳实践是使用 `appsettings.json` 或ASP.NET Core用户机密系统来存储你的凭据,而不是像这样硬编码值. 请参阅[微软](https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/facebook-logins)文档了解如何使用用户机密. + +## Angular UI + +从v3.1开始,Angular UI使用授权码流程(作为最佳实践)通过重定向到MVC UI登录页面来对用户进行身份验证. 因此,即使你使用的是Angular UI,社交/外部登录集成也与上面说明的相同.并且可以开箱即用. \ No newline at end of file diff --git a/docs/zh-Hans/CLI.md b/docs/zh-Hans/CLI.md index 82a72ec7ed..20afc1b50f 100644 --- a/docs/zh-Hans/CLI.md +++ b/docs/zh-Hans/CLI.md @@ -16,6 +16,12 @@ dotnet tool install -g Volo.Abp.Cli dotnet tool update -g Volo.Abp.Cli ```` +## 全局选项 + +虽然每个命令可能都有一组选项,但有些全局选项可以与任何命令一起使用: + +* `--skip-cli-version-check`: 跳过检查最新版本的ABP CLI. 如果没有指定,它会检查最新版本,如果检查到ABP CLI的新版本,会显示一条警告消息. + ## Commands 这里是所有可用的命令列表: @@ -25,7 +31,9 @@ dotnet tool update -g Volo.Abp.Cli * **`update`**:自动更新的ABP解决方案ABP相关的NuGet和NPM包. * **`add-package`**: 添加ABP包到项目. * **`add-module`**: 添加[应用模块](https://docs.abp.io/en/abp/latest/Modules/Index)到解决方案. -* **`generate-proxy`**: 生成客户端代理以使用服务器上的HTTP API端点. +* **`generate-proxy`**: 生成客户端代理以使用HTTP API端点. +* **`remove-proxy`**: 移除以前生成的客户端代理. +* **`switch-to-preview`**: 切换到ABP框架的最新预览版本。 * **`switch-to-preview`**: 切换解决方案所有ABP相关包为[夜间构建](Nightly-Builds.md)版本. * **`switch-to-stable`**: 切换解决方案所有ABP相关包为最新的稳定版本. * **`translate`**: 当源代码控制存储库中有多个JSON[本地化](Localization.md文件时,可简化翻译本地化文件的过程. @@ -90,12 +98,33 @@ abp new Acme.BookStore * **`console`**: [Console template](Startup-Templates/Console.md). * `--output-folder` 或者 `-o`: 指定输出文件夹,默认是当前目录. * `--version` 或者 `-v`: 指定ABP和模板的版本.它可以是 [release tag](https://github.com/abpframework/abp/releases) 或者 [branch name](https://github.com/abpframework/abp/branches). 如果没有指定,则使用最新版本.大多数情况下,你会希望使用最新的版本. -* `--preview`: 使用最新的预发行版本 (仅在未指定 `--version` 且最新稳定版本之后至少有一个预发行版时). +* `--preview`: 使用最新的预览版本. * `--template-source` 或者 `-ts`: 指定自定义模板源用于生成项目,可以使用本地源和网络源(例如 `D:\local-templat` 或 `https://.../my-template-file.zip`). * `--create-solution-folder` 或者 `-csf`: 指定项目是在输出文件夹中的新文件夹中还是直接在输出文件夹中. * `--connection-string` 或者 `-cs`: 重写所有 `appsettings.json` 文件的默认连接字符串. 默认连接字符串是 `Server=localhost;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true`. 默认的数据库提供程序是 `SQL Server`. 如果你使用EF Core但需要更改DBMS,可以按[这里所述](Entity-Framework-Core-Other-DBMS.md)进行更改(创建解决方案之后). * `--local-framework-ref --abp-path`: 使用对项目的本地引用,而不是替换为NuGet包引用. +### update + +更新所有ABP相关的包可能会很繁琐,框架和模块都有很多包. 此命令自动将解决方案或项目中所有ABP相关的包更新到最新版本. + +用法: + +````bash +abp update [options] +```` + +* 如果你的文件夹中有.sln文件,运行命令会将解决方案中所有项目ABP相关的包更新到最新版本. +* 如果你的文件夹中有.csproj文件,运行命令会将项目中所有ABP相关的包更新到最新版本. + +#### Options + +* `--npm`: 仅更新NPM包 +* `--nuget`: 仅更新的NuGet包 +* `--solution-path` 或 `-sp`: 指定解决方案路径/目录. 默认使用当前目录 +* `--solution-name` 或 `-sn`: 指定解决方案名称. 默认在目录中搜索`*.sln`文件. +*`--check-all`: 分别检查每个包的新版本. 默认是 `false`. + ### add-package 通过以下方式将ABP包添加到项目中 @@ -150,105 +179,157 @@ abp add-module Volo.Blogging * `-sp` 或 `--startup-project`: 启动项目的项目文件夹的相对路径. 默认值是当前文件夹. * `--with-source-code`: 添加模块的源代码,而不是NuGet/NPM软件包. -### update +### generate-proxy -更新所有ABP相关的包可能会很繁琐,框架和模块都有很多包. 此命令自动将解决方案或项目中所有ABP相关的包更新到最新版本. +为您的HTTP API生成Angular服务代理,简化从客户端使用服务的成本. 在运行此命令之前,你的host必须启动正在运行. 用法: ````bash -abp update [options] +abp generate-proxy ```` -* 如果你的文件夹中有.sln文件,运行命令会将解决方案中所有项目ABP相关的包更新到最新版本. -* 如果你的文件夹中有.csproj文件,运行命令会将项目中所有ABP相关的包更新到最新版本. - #### Options -* `--include-previews` 或 `-p`: 将预览版, 测试版本 和 rc 包 同时更新到最新版本. -* `--npm`: 仅更新NPM包 -* `--nuget`: 仅更新的NuGet包 -* `--solution-path` 或 `-sp`: 指定解决方案路径/目录. 默认使用当前目录 -* `--solution-name` 或 `-sn`: 指定解决方案名称. 默认在目录中搜索`*.sln`文件. -*`--check-all`: 分别检查每个包的新版本. 默认是 `false`. - -### 切换到每晚构建(预览)包 +* `--module` 或 `-m`: 指定要为其生成代理的后端模块的名称. 默认值: `app`. +* `--api-name` 或 `-a`: 在 `/src/environments/environment.ts` 中定义的API端点名称。. 默认值: `default`. +* `--source` 或 `-s`: 指定解析根名称空间和API定义URL的Angular项目名称. 默认值: `defaultProject` +* `--target` 或 `-t`: 指定放置生成的代码的Angular项目名称. 默认值: `defaultProject`. +* `--prompt` 或 `-p`: 在命令行提示符下询问选项(未指定的选项). -想要切换到ABP框架的最新**每晚构建**预览版可以使用此命令. +> 参阅 [Angular服务代理文档](UI/Angular/Service-Proxies.md) 了解更多. -用法: +### remove-proxy -````bash -abp switch-to-nightly [options] -```` +从Angular应用程序中删除以前生成的代理代码. 在运行此命令之前,你的host必须启动正在运行. -你也可以使用切换回最新稳定版本: +This can be especially useful when you generate proxies for multiple modules before and need to remove one of them later. + +Usage: ````bash -abp switch-to-stable [options] +abp remove-proxy ```` #### Options -`--solution-directory` 或 `-sd`: 指定解决方案文件夹. 解决方案应该在指定文件夹或子文件夹中. 如果未指定,默认为当前目录. +* `--module` 或 `-m`: 指定要为其生成代理的后端模块的名称. 默认值: `app`. +* `--api-name` 或 `-a`: 在 `/src/environments/environment.ts` 中定义的API端点名称。. 默认值: `default`. +* `--source` 或 `-s`: 指定解析根名称空间和API定义URL的Angular项目名称. 默认值: `defaultProject` +* `--target` 或 `-t`: 指定放置生成的代码的Angular项目名称. 默认值: `defaultProject`. +* `--prompt` 或 `-p`: 在命令行提示符下询问选项(未指定的选项). -### login +> 参阅 [Angular服务代理文档](UI/Angular/Service-Proxies.md) 了解更多. -CLI的一些功能需要登录到abp.io平台. 使用你的用户名登录 +### switch-to-preview -```bash -abp login -``` +你可以使用此命令将项目切换到ABP框架的最新预览版本. -```bash -abp login -p -``` - -请注意,新的登录将终止先前的会话并创建一个新的会话. - -### logout +用法: -通过从计算机中删除会话令牌来注销. +````bash +abp switch-to-preview [options] +```` -``` -abp logout -``` +#### Options -### generate-proxy +* `--solution-directory` 或 `-sd`: 指定目录. 解决方案应该在该目录或其子目录中. 如果未指定默认为当前目录. + +### switch-to-nightly -为你的HTTP API生成客户端代码,简化客户端使用服务的成本. 在运行 `generate-proxy` 命令之前,你的host必须启动正在运行. +想要切换到ABP框架的最新[每晚构建](Nightly-Builds.md)预览版可以使用此命令. 用法: ````bash -abp generate-proxy [options] +abp switch-to-nightly [options] ```` #### Options -* `--apiUrl` 或者 `-a`:指定HTTP API的根URL. 如果未指定这个选项,默认使用你Angular应用程序的`environment.ts`文件API URL. 在运行 `generate-proxy` 命令之前,你的host必须启动正在运行. -* `--ui` 或者 `-u`: 指定UI框架,默认框架是angular.当前只有angular一个选项, 但我们会通过更改CLI增加新的选项. 尽请关注! -* `--module` 或者 `-m`:指定模块名. 默认模块名称为app. 如果你想所有模块,你可以指定 `--module all` 命令. +`--solution-directory` 或 `-sd`: 指定目录. 解决方案应该在该目录或其子目录中. 如果未指定默认为当前目录. -示例: +### switch-to-stable + +如果你使用的是ABP框架预览包(包括每晚构建),可以使用此命令切换回最新的稳定版本. + +用法: ````bash -abp generate-proxy --apiUrl https://localhost:44305 --ui angular --module all +abp switch-to-stable [options] ```` +#### Options -### help +`--solution-directory` 或 `-sd`: 指定目录. 解决方案应该在该目录或其子目录中. 如果未指定默认为当前目录. -CLI的基本用法信息. +### translate -用法: + +源代码控制存储库中有多个JSON[本地化](Localization.md)文件时,用于简化翻译[本地化](Localization.md)文件的过程. + +* 该命令将基于参考文化创建一个统一的json文件 +* 它搜索当前目录和所有子目录中的所有本地化"JSON"文件(递归). 然后创建一个包含所有需要翻译的条目的文件(默认情况下名为 "abp-translation.json"). +* 翻译了此文件中的条目后,你就可以使用 `--apply` 命令将更改应用于原始本地化文件. + +> 该命令的主要目的是翻译ABP框架本地化文件(因为[abp仓库](https://github.com/abpframework/abp)包括数十个要在不同目录中转换的本地化文件). + +#### 创建翻译文件 + +第一步是创建统一的翻译文件: ````bash -abp help [命令名] +abp translate -c [options] ```` 示例: ````bash -abp help # 显示常规帮助. -abp help new # 显示有关 "New" 命令的帮助. +abp translate -c de-DE ```` + +该命令为 `de-DE` (德语)文化创建了统一的翻译文件. + +##### 附加选项 + +* `--reference-culture` 或 `-r`: 默认值 `en`. 指定参考文化. +* `--output` 或 `-o`: 输出文件名. 默认值 `abp-translation.json`. +* `--all-values` 或 `-all`: 包括所有要翻译的键. 默认情况下,统一翻译文件仅包含目标文化的缺失文本. 如果你可能需要修改之前已经翻译的值,请指定此参数. + +#### 应用更改 + + +翻译完统一翻译文件中的条目后,你可以使用 `--apply` 参数将更改应用于原始本地化文件: + +````bash +abp translate --apply # apply all changes +abp translate -a # shortcut for --apply +```` + +然后,检查源代码控制系统上的更改,以确保它已更改了正确的文件. 如果你翻译了ABP框架资源, 请发送 "Pull Request". 提前感谢你的贡献. + +##### 附加选项 + +* `--file` 或 `-f`: 默认值: `abp-translation.json`. 翻译文件(仅在之前使用过 `--output` 选项时使用). + +### login + +CLI的一些功能需要登录到abp.io平台. 使用你的用户名登录 + +```bash +abp login # Allows you to enter your password hidden +abp login -p # Specify the password as a parameter (password is visible) +abp login --organization # If you have multiple organizations, you need set your active organization +abp login -p -o # You can enter both your password and organization in the same command +``` + +> 当使用-p参数,请注意,因为你的密码是可见的. 它对于CI / CD自动化管道很有用. + +请注意,新的登录将终止先前的会话并创建一个新的会话. + +### logout + +通过从计算机中删除会话令牌来注销. + +``` +abp logout +``` diff --git a/docs/zh-Hans/Contribution/Index.md b/docs/zh-Hans/Contribution/Index.md index f3bafe9293..7b1c3544ef 100644 --- a/docs/zh-Hans/Contribution/Index.md +++ b/docs/zh-Hans/Contribution/Index.md @@ -1,8 +1,12 @@ -## 贡献指南 +# 贡献指南 ABP是[开源](https://github.com/abpframework)和社区驱动项目. 本指南旨在帮助任何想要为项目做出贡献的人. -### 贡献代码 +## community.abp.io + +如果你可编写文章或关于ASP框架和ASP.NET Core的 "如何" 指南,请提交你的文章到[community.abp.io](https://community.abp.io/)网站. + +## 贡献代码 你可以将Pull request(拉取请求)发送到Github存储库. @@ -12,15 +16,15 @@ ABP是[开源](https://github.com/abpframework)和社区驱动项目. 本指南 在进行任何更改之前,请在[Github问题](https://github.com/abpframework/abp/issues)上进行讨论. 通过这种方式, 其他开发人员将不会处理同一个问题, 你的PR将有更好的机会被接受. -#### Bug修复 & 增强功能 +### Bug修复 & 增强功能 你可能希望修复已知Bug或处理计划的增强功能. 请参阅Github上的[问题列表](https://github.com/abpframework/abp/issues). -#### 功能请求 +### 功能请求 如果你对框架或模块有功能的想法, 请在Github上[创建一个问题](https://github.com/abpframework/abp/issues/new)或参加现有的讨论. 如果它被社区所接受你就可以实现它. -### 文档翻译 +## 文档翻译 你可能希望将完整的[文档](https://abp.io/documents/)(包括本文)翻译成你的母语. 请按照下列步骤操作: @@ -37,13 +41,13 @@ ABP是[开源](https://github.com/abpframework)和社区驱动项目. 本指南 完成了这些基本的翻译后,将添加一种新的语言 -### 资源本地化 +## 资源本地化 ABP框架具有灵活的[本地化系统](../Localization.md). 你可以为自己的应用程序创建本地化用户界面. 除此之外,框架和预构建模块已经本地化了文本.请参阅[Volo.Abp.UI包的本地化文本](https://github.com/abpframework/abp/blob/master/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json). -#### 使用 "abp translate" 命令 +### 使用 "abp translate" 命令 这是推荐的方法,因为它会自动查找所有缺少的文本的特定文化,让你在一个地方翻译. @@ -54,14 +58,10 @@ ABP框架具有灵活的[本地化系统](../Localization.md). 你可以为自 * 一旦你完成了翻译,使用 `abp translate -a` 命令应用更改到相关的文件. * 在GitHub上发送PR. -#### 手动翻译 - -如果你想更改特定的资源文件,你可以自己找到这个文件进行必要的更改(或为你的语言创建新文件),并在GitHub上发送PR。 - -### 博客文章和教程 +### 手动翻译 -如果你发布了一些ABP框架的教程或博客帖子, 请通知我们(通过创建[Github问题](https://github.com/abpframework/abp/issues)), 我们可能会在官方文档中添加指向你的教程或博客帖子的链接和在[推特](https://twitter.com/abpframework)上公布. +如果你想更改特定的资源文件,你可以自己找到这个文件进行必要的更改(或为你的语言创建新文件),并在GitHub上发送PR. -### Bug 报告 +## Bug 报告 如果你发现任何Bug, 请[在Github存储库上创建一个问题](https://github.com/abpframework/abp/issues/new). \ No newline at end of file diff --git a/docs/zh-Hans/Customizing-Application-Modules-Extending-Entities.md b/docs/zh-Hans/Customizing-Application-Modules-Extending-Entities.md index 3e5ff3f6cd..6c895f71d2 100644 --- a/docs/zh-Hans/Customizing-Application-Modules-Extending-Entities.md +++ b/docs/zh-Hans/Customizing-Application-Modules-Extending-Entities.md @@ -43,7 +43,10 @@ return user.GetProperty("Title"); ObjectExtensionManager.Instance .MapEfCoreProperty( "SocialSecurityNumber", - b => { b.HasMaxLength(32); } + (entityBuilder, propertyBuilder) => + { + propertyBuilder.HasMaxLength(32); + } ); ```` diff --git a/docs/zh-Hans/Entities.md b/docs/zh-Hans/Entities.md index 190088753f..23ca3e73f0 100644 --- a/docs/zh-Hans/Entities.md +++ b/docs/zh-Hans/Entities.md @@ -226,6 +226,12 @@ ABP框架不强制你应用任何DDD规则或模式.但是,当你准备应用的 虽然这种聚合根并不常见(也不建议使用),但实际上可以按照与上面提到的跟实体相同的方式定义复合键.在这种情况下,要使用非泛型的`AggregateRoot`基类. +### BasicAggregateRoot类 + +`AggregateRoot` 类实现了 `IHasExtraProperties` 和 `IHasConcurrencyStamp` 接口,这为派生类带来了两个属性. `IHasExtraProperties` 使实体可扩展(请参见下面的 *额外的属性*部分) 和 `IHasConcurrencyStamp` 添加了由ABP框架管理的 `ConcurrencyStamp` 属性实现[乐观并发](https://docs.microsoft.com/zh-cn/ef/core/saving/concurrency). 在大多数情况下,这些是聚合根需要的功能. + +但是,如果你不需要这些功能,你的聚合根可以继承 `BasicAggregateRoot`(或`BasicAggregateRoot`). + ## 基类和接口的审计属性 有一些属性,像`CreationTime`,`CreatorId`,`LastModificationTime`...在所有应用中都很常见. ABP框架提供了一些接口和基类来**标准化**这些属性,并**自动设置它们的值**. diff --git a/docs/zh-Hans/Entity-Framework-Core-Migrations.md b/docs/zh-Hans/Entity-Framework-Core-Migrations.md index 876d98721b..c6f1086540 100644 --- a/docs/zh-Hans/Entity-Framework-Core-Migrations.md +++ b/docs/zh-Hans/Entity-Framework-Core-Migrations.md @@ -414,7 +414,10 @@ public static class MyProjectNameEntityExtensions ObjectExtensionManager.Instance .MapEfCoreProperty( "Title", - builder => { builder.HasMaxLength(64); } + (entityBuilder, propertyBuilder) => + { + propertyBuilder.HasMaxLength(128); + } ); }); } diff --git a/docs/zh-Hans/Entity-Framework-Core.md b/docs/zh-Hans/Entity-Framework-Core.md index 5ae6ce1070..211ec4d65f 100644 --- a/docs/zh-Hans/Entity-Framework-Core.md +++ b/docs/zh-Hans/Entity-Framework-Core.md @@ -325,7 +325,10 @@ public class BookService ObjectExtensionManager.Instance .MapEfCoreProperty( "Title", - builder => { builder.HasMaxLength(64); } + (entityBuilder, propertyBuilder) => + { + propertyBuilder.HasMaxLength(64); + } ); ```` diff --git a/docs/zh-Hans/Getting-Started-Console-Application.md b/docs/zh-Hans/Getting-Started-Console-Application.md deleted file mode 100644 index 1bf48cefd4..0000000000 --- a/docs/zh-Hans/Getting-Started-Console-Application.md +++ /dev/null @@ -1,3 +0,0 @@ -## 在控制台应用中使用ABP - -ABP提供了控制台应用程序启动模板. 参阅[控制台应用程序启动模板]文档了解更多信息. \ No newline at end of file diff --git a/docs/zh-Hans/Global-Features.md b/docs/zh-Hans/Global-Features.md new file mode 100644 index 0000000000..776d4e0718 --- /dev/null +++ b/docs/zh-Hans/Global-Features.md @@ -0,0 +1,3 @@ +# Global Features + +TODO... \ No newline at end of file diff --git a/docs/zh-Hans/How-To/Index.md b/docs/zh-Hans/How-To/Index.md deleted file mode 100644 index 3190ced7ca..0000000000 --- a/docs/zh-Hans/How-To/Index.md +++ /dev/null @@ -1,9 +0,0 @@ -# "如何" 指南 - -本部分包含一些常见问题的 "如何" 指南. 尽管其中是一些常见的开发任务和ABP并不直接相关,但我们认为有一些具体的示例可以直接与基于ABP的应用程序一起使用. - -## Authentication - -* [如何为MVC / Razor页面应用程序自定义登录页面](Customize-Login-Page-MVC.md) -* [如何对MVC / Razor页面应用程序使用Azure Active Directory身份验证](Azure-Active-Directory-Authentication-MVC.md) -* [如何为ABP应用程序定制SignIn Manager](Customize-SignIn-Manager.md) \ No newline at end of file diff --git a/docs/zh-Hans/Local-Event-Bus.md b/docs/zh-Hans/Local-Event-Bus.md index 44e21d0384..3a955e90d7 100644 --- a/docs/zh-Hans/Local-Event-Bus.md +++ b/docs/zh-Hans/Local-Event-Bus.md @@ -156,6 +156,8 @@ namespace AbpDemo > 事件处理程序类必须注册到依赖注入(DI),示例中使用了 `ITransientDependency`. 参阅[DI文档](Dependency-Injection.md)了解更多选项. +如果您执行**数据库操作**并在事件处理程序中使用[仓储](Repositories.md),那么您可能需要创建一个[工作单元](Unit-Of-Work.md),因为一些存储库方法需要在**活动的工作单元**中工作. 确保处理方法设置为 `virtual`,并为该方法添加一个 `[UnitOfWork]` attribute. 或者手动使用 `IUnitOfWorkManager` 创建一个工作单元范围. + ## 事务和异常行为 当一个事件发布,订阅的事件处理程序将立即执行.所以; diff --git a/docs/zh-Hans/MailKit.md b/docs/zh-Hans/MailKit.md new file mode 100644 index 0000000000..cb82a640d5 --- /dev/null +++ b/docs/zh-Hans/MailKit.md @@ -0,0 +1 @@ +TODO... \ No newline at end of file diff --git a/docs/zh-Hans/Module-Development-Basics.md b/docs/zh-Hans/Module-Development-Basics.md index e43c57d0b2..1e1e9a42cd 100644 --- a/docs/zh-Hans/Module-Development-Basics.md +++ b/docs/zh-Hans/Module-Development-Basics.md @@ -1,4 +1,4 @@ -## 模块开发 +## 模块化 ### 介绍 diff --git a/docs/zh-Hans/Moodule-Entity-Extensions.md b/docs/zh-Hans/Moodule-Entity-Extensions.md new file mode 100644 index 0000000000..6e8c73c2a2 --- /dev/null +++ b/docs/zh-Hans/Moodule-Entity-Extensions.md @@ -0,0 +1,3 @@ +# Module Entity Extensions + +参阅 https://docs.abp.io/en/commercial/latest/guides/module-entity-extensions (文档会在近期完成). \ No newline at end of file diff --git a/docs/zh-Hans/Nightly-Builds.md b/docs/zh-Hans/Nightly-Builds.md index 020d69e02e..14a5b8ad8c 100644 --- a/docs/zh-Hans/Nightly-Builds.md +++ b/docs/zh-Hans/Nightly-Builds.md @@ -2,40 +2,18 @@ 所有框架和模块包每晚都部署到MyGet. 因此你可以使用或测试最新的代码,而无需等待下一个版本. -## 在Visual Studio配置 +## 安装和卸载每晚预览包 -> 需要Visual Studio 2017以上 - -1. 在VS中打开: `工具 > 选项 > NuGet 包管理器 > 程序包源` -2. 单击绿色的`+`图标 -3. 在底部输入名称(ABP Nightly)和并粘贴URL(`https://www.myget.org/F/abp-nightly/api/v3/index.json`)到源上. - ![night-build-add-nuget-source](images/night-build-add-nuget-source.png) -3. 单击`更新`按钮 -4. 点击`确定`按钮保存 - -## 安装包 - -现在, 你可以从**管理NuGet包** 或 **程序包管理器控制台** 将预览/夜间程序包安装到你的项目中. - -![night-build-add-nuget-package](images/night-build-add-nuget-package.png) - -1. 在nuget浏览中,选择"包括预发行版". -2. 将包源更改为`全部`. -3. 搜索nuget包. 你将看到包的预发布格式为`(VERSION)-preview(DATE)` (如本示例中的**v0.16.0-preview20190401**). -4. 你可以单击`安装`按钮将包添加到项目中. - -## 安装和卸载预览NPM包 - -预览NPM包的最新版本可以通过在应用程序的根文件夹命令运行命令安装: +可以通过在应用程序的根文件夹中运行以下命令安装最新版本的夜间预览软件包: ```bash -abp switch-to-preview --npm +abp switch-to-nightly ``` -如果你正在使用ABP框架预览包,你可以使用此命令切换回稳定版本: +如果你正在使用ABP框架每晚预览包,你可以使用此命令切换回稳定版本: ```bash -abp switch-to-stable --npm +abp switch-to-stable ``` 参阅 [ABP CLI 文档](./CLI.md) 了解更多信息. \ No newline at end of file diff --git a/docs/zh-Hans/Previews.md b/docs/zh-Hans/Previews.md new file mode 100644 index 0000000000..cb82a640d5 --- /dev/null +++ b/docs/zh-Hans/Previews.md @@ -0,0 +1 @@ +TODO... \ No newline at end of file diff --git a/docs/zh-Hans/Repositories.md b/docs/zh-Hans/Repositories.md index ee48186985..79186b79da 100644 --- a/docs/zh-Hans/Repositories.md +++ b/docs/zh-Hans/Repositories.md @@ -6,7 +6,11 @@ ## 通用(泛型)仓储 -ABP为每个聚合根或实体提供了 **默认的通用(泛型)仓储** . 你可以在服务中[注入](Dependency-Injection.md) `IRepository` 使用标准的**CRUD**操作. 用法示例: +ABP为每个聚合根或实体提供了 **默认的通用(泛型)仓储** . 你可以在服务中[注入](Dependency-Injection.md) `IRepository` 使用标准的**CRUD**操作. + +> 数据库提供程序层应正确配置为能够使用默认的通用存储库. 如果你已经使用启动模板创建了项目,则这些配置 **已经完成**了. 如果不是,请参考数据库提供程序文档([EF Core](Entity-Framework-Core.md) / [MongoDB](MongoDB.md))进行配置. + +**默认通用仓储用法示例:** ````C# public class PersonAppService : ApplicationService diff --git a/docs/zh-Hans/Samples/Index.md b/docs/zh-Hans/Samples/Index.md index 94e5392b51..db2e680883 100644 --- a/docs/zh-Hans/Samples/Index.md +++ b/docs/zh-Hans/Samples/Index.md @@ -15,17 +15,14 @@ 一个简单的CRUD应用程序,展示了使用ABP框架开发应用程序的基本原理. 使用不同的技术实现了相同的示例: * **Book Store: Razor Pages UI & Entity Framework Core** - - * [教程](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC) - * [源码](https://github.com/abpframework/abp-samples/tree/master/BookStore) + * [教程](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC&DB=EF) + * [源码](https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-EfCore) * **Book Store: Angular UI & MongoDB** - - * [教程](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=NG) + * [教程](https://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=NG&DB=Mongo) * [源码](https://github.com/abpframework/abp-samples/tree/master/BookStore-Angular-MongoDb) * **Book Store: Modular application (Razor Pages UI & EF Core)** - * [源码](https://github.com/abpframework/abp-samples/tree/master/BookStore-Modular) 如果没有Razor Pages & MongoDB 结合,但你可以检查两个文档来理解它,因为DB和UI不会互相影响. @@ -33,11 +30,14 @@ ### 其他示例 * **Entity Framework 迁移**: 演示如何将应用程序拆分为多个数据库的解决方案. 每个数据库包含不同的模块. - * [源码](https://github.com/abpframework/abp-samples/tree/master/DashboardDemo) + * [源码](https://github.com/abpframework/abp-samples/tree/master/EfCoreMigrationDemo) * [EF Core数据库迁移文档](../Entity-Framework-Core-Migrations.md) * **SignalR Demo**: A simple chat application that allows to send and receive messages among authenticated users. * [源码](https://github.com/abpframework/abp-samples/tree/master/SignalRDemo) * [SignalR 集成文档](../SignalR-Integration.md) +* **分布式架构中的实时消息** (使用 SingalR & RabbitMQ) + * [源码](https://github.com/abpframework/abp-samples/tree/master/SignalRTieredDemo) + * [文章](https://community.abp.io/articles/real-time-messaging-in-a-distributed-architecture-using-abp-framework-singalr-rabbitmq-daf47e17) * **Dashboard Demo**: 一个简单的应用程序,展示了如何在ASP.NET Core MVC UI中使用widget系统. * [源码](https://github.com/abpframework/abp-samples/tree/master/DashboardDemo) * [Widget 文档](../UI/AspNetCore/Widgets.md) @@ -50,15 +50,20 @@ * [文本模板文档](../Text-Templating.md) * **存储过程 Demo**: 演示如何以最佳实践使用存储过程,数据库视图和函数. * [源码](https://github.com/abpframework/abp-samples/tree/master/StoredProcedureDemo) +* **无密码认证**: 演示如何添加自定义令牌提供者使用链接验证用户身份,而不是输入密码. + * [源码](https://github.com/abpframework/abp-samples/tree/master/PasswordlessAuthentication) + * [文章](https://community.abp.io/articles/implementing-passwordless-authentication-with-asp.net-core-identity-c25l8koj) * **自定义认证**: 如何为ASP.NET Core MVC / Razor Pages应用程序自定义身份验证的解决方案. * [源码](https://github.com/abpframework/abp-samples/tree/master/Authentication-Customization) - * 相关 "[How To](../How-To/Index.md)" 文档: - * [Azure Active Directory 认证](../How-To/Azure-Active-Directory-Authentication-MVC.md) - * [自定义登录页面](../How-To/Customize-Login-Page-MVC.md) - * [自定义 SignIn Manager](../How-To/Customize-SignIn-Manager.md) + * 相关文章: + * [Azure Active Directory 认证](https://community.abp.io/articles/how-to-use-the-azure-active-directory-authentication-for-mvc-razor-page-applications-4603b9cf) + * [自定义登录页面](https://community.abp.io/articles/how-to-customize-the-login-page-for-mvc-razor-page-applications-9a40f3cd) + * [自定义 SignIn Manager](https://community.abp.io/articles/how-to-customize-the-signin-manager-3e858753) * **空的ASP.NET Core应用程序**: 从基本的ASP.NET Core应用程序使用ABP框架. * [源码](https://github.com/abpframework/abp-samples/tree/master/BasicAspNetCoreApplication) * [文档](../Getting-Started-AspNetCore-Application.md) +* **GRPC Demo**: 演示如何将gRPC服务添加到基于ABP框架的Web应用程序以及如何从控制台应用程序使用它. + * [源码](https://github.com/abpframework/abp-samples/tree/master/GrpcDemo) * **空的控制台应用程序**: 从基本的控制台应用程序安装ABP框架. * [源码](https://github.com/abpframework/abp-samples/tree/master/BasicConsoleApplication) * [文档](../Getting-Started-Console-Application.md) \ No newline at end of file diff --git a/docs/zh-Hans/Startup-Templates/Application.md b/docs/zh-Hans/Startup-Templates/Application.md index 534a26d8fb..58287cef5a 100644 --- a/docs/zh-Hans/Startup-Templates/Application.md +++ b/docs/zh-Hans/Startup-Templates/Application.md @@ -59,6 +59,20 @@ abp new Acme.BookStore -d mongodb ### 指定移动应用程序框架 +此模板支持以下移动应用程序框架: + +- `react-native`: React Native + +使用 `-m` (或 `--mobile`) 选项指定移动应用程序框架: + +````bash +abp new Acme.BookStore -m react-native +```` + +如果未指定,不会创建移动应用程序. + +### 指定移动应用程序框架 + 该模板支持以下移动应用程序框架: - `react-native`: React Native diff --git a/docs/zh-Hans/UI/Angular/Environment.md b/docs/zh-Hans/UI/Angular/Environment.md new file mode 100644 index 0000000000..cb82a640d5 --- /dev/null +++ b/docs/zh-Hans/UI/Angular/Environment.md @@ -0,0 +1 @@ +TODO... \ No newline at end of file diff --git a/docs/zh-Hans/UI/Angular/Migration-Guide-v3.md b/docs/zh-Hans/UI/Angular/Migration-Guide-v3.md index eb16c21e03..fd40affc55 100644 --- a/docs/zh-Hans/UI/Angular/Migration-Guide-v3.md +++ b/docs/zh-Hans/UI/Angular/Migration-Guide-v3.md @@ -450,4 +450,4 @@ export function switchLogos(store: Store) { ## 下一步是什么? -* [服务代理](Service-Proxies.md) \ No newline at end of file +* [环境](./Environment.md) \ No newline at end of file diff --git a/docs/zh-Hans/UI/Angular/Multi-Tenancy.md b/docs/zh-Hans/UI/Angular/Multi-Tenancy.md new file mode 100644 index 0000000000..cb82a640d5 --- /dev/null +++ b/docs/zh-Hans/UI/Angular/Multi-Tenancy.md @@ -0,0 +1 @@ +TODO... \ No newline at end of file diff --git a/docs/zh-Hans/UI/Angular/Permission-Management.md b/docs/zh-Hans/UI/Angular/Permission-Management.md index 7f28035105..08496f03fe 100644 --- a/docs/zh-Hans/UI/Angular/Permission-Management.md +++ b/docs/zh-Hans/UI/Angular/Permission-Management.md @@ -4,7 +4,7 @@ 你可以使用 `ConfigState` 的 `getGrantedPolicy` 选择器获取经过身份验证的用户的权限. -你可以从Store中获取权限的布尔值: +你可以获取权限的布尔值: ```js import { Store } from '@ngxs/store'; @@ -78,4 +78,4 @@ const routes: Routes = [ ## 下一步是什么? -* [确认弹层](./Confirmation-Service.md) \ No newline at end of file +* [多租户](./Multi-Tenancy.md) \ No newline at end of file diff --git a/docs/zh-Hans/UI/Angular/Toaster-Service.md b/docs/zh-Hans/UI/Angular/Toaster-Service.md index 045cf9f2cf..405e1b6400 100644 --- a/docs/zh-Hans/UI/Angular/Toaster-Service.md +++ b/docs/zh-Hans/UI/Angular/Toaster-Service.md @@ -24,7 +24,7 @@ class DemoComponent { ### 如何显示一个Toast Overlay ```js -this.toast.success('Message', 'Title'); +this.toaster.success('Message', 'Title'); ``` - `ToasterService` 方法接收三个参数,分别是 `message`, `title`, 和 `options`. @@ -70,9 +70,9 @@ const options: Partial = { 已打开的toast overlay可以通过手动调用 `remove` 方法传递指定的 toast `id`删除. ```js -const toastId = this.toast.success('Message', 'Title') +const toastId = this.toaster.success('Message', 'Title') -this.toast.remove(toastId); +this.toaster.remove(toastId); ``` ### 如何删除所有的Toasts @@ -80,7 +80,7 @@ this.toast.remove(toastId); 可以手动调用 `clear` 方法删除所有的已打开的toasts. ```js -this.toast.clear(); +this.toaster.clear(); ``` ## API diff --git a/docs/zh-Hans/UI/AspNetCore/Customization-User-Interface.md b/docs/zh-Hans/UI/AspNetCore/Customization-User-Interface.md index c4a90a9f1a..7daf6c5d4b 100644 --- a/docs/zh-Hans/UI/AspNetCore/Customization-User-Interface.md +++ b/docs/zh-Hans/UI/AspNetCore/Customization-User-Interface.md @@ -157,7 +157,7 @@ public class MyLoginModel : LoginModel ## 重写静态资源 -重写模块的静态资源(像JavaScript,Css或图片文件)是很简单的. 只需要在解决方案的相同路径创建文件,虚拟文件系统会自动处理它. +重写模块的静态资源(像JavaScript,Css或图片文件)是很简单的. 只需要在解决方案的相同路径创建文件,[虚拟文件系统](../../Virtual-File-System.md)会自动处理它. ## 操作捆绑 diff --git a/docs/zh-Hans/Upgrading.md b/docs/zh-Hans/Upgrading.md new file mode 100644 index 0000000000..cb82a640d5 --- /dev/null +++ b/docs/zh-Hans/Upgrading.md @@ -0,0 +1 @@ +TODO... \ No newline at end of file diff --git a/docs/zh-Hans/Virtual-File-System.md b/docs/zh-Hans/Virtual-File-System.md index 6952c4d5da..4fcf861000 100644 --- a/docs/zh-Hans/Virtual-File-System.md +++ b/docs/zh-Hans/Virtual-File-System.md @@ -74,53 +74,12 @@ Configure(options => * 你的项目有一个名为 `MyFiles` 的目录. * 你只想添加 `MyFiles` 目录到虚拟文件系统. -#### 在开发过程中处理嵌入式文件 - -将文件嵌入到模块程序集中并能够通过引用程序集(或添加nuget包)在另一个项目中使用它对于创建可重用模块非常有价值. 但是, 这使得开发模块本身变得有点困难. - -假设你正在开发一个包含嵌入式JavaScript文件的模块. 当你更改文件时, 你必须重新编译项目, 重新启动应用程序并刷新浏览器页面以使更改生效. 显然, 这是非常耗时和乏味的. - -我们需要的是应用程序在开发时直接使用物理文件的能力, 让浏览器刷新时同步JavaScript文件的任何更改. `ReplaceEmbeddedByPhysical` 方法使其成为可能. - -下面的示例展示了应用程序依赖于包含嵌入文件的模块("MyModule"), 并且应用程序可以在开发过程中直接使用模块的源代码. - -````C# -[DependsOn(typeof(MyModule))] -public class MyWebAppModule : AbpModule -{ - public override void ConfigureServices(ServiceConfigurationContext context) - { - var hostingEnvironment = context.Services.GetHostingEnvironment(); - - if (hostingEnvironment.IsDevelopment()) //only for development time - { - Configure(options => - { - options.FileSets.ReplaceEmbeddedByPhysical( - Path.Combine( - hostingEnvironment.ContentRootPath, - string.Format( - "..{0}MyModuleProject", - Path.DirectorySeparatorChar - ) - ) - ); - }); - } - } -} -```` - -上面的代码假设`MyWebAppModule`和`MyModule`是Visual Studio解决方案中的两个不同的项目, `MyWebAppModule`依赖于`MyModule`. - -> [应用程序启动模板]已经为本地化文件应用这个方法,所以当你更改一个本地化文件时,它会自动检测到更改. - ## IVirtualFileProvider 将文件嵌入到程序集中并注册到虚拟文件系统后,可以使用 `IVirtualFileProvider` 接口来获取文件或目录内容: ````C# -public class MyService +public class MyService : ITransientDependency { private readonly IVirtualFileProvider _virtualFileProvider; @@ -129,7 +88,7 @@ public class MyService _virtualFileProvider = virtualFileProvider; } - public void Foo() + public void Test() { //Getting a single file var file = _virtualFileProvider @@ -154,7 +113,9 @@ public class MyService #### 虚拟文件中间件 -虚拟文件中间件用于向客户端/浏览器提供嵌入式(js, css, image ...)文件, 就像 **wwwroot** 文件夹中的物理(静态)文件一样. 在静态文件中间件之后添加它, 如下所示: +虚拟文件中间件用于向客户端/浏览器提供嵌入式(js, css, image ...)文件, 就像 **wwwroot** 文件夹中的物理(静态)文件一样. 它同时涵盖了物理文件. + +在你ASP.NET Core中间件配置中替换 `app.UseStaticFiles()` 为 `app.UseVirtualFiles()`: ````C# app.UseVirtualFiles(); @@ -170,6 +131,62 @@ app.UseVirtualFiles(); * Pages * Views +* Components * Themes 这允许你可以在 `.cshtml` 文件附近添加 `.js`, `.css`... 文件,更易于开发和维护你的项目. + +#### 在开发过程中处理嵌入式文件 + +将文件嵌入到模块程序集中并能够通过引用程序集(或添加nuget包)在另一个项目中使用它对于创建可重用模块非常有价值. 但是, 这使得开发模块本身变得有点困难. + +假设你正在开发一个包含嵌入式JavaScript文件的模块. 当你更改文件时, 你必须重新编译项目, 重新启动应用程序并刷新浏览器页面以使更改生效. 显然, 这是非常耗时和乏味的. + +我们需要的是应用程序在开发时直接使用物理文件的能力, 让浏览器刷新时同步JavaScript文件的任何更改. `ReplaceEmbeddedByPhysical` 方法使其成为可能. + +下面的示例展示了应用程序依赖于包含嵌入文件的模块("MyModule"), 并且应用程序可以在开发过程中直接使用模块的源代码. + +````C# +[DependsOn(typeof(MyModule))] +public class MyWebAppModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + if (hostingEnvironment.IsDevelopment()) //only for development time + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical( + Path.Combine( + hostingEnvironment.ContentRootPath, + string.Format( + "..{0}MyModuleProject", + Path.DirectorySeparatorChar + ) + ) + ); + }); + } + } +} +```` + +上面的代码假设`MyWebAppModule`和`MyModule`是Visual Studio解决方案中的两个不同的项目, `MyWebAppModule`依赖于`MyModule`. + +> [应用程序启动模板]已经为本地化文件应用这个方法,所以当你更改一个本地化文件时,它会自动检测到更改. + +## 替换/重写虚拟文件 + +虚拟文件系统在运行时创建一个统一的文件系统,其中实际的文件在开发时被分配到不同的模块中. + +如果两个模块将文件添加到相同的虚拟路径(如`my-path/my-file.css`),之后添加的模块将替换/替换前一个([模块依赖](Module-Development-Basics.md)顺序决定了添加文件的顺序). + +此功能允许你的应用程序可以覆盖/替换定义应用程序所使用的模块的任何虚拟文件. 这是ABP框架的基本可扩展性功能之一. + +因此,如果需要替换模块的文件,只需在模块/应用程序中完全相同的路径中创建该文件. + +### 物理文件 + +物理文件总是覆盖虚拟文件. 这意味着如果你把一个文件放在 `/wwwroot/my-folder/my-file.css`,它将覆盖虚拟文件系统相同位置的文件.因此你需要知道在模块中定义的文件路径来覆盖它们. \ No newline at end of file diff --git a/docs/zh-Hans/docs-nav.json b/docs/zh-Hans/docs-nav.json index df72d6e3df..5df3376507 100644 --- a/docs/zh-Hans/docs-nav.json +++ b/docs/zh-Hans/docs-nav.json @@ -4,21 +4,16 @@ "text": "入门", "items": [ { - "text": "从启动模板开始", + "text": "Web应用程序", "path": "Getting-Started.md" }, { - "text": "从空项目开始", - "items": [ - { - "text": "使用ASP.NET Core Web Application", - "path": "Getting-Started-AspNetCore-Application.md" - }, - { - "text": "使用Console Application", - "path": "Getting-Started-Console-Application.md" - } - ] + "text": "控制台应用程序", + "path": "Startup-Templates/Console.md" + }, + { + "text": "空Web应用程序t", + "path": "Getting-Started-AspNetCore-Application.md" } ] }, @@ -66,10 +61,6 @@ } ] }, - { - "text": "\"如何\" 指南", - "path": "How-To/Index.md" - }, { "text": "从ASP.NET Boilerplate迁移", "path": "AspNet-Boilerplate-Migration-Guide.md" @@ -201,6 +192,19 @@ "path": "Object-To-Object-Mapping.md" }, + { + "text": "邮件发送", + "items": [ + { + "text": "邮件发送系统", + "path": "Emailing.md" + }, + { + "text": "MailKit集成", + "path": "MailKit.md" + } + ] + }, { "text": "BLOB存储", "items": [ @@ -397,6 +401,10 @@ "text": "v2.x 到 v3 迁移指南", "path": "UI/Angular/Migration-Guide-v3.md" }, + { + "text": "环境", + "path": "UI/Angular/Environment.md" + }, { "text": "服务代理", "path": "UI/Angular/Service-Proxies.md" @@ -413,6 +421,10 @@ "text": "权限管理", "path": "UI/Angular/Permission-Management.md" }, + { + "text": "多租户", + "path": "UI/Angular/Multi-Tenancy.md" + }, { "text": "确认弹层", "path": "UI/Angular/Confirmation-Service.md" @@ -635,6 +647,10 @@ "text": "微服务架构", "path": "Microservice-Architecture.md" }, + { + "text": "预览版本", + "path": "Previews.md" + }, { "text": "每日构建", "path": "Nightly-Builds.md" @@ -643,6 +659,10 @@ "text": "路线图", "path": "Road-Map.md" }, + { + "text": "升级", + "path": "Upgrading.md" + }, { "text": "贡献指南", "path": "Contribution/Index.md" diff --git a/docs/zh-Hans/images/replace-email-layout.png b/docs/zh-Hans/images/replace-email-layout.png new file mode 100644 index 0000000000000000000000000000000000000000..67db895f92a549bb4ddadf1606e6c97737cf5fd9 GIT binary patch literal 31878 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 literal 5658 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 From df780227f5f0486ae0c56d5ae26c326922fd8631 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Sun, 6 Sep 2020 21:05:22 +0300 Subject: [PATCH 298/474] fix: use an intersection type for strict null checks --- npm/ng-packs/packages/core/src/lib/models/config.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/models/config.ts b/npm/ng-packs/packages/core/src/lib/models/config.ts index be640a4dcf..cf4eb007c9 100644 --- a/npm/ng-packs/packages/core/src/lib/models/config.ts +++ b/npm/ng-packs/packages/core/src/lib/models/config.ts @@ -22,11 +22,12 @@ export namespace Config { logoUrl?: string; } - export interface ApiConfig { + export type ApiConfig = { [key: string]: string; - rootNamespace?: string; url: string; - } + } & Partial<{ + rootNamespace: string; + }>; export interface Apis { [key: string]: ApiConfig; From fe8417cce460a9a37929f493f494f71bed12f7eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 6 Sep 2020 21:47:23 +0300 Subject: [PATCH 299/474] Add link to the article. --- docs/en/UI/Angular/Service-Proxies.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/en/UI/Angular/Service-Proxies.md b/docs/en/UI/Angular/Service-Proxies.md index 40fb18f45d..5466d64182 100644 --- a/docs/en/UI/Angular/Service-Proxies.md +++ b/docs/en/UI/Angular/Service-Proxies.md @@ -1,5 +1,7 @@ ## Service Proxies +> THIS DOCUMENT IS OUTDATED. IT IS BEING UPDATED. MEANWHILE, YOU CAN [SEE THIS ARTICLE](https://github.com/abpframework/abp/blob/dev/docs/en/Blog-Posts/2020-09-07%20Angular-Service-Proxies/POST.md) TO LEARN HOW TO USE THE ABP ANGULAR SERVICE PROXIES. + It is common to call a REST endpoint in the server from our Angular applications. In this case, we generally create **services** (those have methods for each service method on the server side) and **model objects** (matches to [DTOs](../../Data-Transfer-Objects) in the server side). In addition to manually creating such server-interacting services, we could use tools like [NSWAG](https://github.com/RicoSuter/NSwag) to generate service proxies for us. But NSWAG has the following problems we've experienced: From 57697b59c016492bf1650e0f5e8c8d8c508fd8e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 6 Sep 2020 21:47:59 +0300 Subject: [PATCH 300/474] Delete abp-generate-proxy-output.png --- .../abp-generate-proxy-output.png | Bin 42515 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/abp-generate-proxy-output.png diff --git a/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/abp-generate-proxy-output.png b/docs/en/Blog-Posts/2020-09-07 Angular-Service-Proxies/abp-generate-proxy-output.png deleted file mode 100644 index 0a77d8e40fe256f7443fe81b4552d310414f31f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42515 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 Date: Mon, 7 Sep 2020 09:01:30 +0300 Subject: [PATCH 301/474] CmsKit: Range attribute changes as DynamicRange --- .../Volo/CmsKit/Ratings/RatingConsts.cs | 4 ++-- .../Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs index d52bec599b..e3bf6c399d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Ratings/RatingConsts.cs @@ -8,8 +8,8 @@ namespace Volo.CmsKit.Ratings public static int MaxEntityIdLength { get; set; } = CmsEntityConsts.MaxEntityIdLength; - public const int MaxStarCount = 5; + public static int MaxStarCount { get; set; } = 5; - public const int MinStarCount = 1; + public static int MinStarCount { get; set; } = 1; } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs index c6fa01b7d4..0577a97a68 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Ratings/CreateUpdateRatingInput.cs @@ -1,11 +1,13 @@ using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; using Volo.CmsKit.Ratings; namespace Volo.CmsKit.Public.Ratings { public class CreateUpdateRatingInput { - [Required, Range(RatingConsts.MinStarCount, RatingConsts.MaxStarCount)] + [Required] + [DynamicRange(typeof(RatingConsts), typeof(int), nameof(RatingConsts.MinStarCount), nameof(RatingConsts.MaxStarCount))] public short StarCount { get; set; } } } \ No newline at end of file From ccd7f18e7f47055619622527e213fb63bba5f4ae Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Mon, 7 Sep 2020 09:20:33 +0300 Subject: [PATCH 302/474] Update POST.md --- .../POST.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md index 2cb53e92fd..7bfd20637f 100644 --- a/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md +++ b/docs/en/Community-Articles/2020-08-31-Adding-User-Navigation-In-Suite/POST.md @@ -24,7 +24,7 @@ Then add a string property called `Title`, as an example property. ABP Suite needs a DTO for the target entity (user, in this case) in order to define a navigation property. -To do this, create a new folder called "Users" in `*.Application.Contracts` then add a new class called `AppUserDto` inherited from `IdentityUserDto`. +To do this, create a new folder called "Users" in `*.Application.Contracts` then add a new class called `AppUserDto` inherited from `IdentityUserDto`. ![create-appuserdto](create-appuserdto.jpg) @@ -40,13 +40,13 @@ CreateMap().Ignore(x => x.ExtraProperties); ### Define the Navigation Property -Get back to ABP Suite, open the **Navigation Properties** tab of the ABP Suite, click the **Add Navigation Property** button. Browse `AppUser.cs` in `*.Domain\Users` folder. Then choose the `Name` item as display property. Browse `AppUserDto.cs` in `*.Contracts\Users` folder. Choose `Users` from Collection Names dropdown. +Get back to ABP Suite, open the **Navigation Properties** tab of the ABP Suite, click the **Add Navigation Property** button. Browse `AppUser.cs` in `*.Domain\Users` folder. Then choose the `Name` item as display property. Browse `AppUserDto.cs` in `*.Contracts\Users` folder. Choose `Users` from Collection Names dropdown. ![add-user-navigation](add-user-navigation.jpg) ### Generate the Code! -That's it! Click **Save and generate** button to create your page. You'll see the following page if everything goes well. +That's it! Click **Save and generate** button to create your page. You'll see the following page if everything goes well. ![final-page](final-page.jpg) @@ -54,7 +54,7 @@ This is the new page that has been created by the ABP Suite. It can perform the **Picking Users from Look Up Table** -We used dropdown element to select a user from the user list. If you have a lot of users, then it's good to pick a user from a look up table. A look up table is a modal window that lets you filter data and pick one. To do this, get back to Suite and click **Edit** button of user navigation which is set as `AppUserId` name. Choose "Modal" from the "UI Pick Type" field. Then click **Save and generate** button to recreate your page. +We used dropdown element to select a user from the user list. If you have a lot of users, then it's good to pick a user from a look up table. A look up table is a modal window that lets you filter data and pick one. To do this, get back to Suite and click **Edit** button of user navigation which is set as `AppUserId` name. Choose "Modal" from the "UI Pick Type" field. Then click **Save and generate** button to recreate your page. ![ui-pick-type-modal](ui-pick-type-modal.jpg) @@ -64,18 +64,18 @@ After successful code generation, you'll see the the user can be picked from use ## About the ABP Commercial RC -This example has been implemented with **ABP Commercial 3.1.0-rc.3**. This is a RC version. If you want to install the CLI and Suite RC version follow the next steps: +This example has been implemented with **ABP Commercial 3.1.0**. If you have not installed the ABP CLI and ABP Suite, follow the next steps: -1- Uninstall the current version of the CLI and install the specific RC version: +1- Uninstall the current version of the CLI and install: ```bash -dotnet tool uninstall --global Volo.Abp.Cli && dotnet tool install --global Volo.Abp.Cli --version 3.1.0-rc.3 +dotnet tool install --global Volo.Abp.Cli --version 3.1.0 ``` -2- Uninstall the current version of the Suite and install the specific RC version: +2- Uninstall the current version of the Suite and install: ```bash -dotnet tool uninstall --global Volo.Abp.Suite && dotnet tool install -g Volo.Abp.Suite --version 3.1.0-rc.3 --add-source https://nuget.abp.io//v3/index.json +dotnet tool uninstall --global Volo.Abp.Suite && dotnet tool install -g Volo.Abp.Suite --version 3.1.0 --add-source https://nuget.abp.io//v3/index.json ``` Don't forget to replace the `` with your own key! From 2811de7a708fc6ce5461726a43f2a58824782632 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Mon, 7 Sep 2020 16:11:12 +0800 Subject: [PATCH 303/474] Add more property to user claims. --- .../CurrentUserDto.cs | 10 ++++ .../AbpApplicationConfigurationAppService.cs | 5 ++ .../Volo/Abp/Security/Claims/AbpClaimTypes.cs | 56 ++++++++++++------- .../Volo/Abp/Users/CurrentUser.cs | 6 +- .../Volo/Abp/Users/ICurrentUser.cs | 8 ++- .../Abp/Identity/AbpIdentityDomainModule.cs | 15 ++++- .../Identity/AbpUserClaimsPrincipalFactory.cs | 38 ++++++++++--- .../Abp/Identity/ClaimsIdentityExtensions.cs | 21 +++++++ 8 files changed, 126 insertions(+), 33 deletions(-) create mode 100644 modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/ClaimsIdentityExtensions.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs index ce08bebe87..5d1f6d8414 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs @@ -13,8 +13,18 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations public string UserName { get; set; } + public string Name { get; set; } + + public string SurName { get; set; } + public string Email { get; set; } + public bool EmailVerified { get; set; } + + public string PhoneNumber { get; set; } + + public bool PhoneNumberVerified { get; set; } + public string[] Roles { get; set; } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs index 54815d6ff5..89bf3e7cfc 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs @@ -117,7 +117,12 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations Id = _currentUser.Id, TenantId = _currentUser.TenantId, UserName = _currentUser.UserName, + SurName = _currentUser.SurName, + Name = _currentUser.Name, Email = _currentUser.Email, + EmailVerified = _currentUser.EmailVerified, + PhoneNumber = _currentUser.PhoneNumber, + PhoneNumberVerified = _currentUser.PhoneNumberVerified, Roles = _currentUser.Roles }; } diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs index d0b883e4f3..a797b360ee 100644 --- a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs +++ b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs @@ -8,55 +8,71 @@ namespace Volo.Abp.Security.Claims /// public static class AbpClaimTypes { + public const string ClaimTypeNamespace = "abp_"; + /// - /// Default: + /// Default: abp_username /// - public static string UserName { get; set; } = ClaimTypes.Name; + public static string UserName { get; set; } = ClaimTypeNamespace + "username"; /// - /// Default: + /// Default: abp_name /// - public static string UserId { get; set; } = ClaimTypes.NameIdentifier; + public static string Name { get; set; } = ClaimTypeNamespace + "name"; /// - /// Default: + /// Default: abp_surname /// - public static string Role { get; set; } = ClaimTypes.Role; + public static string SurName { get; set; } = ClaimTypeNamespace + "surname"; /// - /// Default: + /// Default: abp_user_id /// - public static string Email { get; set; } = ClaimTypes.Email; + public static string UserId { get; set; } = ClaimTypeNamespace + "user_id"; /// - /// Default: "email_verified". + /// Default: abp_role /// - public static string EmailVerified { get; set; } = "email_verified"; + public static string Role { get; set; } = ClaimTypeNamespace + "role"; /// - /// Default: "phone_number". + /// Default: abp_security_stamp /// - public static string PhoneNumber { get; set; } = "phone_number"; + public static string SecurityStamp { get; set; } = ClaimTypeNamespace + "security_stamp"; /// - /// Default: "phone_number_verified". + /// Default: abp_email /// - public static string PhoneNumberVerified { get; set; } = "phone_number_verified"; + public static string Email { get; set; } = ClaimTypeNamespace + "email"; /// - /// Default: "tenantid". + /// Default: abp_email_verified /// - public static string TenantId { get; set; } = "tenantid"; + public static string EmailVerified { get; set; } = ClaimTypeNamespace + "email_verified"; + /// + /// Default: abp_phone_number + /// + public static string PhoneNumber { get; set; } = ClaimTypeNamespace + "phone_number"; + + /// + /// Default: abp_phone_number_verified + /// + public static string PhoneNumberVerified { get; set; } = ClaimTypeNamespace + "phone_number_verified"; + + /// + /// Default: abp_tenant_id + /// + public static string TenantId { get; set; } = ClaimTypeNamespace + "tenant_id"; /// - /// Default: "editionid". + /// Default: abp_edition_id /// - public static string EditionId { get; set; } = "editionid"; + public static string EditionId { get; set; } = ClaimTypeNamespace + "edition_id"; /// - /// Default: "client_id". + /// Default: abp_client_id /// - public static string ClientId { get; set; } = "client_id"; + public static string ClientId { get; set; } = ClaimTypeNamespace + "client_id"; } } diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Users/CurrentUser.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Users/CurrentUser.cs index 487274860f..e769b9ec11 100644 --- a/framework/src/Volo.Abp.Security/Volo/Abp/Users/CurrentUser.cs +++ b/framework/src/Volo.Abp.Security/Volo/Abp/Users/CurrentUser.cs @@ -17,6 +17,10 @@ namespace Volo.Abp.Users public virtual string UserName => this.FindClaimValue(AbpClaimTypes.UserName); + public virtual string Name => this.FindClaimValue(AbpClaimTypes.Name); + + public virtual string SurName => this.FindClaimValue(AbpClaimTypes.SurName); + public virtual string PhoneNumber => this.FindClaimValue(AbpClaimTypes.PhoneNumber); public virtual bool PhoneNumberVerified => string.Equals(this.FindClaimValue(AbpClaimTypes.PhoneNumberVerified), "true", StringComparison.InvariantCultureIgnoreCase); @@ -56,4 +60,4 @@ namespace Volo.Abp.Users return FindClaims(AbpClaimTypes.Role).Any(c => c.Value == roleName); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Users/ICurrentUser.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Users/ICurrentUser.cs index 18613406d8..528f176c94 100644 --- a/framework/src/Volo.Abp.Security/Volo/Abp/Users/ICurrentUser.cs +++ b/framework/src/Volo.Abp.Security/Volo/Abp/Users/ICurrentUser.cs @@ -14,9 +14,15 @@ namespace Volo.Abp.Users [CanBeNull] string UserName { get; } + [CanBeNull] + string Name { get; } + + [CanBeNull] + string SurName { get; } + [CanBeNull] string PhoneNumber { get; } - + bool PhoneNumberVerified { get; } [CanBeNull] diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs index d21e945f60..685f66a9ea 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs @@ -8,6 +8,7 @@ using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.Modularity; using Volo.Abp.ObjectExtending; using Volo.Abp.ObjectExtending.Modularity; +using Volo.Abp.Security.Claims; using Volo.Abp.Users; namespace Volo.Abp.Identity @@ -36,7 +37,7 @@ namespace Volo.Abp.Identity options.EtoMappings.Add(typeof(AbpIdentityDomainModule)); options.EtoMappings.Add(typeof(AbpIdentityDomainModule)); }); - + var identityBuilder = context.Services.AddAbpIdentity(options => { options.User.RequireUniqueEmail = true; @@ -45,6 +46,14 @@ namespace Volo.Abp.Identity context.Services.AddObjectAccessor(identityBuilder); context.Services.ExecutePreConfiguredActions(identityBuilder); + Configure(options => + { + options.ClaimsIdentity.UserIdClaimType = AbpClaimTypes.UserId; + options.ClaimsIdentity.UserNameClaimType = AbpClaimTypes.UserName; + options.ClaimsIdentity.RoleClaimType = AbpClaimTypes.Role; + options.ClaimsIdentity.SecurityStampClaimType = AbpClaimTypes.SecurityStamp; + }); + AddAbpIdentityOptionsFactory(context.Services); } @@ -67,7 +76,7 @@ namespace Volo.Abp.Identity IdentityModuleExtensionConsts.EntityNames.ClaimType, typeof(IdentityClaimType) ); - + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( IdentityModuleExtensionConsts.ModuleName, IdentityModuleExtensionConsts.EntityNames.OrganizationUnit, @@ -81,4 +90,4 @@ namespace Volo.Abp.Identity services.Replace(ServiceDescriptor.Scoped, OptionsManager>()); } } -} \ No newline at end of file +} diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpUserClaimsPrincipalFactory.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpUserClaimsPrincipalFactory.cs index 8db2b95942..c9e266bf23 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpUserClaimsPrincipalFactory.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpUserClaimsPrincipalFactory.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System; +using System.Linq; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNetCore.Identity; @@ -6,6 +7,7 @@ using Microsoft.Extensions.Options; using Volo.Abp.DependencyInjection; using Volo.Abp.Security.Claims; using Volo.Abp.Uow; +using Volo.Abp.Users; namespace Volo.Abp.Identity { @@ -13,11 +15,11 @@ namespace Volo.Abp.Identity { public AbpUserClaimsPrincipalFactory( UserManager userManager, - RoleManager roleManager, - IOptions options) + RoleManager roleManager, + IOptions options) : base( - userManager, - roleManager, + userManager, + roleManager, options) { } @@ -26,14 +28,34 @@ namespace Volo.Abp.Identity public override async Task CreateAsync(IdentityUser user) { var principal = await base.CreateAsync(user); + var identity = principal.Identities.First(); if (user.TenantId.HasValue) { - principal.Identities - .First() - .AddClaim(new Claim(AbpClaimTypes.TenantId, user.TenantId.ToString())); + identity.AddIfNotContains(new Claim(AbpClaimTypes.TenantId, user.TenantId.ToString())); } + if (!user.Name.IsNullOrWhiteSpace()) + { + identity.AddIfNotContains(new Claim(AbpClaimTypes.Name, user.Name)); + } + if (!user.Surname.IsNullOrWhiteSpace()) + { + identity.AddIfNotContains(new Claim(AbpClaimTypes.SurName, user.Surname)); + } + + if (!user.PhoneNumber.IsNullOrWhiteSpace()) + { + identity.AddIfNotContains(new Claim(AbpClaimTypes.PhoneNumber, user.PhoneNumber)); + } + identity.AddIfNotContains(new Claim(AbpClaimTypes.PhoneNumberVerified, user.PhoneNumberConfirmed.ToString())); + + if (!user.Email.IsNullOrWhiteSpace()) + { + identity.AddIfNotContains(new Claim(AbpClaimTypes.Email, user.Email)); + } + identity.AddIfNotContains(new Claim(AbpClaimTypes.EmailVerified, user.EmailConfirmed.ToString())); + return principal; } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/ClaimsIdentityExtensions.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/ClaimsIdentityExtensions.cs new file mode 100644 index 0000000000..156f092f9e --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/ClaimsIdentityExtensions.cs @@ -0,0 +1,21 @@ +using System; +using System.Linq; +using System.Security.Claims; + +namespace Volo.Abp.Identity +{ + public static class ClaimsIdentityExtensions + { + public static ClaimsIdentity AddIfNotContains(this ClaimsIdentity claimsIdentity, Claim claim) + { + if (!claimsIdentity.Claims.Any(existClaim => + existClaim != null && + string.Equals(existClaim.Type, claim.Type, StringComparison.OrdinalIgnoreCase))) + { + claimsIdentity.AddClaim(claim); + } + + return claimsIdentity; + } + } +} From 2c6cd37af2f7e7a70565e4f91f971fd281074e70 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Mon, 7 Sep 2020 16:54:00 +0800 Subject: [PATCH 304/474] Fix unit test. --- .../Volo/Abp/Authorization/AuthorizationTestBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AuthorizationTestBase.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AuthorizationTestBase.cs index 5cf9976e46..89f45600f4 100644 --- a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AuthorizationTestBase.cs +++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AuthorizationTestBase.cs @@ -23,7 +23,7 @@ namespace Volo.Abp.Authorization new Claim(AbpClaimTypes.Role, "MyRole") }; - var identity = new ClaimsIdentity(claims); + var identity = new ClaimsIdentity(claims,null, AbpClaimTypes.UserName, AbpClaimTypes.Role); var claimsPrincipal = new ClaimsPrincipal(identity); var principalAccessor = Substitute.For(); principalAccessor.Principal.Returns(ci => claimsPrincipal); From 80a1b0bfdb35faca35f8d7ef5161d7c6b211eca9 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 7 Sep 2020 17:22:02 +0800 Subject: [PATCH 305/474] Add unadded users/roles method to OrganizationUnitRepository --- .../Identity/IOrganizationUnitRepository.cs | 16 ++++++ .../Volo/Abp/Identity/OrganizationUnit.cs | 10 ++-- .../EfCoreOrganizationUnitRepository.cs | 52 +++++++++++++++++-- .../MongoOrganizationUnitRepository.cs | 37 +++++++++++++ .../OrganizationUnitRepository_Tests.cs | 21 ++++++++ 5 files changed, 128 insertions(+), 8 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs index 6650f62c82..81474425db 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs @@ -55,6 +55,14 @@ namespace Volo.Abp.Identity CancellationToken cancellationToken = default ); + Task> GetUnaddedRolesAsync( + OrganizationUnit organizationUnit, + string filter = null, + string sorting = null, + bool includeDetails = false, + CancellationToken cancellationToken = default + ); + Task> GetMembersAsync( OrganizationUnit organizationUnit, string sorting = null, @@ -71,6 +79,14 @@ namespace Volo.Abp.Identity CancellationToken cancellationToken = default ); + Task> GetUnaddedUsersAsync( + OrganizationUnit organizationUnit, + string filter = null, + string sorting = null, + bool includeDetails = false, + CancellationToken cancellationToken = default + ); + Task RemoveAllRolesAsync( OrganizationUnit organizationUnit, CancellationToken cancellationToken = default diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnit.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnit.cs index 3d1bbb0531..981a0f8fae 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnit.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnit.cs @@ -23,16 +23,16 @@ namespace Volo.Abp.Identity /// /// Hierarchical Code of this organization unit. /// Example: "00001.00042.00005". - /// This is a unique code for a Tenant. + /// This is a unique code for an OrganizationUnit. /// It's changeable if OU hierarchy is changed. /// public virtual string Code { get; internal set; } /// - /// Display name of this role. + /// Display name of this OrganizationUnit. /// - public virtual string DisplayName { get; set; } - + public virtual string DisplayName { get; set; } + /// /// Roles of this OU. /// @@ -77,7 +77,7 @@ namespace Volo.Abp.Identity } /// - /// Appends a child code to a parent code. + /// Appends a child code to a parent code. /// Example: if parentCode = "00001", childCode = "00042" then returns "00001.00042". /// /// Parent code. Can be null or empty if parent is a root. diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs index 7bdb7d6837..d50745ab1d 100644 --- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs @@ -12,7 +12,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore { public class EfCoreOrganizationUnitRepository : EfCoreRepository, - IOrganizationUnitRepository + IOrganizationUnitRepository { public EfCoreOrganizationUnitRepository( IDbContextProvider dbContextProvider) @@ -56,6 +56,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore .PageBy(skipCount, maxResultCount) .ToListAsync(GetCancellationToken(cancellationToken)); } + public virtual async Task> GetListAsync( IEnumerable ids, bool includeDetails = false, @@ -111,6 +112,23 @@ namespace Volo.Abp.Identity.EntityFrameworkCore return await query.CountAsync(GetCancellationToken(cancellationToken)); } + public virtual async Task> GetUnaddedRolesAsync( + OrganizationUnit organizationUnit, + string filter = null, + string sorting = null, + bool includeDetails = false, + CancellationToken cancellationToken = default) + { + var roleIds = organizationUnit.Roles.Select(r => r.RoleId).ToList(); + + return await DbContext.Roles + .Where(r => !roleIds.Contains(r.Id)) + .IncludeDetails(includeDetails) + .WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter)) + .OrderBy(sorting ?? nameof(IdentityRole.Name)) + .ToListAsync(cancellationToken); + } + public virtual async Task> GetMembersAsync( OrganizationUnit organizationUnit, string sorting = null, @@ -118,8 +136,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore int skipCount = 0, string filter = null, bool includeDetails = false, - CancellationToken cancellationToken = default - ) + CancellationToken cancellationToken = default) { var query = CreateGetMembersFilteredQuery(organizationUnit, filter); @@ -138,6 +155,35 @@ namespace Volo.Abp.Identity.EntityFrameworkCore return await query.CountAsync(GetCancellationToken(cancellationToken)); } + public virtual async Task> GetUnaddedUsersAsync( + OrganizationUnit organizationUnit, + string filter = null, + string sorting = null, + bool includeDetails = false, + CancellationToken cancellationToken = default) + { + var userIdsInOrganizationUnit = DbContext.Set() + .Where(uou => uou.OrganizationUnitId == organizationUnit.Id) + .Select(uou => uou.UserId); + + var query = DbContext.Users + .Where(u => !userIdsInOrganizationUnit.Contains(u.Id)); + + if (!filter.IsNullOrWhiteSpace()) + { + query = query.Where(u => + u.UserName.Contains(filter) || + u.Email.Contains(filter) || + (u.PhoneNumber != null && u.PhoneNumber.Contains(filter)) + ); + } + + return await query + .IncludeDetails(includeDetails) + .OrderBy(sorting ?? nameof(IdentityUser.Name)) + .ToListAsync(cancellationToken); + } + public override IQueryable WithDetails() { return GetQueryable().IncludeDetails(); diff --git a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs index 8c163d4126..2823c99a6c 100644 --- a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs @@ -107,6 +107,22 @@ namespace Volo.Abp.Identity.MongoDB .CountAsync(cancellationToken); } + public async Task> GetUnaddedRolesAsync( + OrganizationUnit organizationUnit, + string filter = null, + string sorting = null, + bool includeDetails = false, + CancellationToken cancellationToken = default) + { + var roleIds = organizationUnit.Roles.Select(r => r.RoleId).ToArray(); + return await DbContext.Roles.AsQueryable() + .Where(r => !roleIds.Contains(r.Id)) + .WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter)) + .OrderBy(sorting ?? nameof(IdentityRole.Name)) + .As>() + .ToListAsync(cancellationToken); + } + public virtual async Task> GetMembersAsync( OrganizationUnit organizationUnit, string sorting = null, @@ -135,6 +151,27 @@ namespace Volo.Abp.Identity.MongoDB return await query.CountAsync(GetCancellationToken(cancellationToken)); } + public async Task> GetUnaddedUsersAsync( + OrganizationUnit organizationUnit, + string filter = null, + string sorting = null, + bool includeDetails = false, + CancellationToken cancellationToken = default) + { + return await DbContext.Users.AsQueryable() + .Where(u => !u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id)) + .WhereIf>( + !filter.IsNullOrWhiteSpace(), + u => + u.UserName.Contains(filter) || + u.Email.Contains(filter) || + (u.PhoneNumber != null && u.PhoneNumber.Contains(filter)) + ) + .OrderBy(sorting ?? nameof(IdentityUser.UserName)) + .As>() + .ToListAsync(GetCancellationToken(cancellationToken)); + } + public virtual Task RemoveAllRolesAsync(OrganizationUnit organizationUnit, CancellationToken cancellationToken = default) { organizationUnit.Roles.Clear(); diff --git a/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs b/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs index bb8300d449..97544cd1e9 100644 --- a/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs @@ -284,5 +284,26 @@ namespace Volo.Abp.Identity await uow.CompleteAsync(); } } + + [Fact] + public async Task GetUnaddedUsersOfOrganizationUnitAsync() + { + var ou = await _organizationUnitRepository.GetAsync("OU111", true); + var unaddedUsers = await _organizationUnitRepository.GetUnaddedUsersAsync(ou); + + unaddedUsers.ShouldNotContain(u => u.UserName == "john.nash"); + unaddedUsers.ShouldContain(u => u.UserName == "administrator"); + } + + [Fact] + public async Task GetUnaddedRolesOfOrganizationUnitAsync() + { + var ou = await _organizationUnitRepository.GetAsync("OU111", true); + var unaddedRoles = await _organizationUnitRepository.GetUnaddedRolesAsync(ou); + + unaddedRoles.ShouldNotContain(u => u.Name == "manager"); + unaddedRoles.ShouldNotContain(u => u.Name == "moderator"); + unaddedRoles.ShouldContain(u => u.Name.Contains("admin")); + } } } From e397b343a0b7dbaa6a1cb0b11c467190a4e132f6 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 7 Sep 2020 12:41:16 +0300 Subject: [PATCH 306/474] ci: separate cache actions --- .github/workflows/angular.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index 3a6d486144..dfca28338b 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -12,10 +12,13 @@ jobs: - uses: actions/cache@v2 with: - path: | - npm/ng-packs/node_modules - templates/app/angular/node_modules - key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} + path: 'npm/ng-packs/node_modules' + key: ${{ runner.os }}-${{ hashFiles('npm/ng-packs/yarn.lock') }} + + - uses: actions/cache@v2 + with: + path: 'templates/app/angular/node_modules' + key: ${{ runner.os }}-${{ hashFiles('templates/app/angular/yarn.lock') }} - name: Install packages run: yarn install From b295a3a3844b8f684828f2a0be4c8fc15c54df10 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 7 Sep 2020 13:18:47 +0300 Subject: [PATCH 308/474] pull/5300 Refactor & Unit tests --- .../Abp/Http/Client/AbpRemoteCallException.cs | 2 +- .../Volo.Abp.Http.Client.Tests.csproj | 4 ++++ .../Volo/Abp/Http/AbpHttpClientTestModule.cs | 22 +++++++++++++++++++ .../DynamicProxying/IRegularTestController.cs | 2 ++ .../DynamicProxying/RegularTestController.cs | 10 ++++++++- .../RegularTestControllerClientProxy_Tests.cs | 11 +++++++++- .../Localization/HttpClientTestResource.cs | 10 +++++++++ .../Volo/Abp/Http/Localization/en.json | 6 +++++ .../Identity/AbpIdentityResultException.cs | 13 ++++++++--- 9 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/HttpClientTestResource.cs create mode 100644 framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/en.json diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpRemoteCallException.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpRemoteCallException.cs index 71966868f9..19ecfba0ab 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpRemoteCallException.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpRemoteCallException.cs @@ -29,7 +29,7 @@ namespace Volo.Abp.Http.Client { Error = error; - if (error?.Data != null) + if (error.Data != null) { foreach (var dataKey in error.Data.Keys) { diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo.Abp.Http.Client.Tests.csproj b/framework/test/Volo.Abp.Http.Client.Tests/Volo.Abp.Http.Client.Tests.csproj index 07708ce189..6b4e1ce4f0 100644 --- a/framework/test/Volo.Abp.Http.Client.Tests/Volo.Abp.Http.Client.Tests.csproj +++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo.Abp.Http.Client.Tests.csproj @@ -14,4 +14,8 @@ + + + + diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs index 9b2a28ad3e..6a18b06620 100644 --- a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs +++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs @@ -2,8 +2,12 @@ using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Http.Client; using Volo.Abp.Http.DynamicProxying; +using Volo.Abp.Http.Localization; +using Volo.Abp.Localization; +using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; using Volo.Abp.TestApp; +using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.Http { @@ -22,6 +26,24 @@ namespace Volo.Abp.Http { options.RemoteServices.Default = new RemoteServiceConfiguration("/"); }); + + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddVirtualJson("/Volo/Abp/Http/Localization"); + }); + + Configure(options => + { + options.MapCodeNamespace("Volo.Abp.Http.DynamicProxying", typeof(HttpClientTestResource)); + }); } } } diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/IRegularTestController.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/IRegularTestController.cs index 546968d402..23694e4e72 100644 --- a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/IRegularTestController.cs +++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/IRegularTestController.cs @@ -9,6 +9,8 @@ namespace Volo.Abp.Http.DynamicProxying Task GetException1Async(); + Task GetException2Async(); + Task GetWithDateTimeParameterAsync(DateTime dateTime1); Task PostValueWithHeaderAndQueryStringAsync(string headerValue, string qsValue); diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestController.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestController.cs index ef2a8bface..da61333d4e 100644 --- a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestController.cs +++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestController.cs @@ -27,6 +27,14 @@ namespace Volo.Abp.Http.DynamicProxying throw new UserFriendlyException("This is an error message!"); } + [HttpGet] + [Route("get-exception2")] + public Task GetException2Async() + { + throw new BusinessException("Volo.Abp.Http.DynamicProxying:10001") + .WithData("0","TEST"); + } + [HttpGet] [Route("get-with-datetime-parameter")] public Task GetWithDateTimeParameterAsync(DateTime dateTime1) @@ -133,4 +141,4 @@ namespace Volo.Abp.Http.DynamicProxying [FromQuery] public DateTime FirstReleaseDate { get; set; } } -} \ No newline at end of file +} diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestControllerClientProxy_Tests.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestControllerClientProxy_Tests.cs index 85825263bd..2ac327e5e7 100644 --- a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestControllerClientProxy_Tests.cs +++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestControllerClientProxy_Tests.cs @@ -1,8 +1,10 @@ using System; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; using Shouldly; using Volo.Abp.Http.Client; +using Volo.Abp.Http.Localization; using Volo.Abp.Localization; using Xunit; @@ -32,6 +34,13 @@ namespace Volo.Abp.Http.DynamicProxying exception.Error.Message.ShouldBe("This is an error message!"); } + [Fact] + public async Task GetException2Async() + { + var exception = await Assert.ThrowsAsync(async () => await _controller.GetException2Async()); + exception.Error.Message.ShouldBe("Business exception with data: TEST"); + } + [Fact] public async Task GetWithDateTimeParameterAsync() { @@ -151,4 +160,4 @@ namespace Volo.Abp.Http.DynamicProxying } } -} \ No newline at end of file +} diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/HttpClientTestResource.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/HttpClientTestResource.cs new file mode 100644 index 0000000000..fc87525b87 --- /dev/null +++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/HttpClientTestResource.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Localization; + +namespace Volo.Abp.Http.Localization +{ + [LocalizationResourceName("HttpClientTest")] + public class HttpClientTestResource + { + + } +} diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/en.json b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/en.json new file mode 100644 index 0000000000..9c88edf323 --- /dev/null +++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/en.json @@ -0,0 +1,6 @@ +{ + "culture": "en", + "texts": { + "Volo.Abp.Http.DynamicProxying:10001": "Business exception with data: {0}" + } +} diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityResultException.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityResultException.cs index b608720576..05ea00bc58 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityResultException.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityResultException.cs @@ -32,14 +32,21 @@ namespace Volo.Abp.Identity public virtual string LocalizeMessage(LocalizationContext context) { - var values = IdentityResult.GetValuesFromErrorMessage(context.LocalizerFactory.Create()); + var localizer = context.LocalizerFactory.Create(); + + SetData(localizer); + + return IdentityResult.LocalizeErrors(localizer); + } + + protected virtual void SetData(IStringLocalizer localizer) + { + var values = IdentityResult.GetValuesFromErrorMessage(localizer); for (var index = 0; index < values.Length; index++) { Data[index.ToString()] = values[index]; } - - return IdentityResult.LocalizeErrors(context.LocalizerFactory.Create()); } } } From 3100284024bd48b137a38f54a40eb6f5dffd01be Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 7 Sep 2020 13:36:19 +0300 Subject: [PATCH 309/474] feat: add role labes to the name column of roles datatable --- .../src/lib/components/roles/roles.component.html | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.html b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.html index 802e272dce..85986e20bb 100644 --- a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.html +++ b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.html @@ -63,10 +63,17 @@
    - + + + {{ row.name }} + {{ + 'AbpIdentity::DisplayName:IsDefault' | abpLocalization + }} + {{ + 'AbpIdentity::DisplayName:IsPublic' | abpLocalization + }} + + From 6845b0a58804ba1a61c73504985fbb01446282c6 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Mon, 7 Sep 2020 20:18:24 +0800 Subject: [PATCH 310/474] Update modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Halil İbrahim Kalkan --- .../Volo/Abp/FeatureManagement/Localization/Domain/tr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json index de5ad20624..a7dab6dac3 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json @@ -3,7 +3,7 @@ "texts": { "Features": "Özellikler", "NoFeatureFoundMessage": "Hiç özellik yok.", - "FeatureNotAvailable": "özelliği mevcut değil.", + "FeatureNotAvailable": "Özellik bulunamadı.", "Permission:FeatureManagement": "Özellik yönetimi", "Permission:FeatureManagement.ManageHostFeatures": "Yönetilen Ana Bilgisayar özellikleri" } From e2bba2941eb8125276c5024100ec0260c3dc2a8c Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Mon, 7 Sep 2020 20:18:41 +0800 Subject: [PATCH 311/474] Update modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Halil İbrahim Kalkan --- .../Volo/Abp/FeatureManagement/Localization/Domain/tr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json index a7dab6dac3..285b4143cf 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json @@ -5,6 +5,6 @@ "NoFeatureFoundMessage": "Hiç özellik yok.", "FeatureNotAvailable": "Özellik bulunamadı.", "Permission:FeatureManagement": "Özellik yönetimi", - "Permission:FeatureManagement.ManageHostFeatures": "Yönetilen Ana Bilgisayar özellikleri" + "Permission:FeatureManagement.ManageHostFeatures": "Host özelliklerini düzenle" } } From 61b0bd6e7e5313fb888f0dd45fda60ee654842cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Mon, 7 Sep 2020 15:30:31 +0300 Subject: [PATCH 312/474] AbpComponentDemoSectionTagHelper updated --- .../AbpComponentDemoSectionTagHelper.cs | 82 ++++++++++++++----- .../wwwroot/libs/abp/luxon/abp.luxon.js | 46 +++++++++++ 2 files changed, 107 insertions(+), 21 deletions(-) create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/luxon/abp.luxon.js diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs index 5b3bd7791a..bace14b124 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.Extensions.FileProviders; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers; +using Volo.Abp.Guids; using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.TagHelpers @@ -17,10 +18,14 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S public string Title { get; set; } private readonly IVirtualFileProvider _virtualFileProvider; + private readonly IGuidGenerator _guidGenerator; - public AbpComponentDemoSectionTagHelper(IVirtualFileProvider virtualFileProvider) + public AbpComponentDemoSectionTagHelper( + IVirtualFileProvider virtualFileProvider, + IGuidGenerator guidGenerator) { _virtualFileProvider = virtualFileProvider; + _guidGenerator = guidGenerator; } public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) @@ -29,34 +34,69 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S var content = await output.GetChildContentAsync(); - output.PreContent.AppendHtml("
    "); - output.PreContent.AppendHtml($"

    {Title}

    "); - output.PreContent.AppendHtml("
    "); + var previewId = _guidGenerator.Create(); + var codeBlockId = _guidGenerator.Create(); + + var codeBlockTabId = _guidGenerator.Create(); + var tagHelperCodeBlockId = _guidGenerator.Create(); + var bootstrapCodeBlockId = _guidGenerator.Create(); + + output.PreContent.AppendHtml("
    "); + output.PreContent.AppendHtml("
    "); + output.PreContent.AppendHtml(""); // row + output.PreContent.AppendHtml("
    "); // card-header + output.PreContent.AppendHtml("
    "); + output.PreContent.AppendHtml($"
    "); + output.PreContent.AppendHtml($"
    "); + /* component rendering here */ - output.PostContent.AppendHtml("
    "); //abp-component-demo-section-body - AppendRawSource(output); - AppendBootstrapSource(output, content); - output.PostContent.AppendHtml("
    "); //abp-component-demo-section - } - private static void AppendBootstrapSource(TagHelperOutput output, TagHelperContent content) - { - output.PostContent.AppendHtml("
    "); - output.PostContent.AppendHtml("

    Bootstrap

    "); + output.PostContent.AppendHtml("
    "); // tab-pane + output.PostContent.AppendHtml($"
    "); + + /* CodeBlock tabs */ + + output.PostContent.AppendHtml($"
      "); + output.PostContent.AppendHtml("
    • "); + output.PostContent.AppendHtml($"Abp Tag Helper"); + output.PostContent.AppendHtml("
    • "); + output.PostContent.AppendHtml("
    • "); + output.PostContent.AppendHtml($"Bootstrap Render"); + output.PostContent.AppendHtml("
    • "); + output.PostContent.AppendHtml("
    "); + output.PostContent.AppendHtml($"
    "); + + output.PostContent.AppendHtml($"
    "); output.PostContent.AppendHtml("
    ");
    -            output.PostContent.Append(content.GetContent());
    +            output.PostContent.AppendHtml("");
    +            output.PostContent.Append(GetRawDemoSource());
    +            output.PostContent.AppendHtml("");
                 output.PostContent.AppendHtml("
    "); output.PostContent.AppendHtml("
    "); - } - - private void AppendRawSource(TagHelperOutput output) - { - output.PostContent.AppendHtml("
    "); - output.PostContent.AppendHtml("

    ABP Tag Helpers

    "); + + output.PostContent.AppendHtml($"
    "); output.PostContent.AppendHtml("
    ");
    -            output.PostContent.Append(GetRawDemoSource());
    +            output.PostContent.AppendHtml("");
    +            output.PostContent.Append(content.GetContent());
    +            output.PostContent.AppendHtml("");
                 output.PostContent.AppendHtml("
    "); output.PostContent.AppendHtml("
    "); + + output.PostContent.AppendHtml("
    "); // tab-content + output.PostContent.AppendHtml("
    "); // tab-pane + output.PostContent.AppendHtml("
    "); // tab-content + output.PostContent.AppendHtml("
    "); // card-body + output.PostContent.AppendHtml("
    "); // card } private string GetRawDemoSource() diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/luxon/abp.luxon.js b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/luxon/abp.luxon.js new file mode 100644 index 0000000000..b04de7cadf --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/luxon/abp.luxon.js @@ -0,0 +1,46 @@ +var abp = abp || {}; +(function () { + + if (!luxon) { + throw "abp/luxon library requires the luxon library included to the page!"; + } + + /* TIMING *************************************************/ + + abp.timing = abp.timing || {}; + + var setObjectValue = function (obj, property, value) { + if (typeof property === "string") { + property = property.split('.'); + } + + if (property.length > 1) { + var p = property.shift(); + setObjectValue(obj[p], property, value); + } else { + obj[property[0]] = value; + } + } + + var getObjectValue = function (obj, property) { + return property.split('.').reduce((a, v) => a[v], obj) + } + + abp.timing.convertFieldsToIsoDate = function (form, fields) { + for (var field of fields) { + var dateTime = luxon.DateTime + .fromFormat( + getObjectValue(form, field), + abp.localization.currentCulture.dateTimeFormat.shortDatePattern, + {locale: abp.localization.currentCulture.cultureName} + ); + + if (!dateTime.invalid) { + setObjectValue(form, field, dateTime.toFormat("yyyy-MM-dd HH:mm:ss")) + } + } + + return form; + } + +})(jQuery); From fdc9b682d067679531b0c5af1060844700edcc53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Mon, 7 Sep 2020 15:36:50 +0300 Subject: [PATCH 313/474] Update AbpComponentDemoSectionTagHelper.cs --- .../Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs index bace14b124..722460992d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs @@ -71,7 +71,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S output.PostContent.AppendHtml($"Abp Tag Helper"); output.PostContent.AppendHtml(""); output.PostContent.AppendHtml("
  • "); - output.PostContent.AppendHtml($"Bootstrap Render"); + output.PostContent.AppendHtml($"Bootstrap"); output.PostContent.AppendHtml("
  • "); output.PostContent.AppendHtml(""); output.PostContent.AppendHtml($"
    "); From 165b7c20ef65b338751345cda531d8e503eb12f0 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 7 Sep 2020 15:47:45 +0300 Subject: [PATCH 314/474] abp.io localization update --- .../AbpIoLocalization/Base/Localization/Resources/en.json | 1 + .../AbpIoLocalization/Community/Localization/Resources/en.json | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json index a6ee47e253..d6f334f7cd 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json @@ -26,6 +26,7 @@ "ContributionGuide": "Contribution Guide", "Blog": "Blog", "Commercial": "Commercial", + "MyAccount": "My account", "SeeDocuments": "See Documents" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json index c74a26689f..286346a5b5 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json @@ -78,7 +78,6 @@ "Biography": "Biography", "HasNoPublishedArticlesYet": "has no published articles yet", "Author": "Author", - "MyAccount": "My account", "LatestGithubAnnouncements": "Latest Github Announcements", "SeeAllAnnouncements": "See All Announcements", "LatestBlogPost": "Latest Blog Post", From c6c56e316ff5f993bec15ea1e72b9a3f59bbeaf7 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 7 Sep 2020 16:48:07 +0300 Subject: [PATCH 315/474] identity module localizations & exceptions refactor --- .../Volo/Abp/Identity/Localization/ar.json | 56 ++++++------ .../Volo/Abp/Identity/Localization/cs.json | 58 ++++++------ .../Volo/Abp/Identity/Localization/de.json | 56 ++++++------ .../Volo/Abp/Identity/Localization/en.json | 14 +-- .../Volo/Abp/Identity/Localization/nl.json | 56 ++++++------ .../Volo/Abp/Identity/Localization/pl-PL.json | 58 ++++++------ .../Volo/Abp/Identity/Localization/pt-BR.json | 60 ++++++------- .../Volo/Abp/Identity/Localization/ru.json | 56 ++++++------ .../Volo/Abp/Identity/Localization/sl.json | 56 ++++++------ .../Volo/Abp/Identity/Localization/tr.json | 11 +-- .../Volo/Abp/Identity/Localization/vi.json | 56 ++++++------ .../Abp/Identity/Localization/zh-Hans.json | 61 +++++++------ .../Abp/Identity/Localization/zh-Hant.json | 89 +++++++------------ .../Volo/Abp/Identity/IdentityRoleManager.cs | 12 +-- .../Abp/Identity/OrganizationUnitManager.cs | 3 +- 15 files changed, 337 insertions(+), 365 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json index 41ac73c1b3..906f2a98f6 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json @@ -35,34 +35,34 @@ "DisplayName:NewPasswordConfirm": "تأكيد كلمة المرور الجديدة", "PasswordChangedMessage": "تم تغيير كلمة مرورك بنجاح.", "PersonalSettingsSavedMessage": "تم حفظ إعداداتك الشخصية بنجاح.", - "Identity.DefaultError": "حدث خطأ.", - "Identity.ConcurrencyFailure": "فشل التزامن المتفائل ، تم تعديل الكائن.", - "Identity.DuplicateEmail": "البريد الإلكتروني '{0}' مستخدم بالفعل.", - "Identity.DuplicateRoleName": "اسم الدور '{0}' مأخوذ بالفعل.", - "Identity.DuplicateUserName": "اسم المستخدم '{0}' مأخوذ بالفعل.", - "Identity.InvalidEmail": "البريد الإلكتروني '{0}' غير صالح.", - "Identity.InvalidPasswordHasherCompatibilityMode": "وضع PasswordHasherCompatibilityMode غير صالح.", - "Identity.InvalidPasswordHasherIterationCount": "يجب أن يكون عدد التكرار عددًا صحيحًا موجبًا.", - "Identity.InvalidRoleName": "اسم الدور '{0}' غير صالح.", - "Identity.InvalidToken": "غير صالح token.", - "Identity.InvalidUserName": "اسم المستخدم '{0}' غير صالح ، يمكن أن يحتوي على أحرف أو أرقام فقط.", - "Identity.LoginAlreadyAssociated": "يوجد مستخدم لديه معلومات تسجيل الدخول هذه بالفعل.", - "Identity.PasswordMismatch": "كلمة مرور غير صحيحة.", - "Identity.PasswordRequiresDigit": "يجب أن تحتوي كلمات المرور على رقم واحد على الأقل ('0' - '9').", - "Identity.PasswordRequiresLower": "يجب أن تحتوي كلمات المرور على حرف صغير واحد على الأقل ('a' - 'z').", - "Identity.PasswordRequiresNonAlphanumeric": "يجب أن تحتوي كلمات المرور على حرف واحد غير أبجدي رقمي على الأقل.", - "Identity.PasswordRequiresUpper": "يجب أن تحتوي كلمات المرور على حرف كبير واحد على الأقل ('A' - 'Z').", - "Identity.PasswordTooShort": "يجب أن تتكون كلمات المرور من {0} حرف على الأقل.", - "Identity.RoleNotFound": "الدور {0} غير موجود.", - "Identity.UserAlreadyHasPassword": "لدى المستخدم بالفعل مجموعة كلمات مرور.", - "Identity.UserAlreadyInRole": "المستخدم بالفعل في الدور '{0}'.", - "Identity.UserLockedOut": "المستخدم مغلق.", - "Identity.UserLockoutNotEnabled": "التأمين غير ممكّن لهذا المستخدم.", - "Identity.UserNameNotFound": "المستخدم {0} غير موجود.", - "Identity.UserNotInRole": "المستخدم ليس في الدور '{0}'.", - "Identity.PasswordConfirmationFailed": "كلمة المرور لا تتطابق مع كلمة مرور التأكيد.", - "Identity.StaticRoleRenamingErrorMessage": "لا يمكن إعادة تسمية الأدوار الثابتة.", - "Identity.StaticRoleDeletionErrorMessage": "لا يمكن حذف الأدوار الثابتة.", + "Volo.Abp.Identity:DefaultError": "حدث خطأ.", + "Volo.Abp.Identity:ConcurrencyFailure": "فشل التزامن المتفائل ، تم تعديل الكائن.", + "Volo.Abp.Identity:DuplicateEmail": "البريد الإلكتروني '{0}' مستخدم بالفعل.", + "Volo.Abp.Identity:DuplicateRoleName": "اسم الدور '{0}' مأخوذ بالفعل.", + "Volo.Abp.Identity:DuplicateUserName": "اسم المستخدم '{0}' مأخوذ بالفعل.", + "Volo.Abp.Identity:InvalidEmail": "البريد الإلكتروني '{0}' غير صالح.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "وضع PasswordHasherCompatibilityMode غير صالح.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "يجب أن يكون عدد التكرار عددًا صحيحًا موجبًا.", + "Volo.Abp.Identity:InvalidRoleName": "اسم الدور '{0}' غير صالح.", + "Volo.Abp.Identity:InvalidToken": "غير صالح token.", + "Volo.Abp.Identity:InvalidUserName": "اسم المستخدم '{0}' غير صالح ، يمكن أن يحتوي على أحرف أو أرقام فقط.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "يوجد مستخدم لديه معلومات تسجيل الدخول هذه بالفعل.", + "Volo.Abp.Identity:PasswordMismatch": "كلمة مرور غير صحيحة.", + "Volo.Abp.Identity:PasswordRequiresDigit": "يجب أن تحتوي كلمات المرور على رقم واحد على الأقل ('0' - '9').", + "Volo.Abp.Identity:PasswordRequiresLower": "يجب أن تحتوي كلمات المرور على حرف صغير واحد على الأقل ('a' - 'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "يجب أن تحتوي كلمات المرور على حرف واحد غير أبجدي رقمي على الأقل.", + "Volo.Abp.Identity:PasswordRequiresUpper": "يجب أن تحتوي كلمات المرور على حرف كبير واحد على الأقل ('A' - 'Z').", + "Volo.Abp.Identity:PasswordTooShort": "يجب أن تتكون كلمات المرور من {0} حرف على الأقل.", + "Volo.Abp.Identity:RoleNotFound": "الدور {0} غير موجود.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "لدى المستخدم بالفعل مجموعة كلمات مرور.", + "Volo.Abp.Identity:UserAlreadyInRole": "المستخدم بالفعل في الدور '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "المستخدم مغلق.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "التأمين غير ممكّن لهذا المستخدم.", + "Volo.Abp.Identity:UserNameNotFound": "المستخدم {0} غير موجود.", + "Volo.Abp.Identity:UserNotInRole": "المستخدم ليس في الدور '{0}'.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "كلمة المرور لا تتطابق مع كلمة مرور التأكيد.", + "Volo.Abp.Identity:010005": "لا يمكن إعادة تسمية الأدوار الثابتة.", + "Volo.Abp.Identity:010006": "لا يمكن حذف الأدوار الثابتة.", "Volo.Abp.Identity:010001": "لا يمكنك حذف حسابك الخاص!", "Permission:IdentityManagement": "إدارة الهوية", "Permission:RoleManagement": "إدارة الأدوار", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json index 04c85027a6..fde498c996 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json @@ -35,35 +35,35 @@ "DisplayName:NewPasswordConfirm": "Potvrzení nového hesla", "PasswordChangedMessage": "Vaše heslo bylo úspěšně změněno.", "PersonalSettingsSavedMessage": "Vaše osobní nastavení bylo úspěšně uloženo.", - "Identity.DefaultError": "Došlo k neznámé chybě.", - "Identity.ConcurrencyFailure": "Selhání optimistické souběžnosti, objekt byl změněn.", - "Identity.DuplicateEmail": "Email '{0}' již existuje.", - "Identity.DuplicateRoleName": "Role '{0}' již existuje.", - "Identity.DuplicateUserName": "Uživatelské jméno '{0}' již existuje.", - "Identity.InvalidEmail": "Email '{0}' je neplatný.", - "Identity.InvalidPasswordHasherCompatibilityMode": "Dodaný PasswordHasherCompatibilityMode je neplatný.", - "Identity.InvalidPasswordHasherIterationCount": "Počet iterací musí být kladné celé číslo.", - "Identity.InvalidRoleName": "Role '{0}' je neplatná.", - "Identity.InvalidToken": "Neplatný token.", - "Identity.InvalidUserName": "Uživatelské jméno '{0}' je neplatné, může obsahovat pouze písmena a číslice.", - "Identity.LoginAlreadyAssociated": "Uživatel s tímto přihlášením již existuje.", - "Identity.PasswordMismatch": "Chybné heslo.", - "Identity.PasswordRequiresDigit": "Hesla musí obsahovat alespoň jednu číslici ('0'-'9').", - "Identity.PasswordRequiresLower": "Hesla musí obsahovat alespoň jedno malé písmeno ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Hesla musí obsahovat alespoň jeden nealfanumerický znak.", - "Identity.PasswordRequiresUpper": "Hesla musí obsahovat alespoň jedno velké písmeno ('A'-'Z').", - "Identity.PasswordTooShort": "Hesla musí být dlouhá alespoň {0} znaků.", - "Identity.RoleNotFound": "Role {0} neexistuje.", - "Identity.UserAlreadyHasPassword": "Uživatel již má nastavené heslo.", - "Identity.UserAlreadyInRole": "Uživatel již je v roli '{0}'.", - "Identity.UserLockedOut": "Uživatel je uzamčen.", - "Identity.UserLockoutNotEnabled": "Uzamčení není umožněno pro tohoto uživatele.", - "Identity.UserNameNotFound": "Uživatel {0} neexistuje.", - "Identity.UserNotInRole": "Uživatel není v roli '{0}'.", - "Identity.PasswordConfirmationFailed": "Heslo nesouhlasí s potvrzovacím heslem.", - "Identity.StaticRoleRenamingErrorMessage": "Statické role nemohou být přejmenovány.", - "Identity.StaticRoleDeletionErrorMessage": "Statické role nemohou být smazány.", - "Identity.OrganizationUnit.DuplicateDisplayNameWarning": "Organizační jednotka s názvem {0} již existuje. Na stejné úrovni nelze vytvořit více jednotek se stejným názvem.", + "Volo.Abp.Identity:DefaultError": "Došlo k neznámé chybě.", + "Volo.Abp.Identity:ConcurrencyFailure": "Selhání optimistické souběžnosti, objekt byl změněn.", + "Volo.Abp.Identity:DuplicateEmail": "Email '{0}' již existuje.", + "Volo.Abp.Identity:DuplicateRoleName": "Role '{0}' již existuje.", + "Volo.Abp.Identity:DuplicateUserName": "Uživatelské jméno '{0}' již existuje.", + "Volo.Abp.Identity:InvalidEmail": "Email '{0}' je neplatný.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "Dodaný PasswordHasherCompatibilityMode je neplatný.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "Počet iterací musí být kladné celé číslo.", + "Volo.Abp.Identity:InvalidRoleName": "Role '{0}' je neplatná.", + "Volo.Abp.Identity:InvalidToken": "Neplatný token.", + "Volo.Abp.Identity:InvalidUserName": "Uživatelské jméno '{0}' je neplatné, může obsahovat pouze písmena a číslice.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "Uživatel s tímto přihlášením již existuje.", + "Volo.Abp.Identity:PasswordMismatch": "Chybné heslo.", + "Volo.Abp.Identity:PasswordRequiresDigit": "Hesla musí obsahovat alespoň jednu číslici ('0'-'9').", + "Volo.Abp.Identity:PasswordRequiresLower": "Hesla musí obsahovat alespoň jedno malé písmeno ('a'-'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Hesla musí obsahovat alespoň jeden nealfanumerický znak.", + "Volo.Abp.Identity:PasswordRequiresUpper": "Hesla musí obsahovat alespoň jedno velké písmeno ('A'-'Z').", + "Volo.Abp.Identity:PasswordTooShort": "Hesla musí být dlouhá alespoň {0} znaků.", + "Volo.Abp.Identity:RoleNotFound": "Role {0} neexistuje.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "Uživatel již má nastavené heslo.", + "Volo.Abp.Identity:UserAlreadyInRole": "Uživatel již je v roli '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "Uživatel je uzamčen.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "Uzamčení není umožněno pro tohoto uživatele.", + "Volo.Abp.Identity:UserNameNotFound": "Uživatel {0} neexistuje.", + "Volo.Abp.Identity:UserNotInRole": "Uživatel není v roli '{0}'.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "Heslo nesouhlasí s potvrzovacím heslem.", + "Volo.Abp.Identity:010005": "Statické role nemohou být přejmenovány.", + "Volo.Abp.Identity:010006": "Statické role nemohou být smazány.", + "Volo.Abp.Identity:010004": "Organizační jednotka s názvem {0} již existuje. Na stejné úrovni nelze vytvořit více jednotek se stejným názvem.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Maximální povolený počet členů organizační jednotky pro uživatele", "Volo.Abp.Identity:010001": "Nemůžete smazat svůj vlastní účet!", "Permission:IdentityManagement": "Správa identit", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json index ccd2b60cfc..a8da0baae1 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json @@ -35,34 +35,34 @@ "DisplayName:NewPasswordConfirm": "Neues Passwort bestätigen", "PasswordChangedMessage": "Ihr Passwort wurde erfolgreich geändert.", "PersonalSettingsSavedMessage": "Ihre persönlichen Einstellungen wurden erfolgreich gespeichert.", - "Identity.DefaultError": "Ein unbekannter Fehler ist aufgetreten.", - "Identity.ConcurrencyFailure": "Optimistischer Nebenläufigkeitsfehler, Objekt wurde geändert.", - "Identity.DuplicateEmail": "E-Mail '{0}' ist bereits vergeben.", - "Identity.DuplicateRoleName": "Der Rollenname '{0}' ist bereits vergeben.", - "Identity.DuplicateUserName": "Der Benutzername '{0}' ist bereits vergeben.", - "Identity.InvalidEmail": "E-Mail '{0}' ist ungültig.", - "Identity.InvalidPasswordHasherCompatibilityMode": "Der angegebene PasswordHasherCompatibilityMode ist ungültig.", - "Identity.InvalidPasswordHasherIterationCount": "Die Iterationszahl muss eine positive Ganzzahl sein.", - "Identity.InvalidRoleName": "Der Rollenname '{0}' ist ungültig.", - "Identity.InvalidToken": "Ungültiges Token.", - "Identity.InvalidUserName": "Benutzername '{0}' ist ungültig, kann nur Buchstaben oder Ziffern enthalten.", - "Identity.LoginAlreadyAssociated": "Ein Benutzer mit diesem Login existiert bereits.", - "Identity.PasswordMismatch": "Falsches Passwort.", - "Identity.PasswordRequiresDigit": "Passwörter müssen mindestens eine Ziffer ('0'-'9') enthalten.", - "Identity.PasswordRequiresLower": "Passwörter müssen mindestens einen Kleinbuchstaben ('a'-'z') enthalten.", - "Identity.PasswordRequiresNonAlphanumeric": "Passwörter müssen mindestens ein Sonderzeichen enthalten.", - "Identity.PasswordRequiresUpper": "Passwörter müssen mindestens einen Großbuchstaben ('A'-'Z') enthalten.", - "Identity.PasswordTooShort": "Passwörter müssen mindestens {0} Zeichen enthalten.", - "Identity.RoleNotFound": "Die Rolle {0} existiert nicht.", - "Identity.UserAlreadyHasPassword": "Der Benutzer hat bereits ein Passwort gesetzt.", - "Identity.UserAlreadyInRole": "Benutzer ist bereits in der Rolle '{0}'.", - "Identity.UserLockedOut": "Benutzer ist ausgesperrt.", - "Identity.UserLockoutNotEnabled": "Aussperrung ist für diesen Benutzer nicht aktiviert.", - "Identity.UserNameNotFound": "Benutzer {0} existiert nicht.", - "Identity.UserNotInRole": "Benutzer ist nicht in der Rolle '{0}'.", - "Identity.PasswordConfirmationFailed": "Passwort stimmt nicht mit dem Bestätigungspasswort überein.", - "Identity.StaticRoleRenamingErrorMessage": "Statische Rollen können nicht umbenannt werden.", - "Identity.StaticRoleDeletionErrorMessage": "Statische Rollen können nicht gelöscht werden.", + "Volo.Abp.Identity:DefaultError": "Ein unbekannter Fehler ist aufgetreten.", + "Volo.Abp.Identity:ConcurrencyFailure": "Optimistischer Nebenläufigkeitsfehler, Objekt wurde geändert.", + "Volo.Abp.Identity:DuplicateEmail": "E-Mail '{0}' ist bereits vergeben.", + "Volo.Abp.Identity:DuplicateRoleName": "Der Rollenname '{0}' ist bereits vergeben.", + "Volo.Abp.Identity:DuplicateUserName": "Der Benutzername '{0}' ist bereits vergeben.", + "Volo.Abp.Identity:InvalidEmail": "E-Mail '{0}' ist ungültig.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "Der angegebene PasswordHasherCompatibilityMode ist ungültig.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "Die Iterationszahl muss eine positive Ganzzahl sein.", + "Volo.Abp.Identity:InvalidRoleName": "Der Rollenname '{0}' ist ungültig.", + "Volo.Abp.Identity:InvalidToken": "Ungültiges Token.", + "Volo.Abp.Identity:InvalidUserName": "Benutzername '{0}' ist ungültig, kann nur Buchstaben oder Ziffern enthalten.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "Ein Benutzer mit diesem Login existiert bereits.", + "Volo.Abp.Identity:PasswordMismatch": "Falsches Passwort.", + "Volo.Abp.Identity:PasswordRequiresDigit": "Passwörter müssen mindestens eine Ziffer ('0'-'9') enthalten.", + "Volo.Abp.Identity:PasswordRequiresLower": "Passwörter müssen mindestens einen Kleinbuchstaben ('a'-'z') enthalten.", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Passwörter müssen mindestens ein Sonderzeichen enthalten.", + "Volo.Abp.Identity:PasswordRequiresUpper": "Passwörter müssen mindestens einen Großbuchstaben ('A'-'Z') enthalten.", + "Volo.Abp.Identity:PasswordTooShort": "Passwörter müssen mindestens {0} Zeichen enthalten.", + "Volo.Abp.Identity:RoleNotFound": "Die Rolle {0} existiert nicht.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "Der Benutzer hat bereits ein Passwort gesetzt.", + "Volo.Abp.Identity:UserAlreadyInRole": "Benutzer ist bereits in der Rolle '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "Benutzer ist ausgesperrt.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "Aussperrung ist für diesen Benutzer nicht aktiviert.", + "Volo.Abp.Identity:UserNameNotFound": "Benutzer {0} existiert nicht.", + "Volo.Abp.Identity:UserNotInRole": "Benutzer ist nicht in der Rolle '{0}'.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "Passwort stimmt nicht mit dem Bestätigungspasswort überein.", + "Volo.Abp.Identity:010005": "Statische Rollen können nicht umbenannt werden.", + "Volo.Abp.Identity:010006": "Statische Rollen können nicht gelöscht werden.", "Volo.Abp.Identity:010001": "Sie können Ihr eigenes Konto nicht löschen!", "Permission:IdentityManagement": "Identitätsverwaltung", "Permission:RoleManagement": "Rollenverwaltung", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json index 8259e1abb2..9fe464ae96 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json @@ -61,11 +61,13 @@ "Volo.Abp.Identity:UserNameNotFound": "User {0} does not exist.", "Volo.Abp.Identity:UserNotInRole": "User is not in role '{0}'.", "Volo.Abp.Identity:PasswordConfirmationFailed": "Password does not match the confirm password.", - "Volo.Abp.Identity:StaticRoleRenamingErrorMessage": "Static roles can not be renamed.", - "Volo.Abp.Identity:StaticRoleDeletionErrorMessage": "Static roles can not be deleted.", - "Identity.OrganizationUnit.DuplicateDisplayNameWarning": "There is already an organization unit with name {0}. Two units with same name can not be created in same level.", - "Identity.OrganizationUnit.MaxUserMembershipCount": "Maximum allowed organization unit membership count for a user", "Volo.Abp.Identity:010001": "You can not delete your own account!", + "Volo.Abp.Identity:010002": "Can not set more than {MaxUserMembershipCount} organization unit for a user!", + "Volo.Abp.Identity:010003": "Can not change password of an externally logged in user!", + "Volo.Abp.Identity:010004": "There is already an organization unit with name {0}. Two units with same name can not be created in same level.", + "Volo.Abp.Identity:010005": "Static roles can not be renamed.", + "Volo.Abp.Identity:010006": "Static roles can not be deleted.", + "Identity.OrganizationUnit.MaxUserMembershipCount": "Maximum allowed organization unit membership count for a user", "Permission:IdentityManagement": "Identity management", "Permission:RoleManagement": "Role management", "Permission:Create": "Create", @@ -101,8 +103,6 @@ "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "Whether the phoneNumber can be confirmed by the user.", "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Whether a confirmed telephone number is required to sign in.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Whether the username can be updated by the user.", - "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Whether the email can be updated by the user.", - "Volo.Abp.Identity:010002": "Can not set more than {MaxUserMembershipCount} organization unit for a user!", - "Volo.Abp.Identity:010003": "Can not change password of an externally logged in user!" + "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Whether the email can be updated by the user." } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json index 84ed47efce..1ca863e935 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json @@ -35,34 +35,34 @@ "DisplayName:NewPasswordConfirm": "Bevestig nieuw wachtwoord", "PasswordChangedMessage": "Uw wachtwoord is met succes veranderd.", "PersonalSettingsSavedMessage": "Uw persoonlijke instellingen zijn succesvol opgeslagen.", - "Identity.DefaultError": "Er is een onbekende fout opgetreden.", - "Identity.ConcurrencyFailure": "Optimistische gelijktijdigheidsfout, object is gewijzigd.", - "Identity.DuplicateEmail": "E-mail '{0}' is al in gebruik.", - "Identity.DuplicateRoleName": "De rolnaam '{0}' is al in gebruik.", - "Identity.DuplicateUserName": "Gebruikersnaam '{0}' is al in gebruik.", - "Identity.InvalidEmail": "E-mail' {0} 'is ongeldig.", - "Identity.InvalidPasswordHasherCompatibilityMode": "De opgegeven PasswordHasherCompatibilityMode is ongeldig.", - "Identity.InvalidPasswordHasherIterationCount": "De iteratietelling moet een positief geheel getal zijn.", - "Identity.InvalidRoleName": "Rolnaam '{0}' is ongeldig.", - "Identity.InvalidToken": "Ongeldig token.", - "Identity.InvalidUserName": "Gebruikersnaam '{0}' is ongeldig, mag alleen letters of cijfers bevatten.", - "Identity.LoginAlreadyAssociated": "Er bestaat al een gebruiker met deze login.", - "Identity.PasswordMismatch": "Incorrect wachtwoord.", - "Identity.PasswordRequiresDigit": "Wachtwoorden moeten minimaal één cijfer bevatten ('0' - '9').", - "Identity.PasswordRequiresLower": "Wachtwoorden moeten minstens één kleine letter bevatten ('a' - 'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Wachtwoorden moeten minimaal één niet-alfanumeriek teken bevatten.", - "Identity.PasswordRequiresUpper": "Wachtwoorden moeten ten minste één hoofdletter bevatten ('A' - 'Z').", - "Identity.PasswordTooShort": "Wachtwoorden moeten uit minimaal {0} tekens bestaan.", - "Identity.RoleNotFound": "Rol {0} bestaat niet.", - "Identity.UserAlreadyHasPassword": "Gebruiker heeft al een wachtwoord ingesteld.", - "Identity.UserAlreadyInRole": "Gebruiker al in rol '{0}'.", - "Identity.UserLockedOut": "Gebruiker is geblokkeerd.", - "Identity.UserLockoutNotEnabled": "Lockout is niet ingeschakeld voor deze gebruiker.", - "Identity.UserNameNotFound": "Gebruiker {0} bestaat niet.", - "Identity.UserNotInRole": "Gebruiker speelt geen rol '{0}'.", - "Identity.PasswordConfirmationFailed": "Wachtwoord komt niet overeen met de wachtwoord bevestiging.", - "Identity.StaticRoleRenamingErrorMessage": "Statische rollen kunnen niet worden hernoemd.", - "Identity.StaticRoleDeletionErrorMessage": "Statische rollen kunnen niet worden verwijderd.", + "Volo.Abp.Identity:DefaultError": "Er is een onbekende fout opgetreden.", + "Volo.Abp.Identity:ConcurrencyFailure": "Optimistische gelijktijdigheidsfout, object is gewijzigd.", + "Volo.Abp.Identity:DuplicateEmail": "E-mail '{0}' is al in gebruik.", + "Volo.Abp.Identity:DuplicateRoleName": "De rolnaam '{0}' is al in gebruik.", + "Volo.Abp.Identity:DuplicateUserName": "Gebruikersnaam '{0}' is al in gebruik.", + "Volo.Abp.Identity:InvalidEmail": "E-mail' {0} 'is ongeldig.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "De opgegeven PasswordHasherCompatibilityMode is ongeldig.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "De iteratietelling moet een positief geheel getal zijn.", + "Volo.Abp.Identity:InvalidRoleName": "Rolnaam '{0}' is ongeldig.", + "Volo.Abp.Identity:InvalidToken": "Ongeldig token.", + "Volo.Abp.Identity:InvalidUserName": "Gebruikersnaam '{0}' is ongeldig, mag alleen letters of cijfers bevatten.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "Er bestaat al een gebruiker met deze login.", + "Volo.Abp.Identity:PasswordMismatch": "Incorrect wachtwoord.", + "Volo.Abp.Identity:PasswordRequiresDigit": "Wachtwoorden moeten minimaal één cijfer bevatten ('0' - '9').", + "Volo.Abp.Identity:PasswordRequiresLower": "Wachtwoorden moeten minstens één kleine letter bevatten ('a' - 'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Wachtwoorden moeten minimaal één niet-alfanumeriek teken bevatten.", + "Volo.Abp.Identity:PasswordRequiresUpper": "Wachtwoorden moeten ten minste één hoofdletter bevatten ('A' - 'Z').", + "Volo.Abp.Identity:PasswordTooShort": "Wachtwoorden moeten uit minimaal {0} tekens bestaan.", + "Volo.Abp.Identity:RoleNotFound": "Rol {0} bestaat niet.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "Gebruiker heeft al een wachtwoord ingesteld.", + "Volo.Abp.Identity:UserAlreadyInRole": "Gebruiker al in rol '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "Gebruiker is geblokkeerd.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "Lockout is niet ingeschakeld voor deze gebruiker.", + "Volo.Abp.Identity:UserNameNotFound": "Gebruiker {0} bestaat niet.", + "Volo.Abp.Identity:UserNotInRole": "Gebruiker speelt geen rol '{0}'.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "Wachtwoord komt niet overeen met de wachtwoord bevestiging.", + "Volo.Abp.Identity:010005": "Statische rollen kunnen niet worden hernoemd.", + "Volo.Abp.Identity:010006": "Statische rollen kunnen niet worden verwijderd.", "Volo.Abp.Identity:010001": "U kunt uw eigen account niet verwijderen!", "Permission:IdentityManagement": "Identiteitsbeheer", "Permission:RoleManagement": "Rolbeheer", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json index 54d137988d..e8094553a9 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json @@ -35,34 +35,34 @@ "DisplayName:NewPasswordConfirm": "Powtierdź nowe hasło", "PasswordChangedMessage": "Twoje hasło zostało zmienione pomyślnie.", "PersonalSettingsSavedMessage": "Twoje personalne ustawienia zostały zapisane pomyślnie.", - "Identity.DefaultError": "Wystąpił niespodziewany błąd.", - "Identity.ConcurrencyFailure": "Optymistyczny błąd współbierzności, obiekt został zmodyfikowany.", - "Identity.DuplicateEmail": "Email '{0}' już istnieje.", - "Identity.DuplicateRoleName": "Rola '{0}' już istnieje.", - "Identity.DuplicateUserName": "Nazwa użytkownika '{0}' już istnieje.", - "Identity.InvalidEmail": "Email '{0}' jest niepoprawny.", - "Identity.InvalidPasswordHasherCompatibilityMode": "Dostawca PasswordHasherCompatibilityMode jest niepoprawny.", - "Identity.InvalidPasswordHasherIterationCount": "Wartość iteracji musi być większa od zera.", - "Identity.InvalidRoleName": "Rola '{0}' jest niepoprawna.", - "Identity.InvalidToken": "Niepoprawny token.", - "Identity.InvalidUserName": "Nazwa użytkownika '{0}' jest niepoprawna, może zawierać tylko litery i cyfry.", - "Identity.LoginAlreadyAssociated": "Użytkownik o tym loginie już istnieje.", - "Identity.PasswordMismatch": "Niepoprawne hasło.", - "Identity.PasswordRequiresDigit": "Hasło musi zawierać przynajmniej jedną cyfrę ('0'-'9').", - "Identity.PasswordRequiresLower": "Hasło musi zawierać przynajmniej jedną małą literę ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Hasło musi zawierać przynajmniej jeden znak alfanumeryczny.", - "Identity.PasswordRequiresUpper": "Hasło musi zawierać przynajmniej jedną wielką literę ('A'-'Z').", - "Identity.PasswordTooShort": "Hasło musi zawierać przynajmnie {0} znaków.", - "Identity.RoleNotFound": "Rola {0} nie istnieje.", - "Identity.UserAlreadyHasPassword": "Użytkownik ma już ustawione hasło.", - "Identity.UserAlreadyInRole": "Użytkownik jest już przypisany do roli '{0}'.", - "Identity.UserLockedOut": "Użytkownik jest zablokowany.", - "Identity.UserLockoutNotEnabled": "Blokada nie jest włączona dla tego użytkownika.", - "Identity.UserNameNotFound": "Użytkownik {0} nie istnieje.", - "Identity.UserNotInRole": "Użytkownik nie posiada roli '{0}'.", - "Identity.PasswordConfirmationFailed": "Podane hasła różnią się od siebie.", - "Identity.StaticRoleRenamingErrorMessage": "Statyczna rola nie może mieć zmienionej nazwy.", - "Identity.StaticRoleDeletionErrorMessage": "Statyczna rola nie może zostać usunięta.", + "Volo.Abp.Identity:DefaultError": "Wystąpił niespodziewany błąd.", + "Volo.Abp.Identity:ConcurrencyFailure": "Optymistyczny błąd współbierzności, obiekt został zmodyfikowany.", + "Volo.Abp.Identity:DuplicateEmail": "Email '{0}' już istnieje.", + "Volo.Abp.Identity:DuplicateRoleName": "Rola '{0}' już istnieje.", + "Volo.Abp.Identity:DuplicateUserName": "Nazwa użytkownika '{0}' już istnieje.", + "Volo.Abp.Identity:InvalidEmail": "Email '{0}' jest niepoprawny.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "Dostawca PasswordHasherCompatibilityMode jest niepoprawny.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "Wartość iteracji musi być większa od zera.", + "Volo.Abp.Identity:InvalidRoleName": "Rola '{0}' jest niepoprawna.", + "Volo.Abp.Identity:InvalidToken": "Niepoprawny token.", + "Volo.Abp.Identity:InvalidUserName": "Nazwa użytkownika '{0}' jest niepoprawna, może zawierać tylko litery i cyfry.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "Użytkownik o tym loginie już istnieje.", + "Volo.Abp.Identity:PasswordMismatch": "Niepoprawne hasło.", + "Volo.Abp.Identity:PasswordRequiresDigit": "Hasło musi zawierać przynajmniej jedną cyfrę ('0'-'9').", + "Volo.Abp.Identity:PasswordRequiresLower": "Hasło musi zawierać przynajmniej jedną małą literę ('a'-'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Hasło musi zawierać przynajmniej jeden znak alfanumeryczny.", + "Volo.Abp.Identity:PasswordRequiresUpper": "Hasło musi zawierać przynajmniej jedną wielką literę ('A'-'Z').", + "Volo.Abp.Identity:PasswordTooShort": "Hasło musi zawierać przynajmnie {0} znaków.", + "Volo.Abp.Identity:RoleNotFound": "Rola {0} nie istnieje.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "Użytkownik ma już ustawione hasło.", + "Volo.Abp.Identity:UserAlreadyInRole": "Użytkownik jest już przypisany do roli '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "Użytkownik jest zablokowany.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "Blokada nie jest włączona dla tego użytkownika.", + "Volo.Abp.Identity:UserNameNotFound": "Użytkownik {0} nie istnieje.", + "Volo.Abp.Identity:UserNotInRole": "Użytkownik nie posiada roli '{0}'.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "Podane hasła różnią się od siebie.", + "Volo.Abp.Identity:010005": "Statyczna rola nie może mieć zmienionej nazwy.", + "Volo.Abp.Identity:010006": "Statyczna rola nie może zostać usunięta.", "Volo.Abp.Identity:010001": "Nie możesz usunąć swojego własnego konta!", "Permission:IdentityManagement": "Zarządzanie tożsamością", "Permission:RoleManagement": "Zarządanie rolami", @@ -73,4 +73,4 @@ "Permission:UserManagement": "Zarządzanie użytkownikami", "Permission:UserLookup": "Wyszukiwanie użytkownika" } -} \ No newline at end of file +} diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json index 1dda38b2a5..99c2289e66 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json @@ -35,35 +35,35 @@ "DisplayName:NewPasswordConfirm": "Confirmar nova senha", "PasswordChangedMessage": "Sua senha foi alterada com sucesso.", "PersonalSettingsSavedMessage": "Suas configurações pessoais foram salvas com sucesso.", - "Identity.DefaultError": "Ocorreu uma falha desconhecida.", - "Identity.ConcurrencyFailure": "Falha de concorrência otimista, o objeto foi modificado.", - "Identity.DuplicateEmail": "O e-mail '{0}' já está em uso.", - "Identity.DuplicateRoleName": "O nome de perfil '{0}' já está em uso.", - "Identity.DuplicateUserName": "O usuário '{0}' já está em uso.", - "Identity.InvalidEmail": "E-mail '{0}' inválido.", - "Identity.InvalidPasswordHasherCompatibilityMode": "O PasswordHasherCompatibilityMode é inválido.", - "Identity.InvalidPasswordHasherIterationCount": "A contagem de iterações deve ser um inteiro positivo.", - "Identity.InvalidRoleName": "Perfil '{0}' inválido.", - "Identity.InvalidToken": "Token inválido.", - "Identity.InvalidUserName": "Usuário '{0}' é inválido, somente pode conter letras ou números.", - "Identity.LoginAlreadyAssociated": "Um usuário com este login já existe.", - "Identity.PasswordMismatch": "Senha incorreta.", - "Identity.PasswordRequiresDigit": "Senhas devem possuir pelo menos um dígito ('0'-'9').", - "Identity.PasswordRequiresLower": "Senhas devem possuir pelo menos uma letra minúscula ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Senhas devem possuir pelo menos um caractere especial.", - "Identity.PasswordRequiresUpper": "Senhas devem possuir pelo menos uma letra maiúscula ('A'-'Z').", - "Identity.PasswordTooShort": "Senhas devem possuir pelo menos {0} caracteres.", - "Identity.RoleNotFound": "Perfil {0} não existe.", - "Identity.UserAlreadyHasPassword": "O usuário já possui uma senha.", - "Identity.UserAlreadyInRole": "Usuário já possui o perfil '{0}'.", - "Identity.UserLockedOut": "O usuário está bloqueado.", - "Identity.UserLockoutNotEnabled": "Este usuário não pode ser bloqueado.", - "Identity.UserNameNotFound": "Usuário {0} não existe.", - "Identity.UserNotInRole": "Usuário não está no perfil '{0}'.", - "Identity.PasswordConfirmationFailed": "A senha não confere com a confirmação de senha.", - "Identity.StaticRoleRenamingErrorMessage": "Perfis estáticos não podem ser renomeados.", - "Identity.StaticRoleDeletionErrorMessage": "Perfis estáticos não podem ser excluídos.", - "Identity.OrganizationUnit.DuplicateDisplayNameWarning": "Já existe uma unidade organizacional com o nome {0}. Duas unidades com o mesmo nome não pode ser criada no mesmo nível.", + "Volo.Abp.Identity:DefaultError": "Ocorreu uma falha desconhecida.", + "Volo.Abp.Identity:ConcurrencyFailure": "Falha de concorrência otimista, o objeto foi modificado.", + "Volo.Abp.Identity:DuplicateEmail": "O e-mail '{0}' já está em uso.", + "Volo.Abp.Identity:DuplicateRoleName": "O nome de perfil '{0}' já está em uso.", + "Volo.Abp.Identity:DuplicateUserName": "O usuário '{0}' já está em uso.", + "Volo.Abp.Identity:InvalidEmail": "E-mail '{0}' inválido.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "O PasswordHasherCompatibilityMode é inválido.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "A contagem de iterações deve ser um inteiro positivo.", + "Volo.Abp.Identity:InvalidRoleName": "Perfil '{0}' inválido.", + "Volo.Abp.Identity:InvalidToken": "Token inválido.", + "Volo.Abp.Identity:InvalidUserName": "Usuário '{0}' é inválido, somente pode conter letras ou números.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "Um usuário com este login já existe.", + "Volo.Abp.Identity:PasswordMismatch": "Senha incorreta.", + "Volo.Abp.Identity:PasswordRequiresDigit": "Senhas devem possuir pelo menos um dígito ('0'-'9').", + "Volo.Abp.Identity:PasswordRequiresLower": "Senhas devem possuir pelo menos uma letra minúscula ('a'-'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Senhas devem possuir pelo menos um caractere especial.", + "Volo.Abp.Identity:PasswordRequiresUpper": "Senhas devem possuir pelo menos uma letra maiúscula ('A'-'Z').", + "Volo.Abp.Identity:PasswordTooShort": "Senhas devem possuir pelo menos {0} caracteres.", + "Volo.Abp.Identity:RoleNotFound": "Perfil {0} não existe.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "O usuário já possui uma senha.", + "Volo.Abp.Identity:UserAlreadyInRole": "Usuário já possui o perfil '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "O usuário está bloqueado.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "Este usuário não pode ser bloqueado.", + "Volo.Abp.Identity:UserNameNotFound": "Usuário {0} não existe.", + "Volo.Abp.Identity:UserNotInRole": "Usuário não está no perfil '{0}'.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "A senha não confere com a confirmação de senha.", + "Volo.Abp.Identity:010005": "Perfis estáticos não podem ser renomeados.", + "Volo.Abp.Identity:010006": "Perfis estáticos não podem ser excluídos.", + "Volo.Abp.Identity:010004": "Já existe uma unidade organizacional com o nome {0}. Duas unidades com o mesmo nome não pode ser criada no mesmo nível.", "Volo.Abp.Identity:010001": "Você não pode deletar sua própria conta!", "Permission:IdentityManagement": "Acessos", "Permission:RoleManagement": "Perfis", @@ -74,4 +74,4 @@ "Permission:UserManagement": "Usuários", "Permission:UserLookup": "Pesquisa de usuário" } -} \ No newline at end of file +} diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json index 1df7b63bfe..ebc304484a 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json @@ -35,34 +35,34 @@ "DisplayName:NewPasswordConfirm": "Подтверждение нового пароля", "PasswordChangedMessage": "Ваш пароль был успешно изменен.", "PersonalSettingsSavedMessage": "Ваши персональные настройки были успешно сохранены.", - "Identity.DefaultError": "Возникла непредвиденная ошибка.", - "Identity.ConcurrencyFailure": "Ошибка оптимального управления многопоточностью, объект был изменен.", - "Identity.DuplicateEmail": "Электронная почта '{0}' уже зарегистрирована.", - "Identity.DuplicateRoleName": "Имя роли '{0}' уже занято.", - "Identity.DuplicateUserName": "Имя пользователя '{0}' уже занято.", - "Identity.InvalidEmail": "Адрес электронной почты '{0}' недействителен.", - "Identity.InvalidPasswordHasherCompatibilityMode": "Предоставленный PasswordHasherCompatibilityMode недействителен.", - "Identity.InvalidPasswordHasherIterationCount": "Число итераций должно быть положительным целым числом.", - "Identity.InvalidRoleName": "Имя роли '{0}' недопустимо.", - "Identity.InvalidToken": "Недопустимый маркер.", - "Identity.InvalidUserName": "Имя пользователя '{0}' недопустимо и может содержать только буквы или цифры.", - "Identity.LoginAlreadyAssociated": "Пользователь с таким логином уже существует.", - "Identity.PasswordMismatch": "Неверный пароль.", - "Identity.PasswordRequiresDigit": "Пароль должен содержать по крайней мере одну цифру.", - "Identity.PasswordRequiresLower": "Пароль должен содержать хотя бы одну строчную букву.", - "Identity.PasswordRequiresNonAlphanumeric": "Пароль должен иметь по крайней мере один не буквенно-цифровой символ.", - "Identity.PasswordRequiresUpper": "Пароль должен иметь хотя бы одну букву верхнего регистра.", - "Identity.PasswordTooShort": "Пароль должен содержать не менее {0} символов.", - "Identity.RoleNotFound": "Роль {0} не существует.", - "Identity.UserAlreadyHasPassword": "У пользователя уже установлен пароль.", - "Identity.UserAlreadyInRole": "Пользователь уже имеет роль '{0}'.", - "Identity.UserLockedOut": "Пользователь временно заблокирован.", - "Identity.UserLockoutNotEnabled": "Блокировка не активирована для этого пользователя.", - "Identity.UserNameNotFound": "Пользователь {0} не существует.", - "Identity.UserNotInRole": "Пользователь не имеет роль '{0}'.", - "Identity.PasswordConfirmationFailed": "Пароли не совпадают.", - "Identity.StaticRoleRenamingErrorMessage": "Статические роли не могут быть переименованы.", - "Identity.StaticRoleDeletionErrorMessage": "Статические роли не могут быть удалены.", + "Volo.Abp.Identity:DefaultError": "Возникла непредвиденная ошибка.", + "Volo.Abp.Identity:ConcurrencyFailure": "Ошибка оптимального управления многопоточностью, объект был изменен.", + "Volo.Abp.Identity:DuplicateEmail": "Электронная почта '{0}' уже зарегистрирована.", + "Volo.Abp.Identity:DuplicateRoleName": "Имя роли '{0}' уже занято.", + "Volo.Abp.Identity:DuplicateUserName": "Имя пользователя '{0}' уже занято.", + "Volo.Abp.Identity:InvalidEmail": "Адрес электронной почты '{0}' недействителен.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "Предоставленный PasswordHasherCompatibilityMode недействителен.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "Число итераций должно быть положительным целым числом.", + "Volo.Abp.Identity:InvalidRoleName": "Имя роли '{0}' недопустимо.", + "Volo.Abp.Identity:InvalidToken": "Недопустимый маркер.", + "Volo.Abp.Identity:InvalidUserName": "Имя пользователя '{0}' недопустимо и может содержать только буквы или цифры.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "Пользователь с таким логином уже существует.", + "Volo.Abp.Identity:PasswordMismatch": "Неверный пароль.", + "Volo.Abp.Identity:PasswordRequiresDigit": "Пароль должен содержать по крайней мере одну цифру.", + "Volo.Abp.Identity:PasswordRequiresLower": "Пароль должен содержать хотя бы одну строчную букву.", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Пароль должен иметь по крайней мере один не буквенно-цифровой символ.", + "Volo.Abp.Identity:PasswordRequiresUpper": "Пароль должен иметь хотя бы одну букву верхнего регистра.", + "Volo.Abp.Identity:PasswordTooShort": "Пароль должен содержать не менее {0} символов.", + "Volo.Abp.Identity:RoleNotFound": "Роль {0} не существует.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "У пользователя уже установлен пароль.", + "Volo.Abp.Identity:UserAlreadyInRole": "Пользователь уже имеет роль '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "Пользователь временно заблокирован.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "Блокировка не активирована для этого пользователя.", + "Volo.Abp.Identity:UserNameNotFound": "Пользователь {0} не существует.", + "Volo.Abp.Identity:UserNotInRole": "Пользователь не имеет роль '{0}'.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "Пароли не совпадают.", + "Volo.Abp.Identity:010005": "Статические роли не могут быть переименованы.", + "Volo.Abp.Identity:010006": "Статические роли не могут быть удалены.", "Volo.Abp.Identity:010001": "Вы не можете удалить свой собственный аккаунт!", "Permission:IdentityManagement": "Управление идентификацией", "Permission:RoleManagement": "Управление ролями", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json index 5f3cd96c55..8471735066 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json @@ -35,34 +35,34 @@ "DisplayName:NewPasswordConfirm": "Potrdite novo geslo", "PasswordChangedMessage": "Vaše geslo je bilo uspešno spremenjeno.", "PersonalSettingsSavedMessage": "Vaše osebne nastavitve so bile uspešno shranjene.", - "Identity.DefaultError": "Zgodila se je neznana napaka.", - "Identity.ConcurrencyFailure": "Napaka pri optimistični sočasnosti, objekt je bil spremenjen.", - "Identity.DuplicateEmail": "E-poštni naslov '{0}' je že zaseden.", - "Identity.DuplicateRoleName": "Naziv vloge '{0}' je že zasedeno.", - "Identity.DuplicateUserName": "Uporabniško ime '{0}' je že zasedeno.", - "Identity.InvalidEmail": "E-poštni naslov '{0}' ni veljaven.", - "Identity.InvalidPasswordHasherCompatibilityMode": "Navedeni PasswordHasherCompatibilityMode ni veljaven.", - "Identity.InvalidPasswordHasherIterationCount": "Število iteracij mora biti pozitivno celo število.", - "Identity.InvalidRoleName": "Naziv vloge '{0}' ni veljaven.", - "Identity.InvalidToken": "Neveljaven žeton.", - "Identity.InvalidUserName": "Uporabniško ime '{0}' ni veljavno, vsebuje lahko le črke in številke.", - "Identity.LoginAlreadyAssociated": "Uporabnik s to prijavo že obstaja.", - "Identity.PasswordMismatch": "Nepravilno geslo.", - "Identity.PasswordRequiresDigit": "Gesla morajo imeti vsaj eno številko ('0'-'9').", - "Identity.PasswordRequiresLower": "Gesla morajo imeti vsaj eno malo črko ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Gesla morajo imeti vsaj en ne-alfanumerični znak.", - "Identity.PasswordRequiresUpper": "Gesla morajo imeti vsaj eno veliko črko ('A'-'Z').", - "Identity.PasswordTooShort": "Gesla morajo biti dolga vsaj {0} znakov.", - "Identity.RoleNotFound": "Vloga {0} ne obstaja.", - "Identity.UserAlreadyHasPassword": "Uporabnik že ima nastavljeno geslo.", - "Identity.UserAlreadyInRole": "Uporabnik že ima dodeljeno vlogo '{0}'.", - "Identity.UserLockedOut": "Uporabnik je zaklenjen.", - "Identity.UserLockoutNotEnabled": "Zaklepanje za tega uporabnika ni omogočeno.", - "Identity.UserNameNotFound": "Uporabnik {0} ne obstaja.", - "Identity.UserNotInRole": "Uporabnik nima dodeljene vloge '{0}'.", - "Identity.PasswordConfirmationFailed": "Geslo se ne ujema s potrditvenim geslom.", - "Identity.StaticRoleRenamingErrorMessage": "Statičnih vlog ni mogoče preimenovati.", - "Identity.StaticRoleDeletionErrorMessage": "Statičnih vlog ni mogoče izbrisati.", + "Volo.Abp.Identity:DefaultError": "Zgodila se je neznana napaka.", + "Volo.Abp.Identity:ConcurrencyFailure": "Napaka pri optimistični sočasnosti, objekt je bil spremenjen.", + "Volo.Abp.Identity:DuplicateEmail": "E-poštni naslov '{0}' je že zaseden.", + "Volo.Abp.Identity:DuplicateRoleName": "Naziv vloge '{0}' je že zasedeno.", + "Volo.Abp.Identity:DuplicateUserName": "Uporabniško ime '{0}' je že zasedeno.", + "Volo.Abp.Identity:InvalidEmail": "E-poštni naslov '{0}' ni veljaven.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "Navedeni PasswordHasherCompatibilityMode ni veljaven.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "Število iteracij mora biti pozitivno celo število.", + "Volo.Abp.Identity:InvalidRoleName": "Naziv vloge '{0}' ni veljaven.", + "Volo.Abp.Identity:InvalidToken": "Neveljaven žeton.", + "Volo.Abp.Identity:InvalidUserName": "Uporabniško ime '{0}' ni veljavno, vsebuje lahko le črke in številke.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "Uporabnik s to prijavo že obstaja.", + "Volo.Abp.Identity:PasswordMismatch": "Nepravilno geslo.", + "Volo.Abp.Identity:PasswordRequiresDigit": "Gesla morajo imeti vsaj eno številko ('0'-'9').", + "Volo.Abp.Identity:PasswordRequiresLower": "Gesla morajo imeti vsaj eno malo črko ('a'-'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Gesla morajo imeti vsaj en ne-alfanumerični znak.", + "Volo.Abp.Identity:PasswordRequiresUpper": "Gesla morajo imeti vsaj eno veliko črko ('A'-'Z').", + "Volo.Abp.Identity:PasswordTooShort": "Gesla morajo biti dolga vsaj {0} znakov.", + "Volo.Abp.Identity:RoleNotFound": "Vloga {0} ne obstaja.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "Uporabnik že ima nastavljeno geslo.", + "Volo.Abp.Identity:UserAlreadyInRole": "Uporabnik že ima dodeljeno vlogo '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "Uporabnik je zaklenjen.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "Zaklepanje za tega uporabnika ni omogočeno.", + "Volo.Abp.Identity:UserNameNotFound": "Uporabnik {0} ne obstaja.", + "Volo.Abp.Identity:UserNotInRole": "Uporabnik nima dodeljene vloge '{0}'.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "Geslo se ne ujema s potrditvenim geslom.", + "Volo.Abp.Identity:010005": "Statičnih vlog ni mogoče preimenovati.", + "Volo.Abp.Identity:010006": "Statičnih vlog ni mogoče izbrisati.", "Volo.Abp.Identity:010001": "Ne morete izbrisati svojega lastnega računa!", "Permission:IdentityManagement": "Upravljanje identitet", "Permission:RoleManagement": "Upravljanje vlog", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json index b270f344ef..2ad19c80f4 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json @@ -35,8 +35,8 @@ "DisplayName:NewPasswordConfirm": "Yeni şifre (tekrar)", "PasswordChangedMessage": "Şifreniz başarıyla değiştirildi.", "PersonalSettingsSavedMessage": "Kişisel bilgileriniz başarıyla kaydedildi.", - "Volo.Abp.Identity:StaticRoleRenamingErrorMessage": "Bir Sabit rolün ismi değiştirilemez.", - "Volo.Abp.Identity:StaticRoleDeletionErrorMessage": "Bir Sabit rol silinemez.", + "Volo.Abp.Identity:010005": "Bir Sabit rolün ismi değiştirilemez.", + "Volo.Abp.Identity:010006": "Bir Sabit rol silinemez.", "Volo.Abp.Identity:DefaultError": "Bilinmeyen bir hata oluştu.", "Volo.Abp.Identity:ConcurrencyFailure": "İyimser eşzamanlılık hatası. Nesne değiştirilmiş.", "Volo.Abp.Identity:DuplicateEmail": "'{0}' email adresi zaten alınmış.", @@ -63,9 +63,11 @@ "Volo.Abp.Identity:UserNameNotFound": "{0} kullanıcısı bulunamadı.", "Volo.Abp.Identity:UserNotInRole": "Kullanıcı '{0}' rolünde değil.", "Volo.Abp.Identity:PasswordConfirmationFailed": "Yeni şifre ile onay şifresi uyuşmuyor.", - "Identity.OrganizationUnit.DuplicateDisplayNameWarning": "{0} isminde bir birim zaten var. Aynı seviyede aynı isimli iki birim olamaz.", - "Identity.OrganizationUnit.MaxUserMembershipCount": "Bir kullanıcı için izin verilen en fazla organizasyon birimi sayısı", "Volo.Abp.Identity:010001": "Kendi hesabınızı silemezsiniz!", + "Volo.Abp.Identity:010002": "Bir kullanıcı en fazla {MaxUserMembershipCount} organizasyon birimine üye olabilir!", + "Volo.Abp.Identity:010003": "Kimliği dışarıdan alınan kullanıcıların şifresi değiştirilemez!", + "Volo.Abp.Identity:010004": "{0} isminde bir birim zaten var. Aynı seviyede aynı isimli iki birim olamaz.", + "Identity.OrganizationUnit.MaxUserMembershipCount": "Bir kullanıcı için izin verilen en fazla organizasyon birimi sayısı", "Permission:IdentityManagement": "Kimlik yönetimi", "Permission:RoleManagement": "Rol yönetimi", "Permission:Create": "Oluşturma", @@ -74,7 +76,6 @@ "Permission:ChangePermissions": "İzinleri değiştirme", "Permission:UserManagement": "Kullanıcı yönetimi", "Permission:UserLookup": "Kullanıcı sorgulama", - "Volo.Abp.Identity:010002": "Bir kullanıcı en fazla {MaxUserMembershipCount} organizasyon birimine üye olabilir!", "DisplayName:Abp.Identity.Password.RequiredLength": "Uzunluk gerekli", "DisplayName:Abp.Identity.Password.RequiredUniqueChars": "Tekil karakter gerekli", "DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "Alfasayısal olmayan karakter gerekli", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json index 64690959b7..a241a4d515 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json @@ -35,34 +35,34 @@ "DisplayName:NewPasswordConfirm": "Xác nhận mật khẩu", "PasswordChangedMessage": "Mật khẩu của bạn đã được thay đổi thành công.", "PersonalSettingsSavedMessage": "Thiết lập của bạn đã được lưu lại thành công.", - "Identity.DefaultError": "Một thất bại chưa biết đã xảy ra.", - "Identity.ConcurrencyFailure": "Thất bại đồng thời lạc quan, đối tượng đã được sửa đổi.", - "Identity.DuplicateEmail": "Email '{0}' đã được sử dụng.", - "Identity.DuplicateRoleName": "Tên vài trò '{0}' đã được sử dụng.", - "Identity.DuplicateUserName": "User name '{0}' đã được sử dụng.", - "Identity.InvalidEmail": "Email '{0}' Không hợp lệ.", - "Identity.InvalidPasswordHasherCompatibilityMode": "PasswordHasherCompatibilityMode được cung cấp không hợp lệ.", - "Identity.InvalidPasswordHasherIterationCount": "Số lần lặp phải là số nguyên dương.", - "Identity.InvalidRoleName": "Tên người dùng '{0}' Không hợp lệ.", - "Identity.InvalidToken": "Token không hợp lệ.", - "Identity.InvalidUserName": "Tên người dùng '{0}' không hợp lệ, chỉ có thể chứa chữ cái hoặc chữ số.", - "Identity.LoginAlreadyAssociated": "Một người dùng có thông tin đăng nhập này đã tồn tại.", - "Identity.PasswordMismatch": "Mật khẩu không đúng.", - "Identity.PasswordRequiresDigit": "Mật khẩu phải có ít nhất một chữ số ('0'-'9').", - "Identity.PasswordRequiresLower": "Mật khẩu phải có ít nhất một chữ thường ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "Mật khẩu phải có ít nhất một ký tự không phải là chữ và số.", - "Identity.PasswordRequiresUpper": "Mật khẩu phải có ít nhất một chữ hoa ('A'-'Z').", - "Identity.PasswordTooShort": "Mật khẩu phải ít nhất {0} kí tự.", - "Identity.RoleNotFound": "Vai trò {0} không tồn tại.", - "Identity.UserAlreadyHasPassword": "Người dùng đã có một mật khẩu.", - "Identity.UserAlreadyInRole": "Người dùng đã có vai trò '{0}'.", - "Identity.UserLockedOut": "Người dùng bị khóa.", - "Identity.UserLockoutNotEnabled": "Khóa không được kích hoạt cho người dùng này.", - "Identity.UserNameNotFound": "Người dùng {0} không tồn tại.", - "Identity.UserNotInRole": "Người dùng không có vai trò '{0}'.", - "Identity.PasswordConfirmationFailed": "Mật khẩu không khớp với mật khẩu xác nhận.", - "Identity.StaticRoleRenamingErrorMessage": "Vai trò này là cố định không được phép đổi tên.", - "Identity.StaticRoleDeletionErrorMessage": "Vai trò này là cố định không được phép xóa.", + "Volo.Abp.Identity:DefaultError": "Một thất bại chưa biết đã xảy ra.", + "Volo.Abp.Identity:ConcurrencyFailure": "Thất bại đồng thời lạc quan, đối tượng đã được sửa đổi.", + "Volo.Abp.Identity:DuplicateEmail": "Email '{0}' đã được sử dụng.", + "Volo.Abp.Identity:DuplicateRoleName": "Tên vài trò '{0}' đã được sử dụng.", + "Volo.Abp.Identity:DuplicateUserName": "User name '{0}' đã được sử dụng.", + "Volo.Abp.Identity:InvalidEmail": "Email '{0}' Không hợp lệ.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "PasswordHasherCompatibilityMode được cung cấp không hợp lệ.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "Số lần lặp phải là số nguyên dương.", + "Volo.Abp.Identity:InvalidRoleName": "Tên người dùng '{0}' Không hợp lệ.", + "Volo.Abp.Identity:InvalidToken": "Token không hợp lệ.", + "Volo.Abp.Identity:InvalidUserName": "Tên người dùng '{0}' không hợp lệ, chỉ có thể chứa chữ cái hoặc chữ số.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "Một người dùng có thông tin đăng nhập này đã tồn tại.", + "Volo.Abp.Identity:PasswordMismatch": "Mật khẩu không đúng.", + "Volo.Abp.Identity:PasswordRequiresDigit": "Mật khẩu phải có ít nhất một chữ số ('0'-'9').", + "Volo.Abp.Identity:PasswordRequiresLower": "Mật khẩu phải có ít nhất một chữ thường ('a'-'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Mật khẩu phải có ít nhất một ký tự không phải là chữ và số.", + "Volo.Abp.Identity:PasswordRequiresUpper": "Mật khẩu phải có ít nhất một chữ hoa ('A'-'Z').", + "Volo.Abp.Identity:PasswordTooShort": "Mật khẩu phải ít nhất {0} kí tự.", + "Volo.Abp.Identity:RoleNotFound": "Vai trò {0} không tồn tại.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "Người dùng đã có một mật khẩu.", + "Volo.Abp.Identity:UserAlreadyInRole": "Người dùng đã có vai trò '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "Người dùng bị khóa.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "Khóa không được kích hoạt cho người dùng này.", + "Volo.Abp.Identity:UserNameNotFound": "Người dùng {0} không tồn tại.", + "Volo.Abp.Identity:UserNotInRole": "Người dùng không có vai trò '{0}'.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "Mật khẩu không khớp với mật khẩu xác nhận.", + "Volo.Abp.Identity:010005": "Vai trò này là cố định không được phép đổi tên.", + "Volo.Abp.Identity:010006": "Vai trò này là cố định không được phép xóa.", "Volo.Abp.Identity:010001": "Bạn không thể xóa tài khoản của riêng bạn!", "Permission:IdentityManagement": "Quản lý danh tính", "Permission:RoleManagement": "Quản lý vai trò", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json index ffeb4d0d40..5494581c6a 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json @@ -35,35 +35,35 @@ "DisplayName:NewPasswordConfirm": "确认新密码", "PasswordChangedMessage": "你已成功更改密码.", "PersonalSettingsSavedMessage": "你的个人设置保存成功.", - "Identity.DefaultError": "发生了一个未知错误.", - "Identity.ConcurrencyFailure": "对象已被修改,乐观并发失败.", - "Identity.DuplicateEmail": "邮箱 '{0}' 已存在.", - "Identity.DuplicateRoleName": "角色名 '{0}' 已存在.", - "Identity.DuplicateUserName": "用户名 '{0}' 已存在.", - "Identity.InvalidEmail": "邮箱 '{0}' 无效.", - "Identity.InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 无效.", - "Identity.InvalidPasswordHasherIterationCount": "迭代计数必须是正整数.", - "Identity.InvalidRoleName": "角色名 '{0}' 无效.", - "Identity.InvalidToken": "token无效.", - "Identity.InvalidUserName": "用户名 '{0}' 无效, 只能包含字母或数字.", - "Identity.LoginAlreadyAssociated": "此登录名的用户已存在.", - "Identity.PasswordMismatch": "密码错误.", - "Identity.PasswordRequiresDigit": "密码至少包含一位数字 ('0'-'9').", - "Identity.PasswordRequiresLower": "密码至少包含一位小写字母 ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "密码至少包含一位非字母数字字符.", - "Identity.PasswordRequiresUpper": "密码至少包含一位大写字母 ('A'-'Z').", - "Identity.PasswordTooShort": "密码至少为{0}个字符.", - "Identity.RoleNotFound": "角色 {0} 不存在.", - "Identity.UserAlreadyHasPassword": "用户已设置密码.", - "Identity.UserAlreadyInRole": "用户已具有角色 '{0}'.", - "Identity.UserLockedOut": "用户被锁定.", - "Identity.UserLockoutNotEnabled": "该用户未启用锁定.", - "Identity.UserNameNotFound": "用户 {0} 不存在.", - "Identity.UserNotInRole": "用户不具有 '{0}' 角色.", - "Identity.PasswordConfirmationFailed": "密码或确认密码不一致.", - "Identity.StaticRoleRenamingErrorMessage": "无法重命名静态角色.", - "Identity.StaticRoleDeletionErrorMessage": "无法删除静态角色.", - "Identity.OrganizationUnit.DuplicateDisplayNameWarning": "已存在名为 {0} 的组织单位. 无法在同一级别创建相同名称的组织单位.", + "Volo.Abp.Identity:DefaultError": "发生了一个未知错误.", + "Volo.Abp.Identity:ConcurrencyFailure": "对象已被修改,乐观并发失败.", + "Volo.Abp.Identity:DuplicateEmail": "邮箱 '{0}' 已存在.", + "Volo.Abp.Identity:DuplicateRoleName": "角色名 '{0}' 已存在.", + "Volo.Abp.Identity:DuplicateUserName": "用户名 '{0}' 已存在.", + "Volo.Abp.Identity:InvalidEmail": "邮箱 '{0}' 无效.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 无效.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "迭代计数必须是正整数.", + "Volo.Abp.Identity:InvalidRoleName": "角色名 '{0}' 无效.", + "Volo.Abp.Identity:InvalidToken": "token无效.", + "Volo.Abp.Identity:InvalidUserName": "用户名 '{0}' 无效, 只能包含字母或数字.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "此登录名的用户已存在.", + "Volo.Abp.Identity:PasswordMismatch": "密码错误.", + "Volo.Abp.Identity:PasswordRequiresDigit": "密码至少包含一位数字 ('0'-'9').", + "Volo.Abp.Identity:PasswordRequiresLower": "密码至少包含一位小写字母 ('a'-'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "密码至少包含一位非字母数字字符.", + "Volo.Abp.Identity:PasswordRequiresUpper": "密码至少包含一位大写字母 ('A'-'Z').", + "Volo.Abp.Identity:PasswordTooShort": "密码至少为{0}个字符.", + "Volo.Abp.Identity:RoleNotFound": "角色 {0} 不存在.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "用户已设置密码.", + "Volo.Abp.Identity:UserAlreadyInRole": "用户已具有角色 '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "用户被锁定.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "该用户未启用锁定.", + "Volo.Abp.Identity:UserNameNotFound": "用户 {0} 不存在.", + "Volo.Abp.Identity:UserNotInRole": "用户不具有 '{0}' 角色.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "密码或确认密码不一致.", + "Volo.Abp.Identity:010005": "无法重命名静态角色.", + "Volo.Abp.Identity:010006": "无法删除静态角色.", + "Volo.Abp.Identity:010004": "已存在名为 {0} 的组织单位. 无法在同一级别创建相同名称的组织单位.", "Volo.Abp.Identity:010001": "您无法删除自己的帐户!", "Permission:IdentityManagement": "身份标识管理", "Permission:RoleManagement": "角色管理", @@ -99,6 +99,5 @@ "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "登录时是否需要验证的手机号码.", "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "是否允许用户更新用户名.", "Description:Abp.Identity.User.IsEmailUpdateEnabled": "是否允许用户更新电子邮箱." - } -} \ No newline at end of file +} diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json index b6e42acea2..edd21e10fe 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json @@ -35,35 +35,35 @@ "DisplayName:NewPasswordConfirm": "確認新密碼", "PasswordChangedMessage": "你已成功更改密碼.", "PersonalSettingsSavedMessage": "你的個人設置保存成功.", - "Identity.DefaultError": "發生了一個未知錯誤.", - "Identity.ConcurrencyFailure": "對象已被修改,因樂觀並行控制導致失敗.", - "Identity.DuplicateEmail": "電子信箱 '{0}' 已存在.", - "Identity.DuplicateRoleName": "角色名 '{0}' 已存在.", - "Identity.DuplicateUserName": "使用者名稱 '{0}' 已存在.", - "Identity.InvalidEmail": "電子信箱 '{0}' 無效.", - "Identity.InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 無效.", - "Identity.InvalidPasswordHasherIterationCount": "迭代計數必須是正整數.", - "Identity.InvalidRoleName": "角色名 '{0}' 無效.", - "Identity.InvalidToken": "token無效.", - "Identity.InvalidUserName": "使用者名稱 '{0}' 無效, 只能包含字母或數字.", - "Identity.LoginAlreadyAssociated": "此登入名的使用者已存在.", - "Identity.PasswordMismatch": "密碼錯誤.", - "Identity.PasswordRequiresDigit": "密碼至少包含一位數字 ('0'-'9').", - "Identity.PasswordRequiresLower": "密碼至少包含一位小寫字母 ('a'-'z').", - "Identity.PasswordRequiresNonAlphanumeric": "密碼至少包含一位非字母數字字元.", - "Identity.PasswordRequiresUpper": "密碼至少包含一位大寫字母 ('A'-'Z').", - "Identity.PasswordTooShort": "密碼至少為{0}個字元.", - "Identity.RoleNotFound": "角色 {0} 不存在.", - "Identity.UserAlreadyHasPassword": "使用者已設置密碼.", - "Identity.UserAlreadyInRole": "使用者已具有角色 '{0}'.", - "Identity.UserLockedOut": "使用者被鎖定.", - "Identity.UserLockoutNotEnabled": "該使用者未啟用鎖定.", - "Identity.UserNameNotFound": "使用者 {0} 不存在.", - "Identity.UserNotInRole": "使用者不具有 '{0}' 角色.", - "Identity.PasswordConfirmationFailed": "密碼或確認密碼不一致.", - "Identity.StaticRoleRenamingErrorMessage": "無法重命名靜態角色.", - "Identity.StaticRoleDeletionErrorMessage": "無法刪除靜態角色.", - "Identity.OrganizationUnit.DuplicateDisplayNameWarning": "組織內單位內已包含名稱 {0}.同一層級組織,兩個單位不能有相同名稱", + "Volo.Abp.Identity:DefaultError": "發生了一個未知錯誤.", + "Volo.Abp.Identity:ConcurrencyFailure": "對象已被修改,因樂觀並行控制導致失敗.", + "Volo.Abp.Identity:DuplicateEmail": "電子信箱 '{0}' 已存在.", + "Volo.Abp.Identity:DuplicateRoleName": "角色名 '{0}' 已存在.", + "Volo.Abp.Identity:DuplicateUserName": "使用者名稱 '{0}' 已存在.", + "Volo.Abp.Identity:InvalidEmail": "電子信箱 '{0}' 無效.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 無效.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "迭代計數必須是正整數.", + "Volo.Abp.Identity:InvalidRoleName": "角色名 '{0}' 無效.", + "Volo.Abp.Identity:InvalidToken": "token無效.", + "Volo.Abp.Identity:InvalidUserName": "使用者名稱 '{0}' 無效, 只能包含字母或數字.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "此登入名的使用者已存在.", + "Volo.Abp.Identity:PasswordMismatch": "密碼錯誤.", + "Volo.Abp.Identity:PasswordRequiresDigit": "密碼至少包含一位數字 ('0'-'9').", + "Volo.Abp.Identity:PasswordRequiresLower": "密碼至少包含一位小寫字母 ('a'-'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "密碼至少包含一位非字母數字字元.", + "Volo.Abp.Identity:PasswordRequiresUpper": "密碼至少包含一位大寫字母 ('A'-'Z').", + "Volo.Abp.Identity:PasswordTooShort": "密碼至少為{0}個字元.", + "Volo.Abp.Identity:RoleNotFound": "角色 {0} 不存在.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "使用者已設置密碼.", + "Volo.Abp.Identity:UserAlreadyInRole": "使用者已具有角色 '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "使用者被鎖定.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "該使用者未啟用鎖定.", + "Volo.Abp.Identity:UserNameNotFound": "使用者 {0} 不存在.", + "Volo.Abp.Identity:UserNotInRole": "使用者不具有 '{0}' 角色.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "密碼或確認密碼不一致.", + "Volo.Abp.Identity:010005": "無法重命名靜態角色.", + "Volo.Abp.Identity:010006": "無法刪除靜態角色.", + "Volo.Abp.Identity:010004": "組織內單位內已包含名稱 {0}.同一層級組織,兩個單位不能有相同名稱", "Identity.OrganizationUnit.MaxUserMembershipCount": "允許一個使用者至多可隸屬在幾個組織單位", "Volo.Abp.Identity:010001": "您無法刪除自己的帳號!", "Permission:IdentityManagement": "身份識別管理", @@ -73,35 +73,6 @@ "Permission:Delete": "刪除", "Permission:ChangePermissions": "更改權限", "Permission:UserManagement": "使用者管理", - "Permission:UserLookup": "使用者查詢", - "DisplayName:Abp.Identity.Password.RequiredLength": "要求長度", - "DisplayName:Abp.Identity.Password.RequiredUniqueChars": "要求唯一字元數量", - "DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "要求非字母數字", - "DisplayName:Abp.Identity.Password.RequireLowercase": "要求小寫字母", - "DisplayName:Abp.Identity.Password.RequireUppercase": "要求大寫字母", - "DisplayName:Abp.Identity.Password.RequireDigit": "要求數字", - "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "允許新使用者", - "DisplayName:Abp.Identity.Lockout.LockoutDuration": "鎖定時間(秒)", - "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "最大失敗存取嘗試次數", - "DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "要求驗證的電子信箱", - "DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "啟用手機號碼驗證", - "DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "要求驗證的手機號碼", - "DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "啟用使用者名稱更新", - "DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "啟用電子信箱更新", - "Description:Abp.Identity.Password.RequiredLength": "密碼的最小長度.", - "Description:Abp.Identity.Password.RequiredUniqueChars": "密碼必須包含唯一字元的數量.", - "Description:Abp.Identity.Password.RequireNonAlphanumeric": "密碼是否必須包含非字母數字.", - "Description:Abp.Identity.Password.RequireLowercase": "密碼是否必須包含小寫字母.", - "Description:Abp.Identity.Password.RequireUppercase": "密碼是否必須包含大小字母.", - "Description:Abp.Identity.Password.RequireDigit": "密碼是否必須包含數字.", - "Description:Abp.Identity.Lockout.AllowedForNewUsers": "允許新使用者被鎖定.", - "Description:Abp.Identity.Lockout.LockoutDuration": "當鎖定發生時使用者被鎖定的時間(秒).", - "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "如果啟用鎖定,當使用者被鎖定前失敗的存取嘗試次數.", - "Description:Abp.Identity.SignIn.RequireConfirmedEmail": "登入時是否需要驗證電子信箱.", - "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "使用者手機號碼是否需要驗證.", - "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "登入時是否需要驗證手機號碼.", - "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "是否允許使用者更新使用者名稱.", - "Description:Abp.Identity.User.IsEmailUpdateEnabled": "是否允許使用者更新電子信箱.", - "Volo.Abp.Identity:010002": "一個使用者不能設置超過 {MaxUserMembershipCount} 個組織單位下" + "Permission:UserLookup": "使用者查詢" } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRoleManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRoleManager.cs index 9c2a80a807..d2f2cb4a69 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRoleManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRoleManager.cs @@ -29,10 +29,10 @@ namespace Volo.Abp.Identity IStringLocalizer localizer, ICancellationTokenProvider cancellationTokenProvider) : base( - store, - roleValidators, - keyNormalizer, - errors, + store, + roleValidators, + keyNormalizer, + errors, logger) { Localizer = localizer; @@ -54,7 +54,7 @@ namespace Volo.Abp.Identity { if (role.IsStatic && role.Name != name) { - throw new BusinessException(Localizer["Identity.StaticRoleRenamingErrorMessage"]); // TODO: localize & change exception type + throw new BusinessException("Volo.Abp.Identity:010005"); } return await base.SetRoleNameAsync(role, name); @@ -64,7 +64,7 @@ namespace Volo.Abp.Identity { if (role.IsStatic) { - throw new BusinessException(Localizer["Identity.StaticRoleDeletionErrorMessage"]); // TODO: localize & change exception type + throw new BusinessException("Volo.Abp.Identity:010006"); } return await base.DeleteAsync(role); diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs index 4706f92428..d03e56af79 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs @@ -131,7 +131,8 @@ namespace Volo.Abp.Identity if (siblings.Any(ou => ou.DisplayName == organizationUnit.DisplayName)) { - throw new UserFriendlyException(Localizer["Identity.OrganizationUnit.DuplicateDisplayNameWarning", organizationUnit.DisplayName]); + throw new BusinessException("Volo.Abp.Identity:010004") + .WithData("0", organizationUnit.DisplayName); } } From 8c0e0b08ce8a8c005f1341efccb7904167131c62 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 7 Sep 2020 16:55:13 +0300 Subject: [PATCH 316/474] improve IdentityErrorCodes --- .../Volo/Abp/Identity/IdentityErrorCodes.cs | 3 +++ .../Volo/Abp/Identity/IdentityRoleManager.cs | 4 ++-- .../Volo/Abp/Identity/OrganizationUnitManager.cs | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs index d5e57a6953..1defe67eeb 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs @@ -5,5 +5,8 @@ public const string UserSelfDeletion = "Volo.Abp.Identity:010001"; public const string MaxAllowedOuMembership = "Volo.Abp.Identity:010002"; public const string ExternalUserPasswordChange = "Volo.Abp.Identity:010003"; + public const string DuplicateOrganizationUnitDisplayName = "Volo.Abp.Identity:010004"; + public const string StaticRoleRenaming = "Volo.Abp.Identity:010005"; + public const string StaticRoleDeletion = "Volo.Abp.Identity:010006"; } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRoleManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRoleManager.cs index d2f2cb4a69..40c249e5c4 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRoleManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityRoleManager.cs @@ -54,7 +54,7 @@ namespace Volo.Abp.Identity { if (role.IsStatic && role.Name != name) { - throw new BusinessException("Volo.Abp.Identity:010005"); + throw new BusinessException(IdentityErrorCodes.StaticRoleRenaming); } return await base.SetRoleNameAsync(role, name); @@ -64,7 +64,7 @@ namespace Volo.Abp.Identity { if (role.IsStatic) { - throw new BusinessException("Volo.Abp.Identity:010006"); + throw new BusinessException(IdentityErrorCodes.StaticRoleDeletion); } return await base.DeleteAsync(role); diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs index d03e56af79..ec794a51df 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/OrganizationUnitManager.cs @@ -131,7 +131,7 @@ namespace Volo.Abp.Identity if (siblings.Any(ou => ou.DisplayName == organizationUnit.DisplayName)) { - throw new BusinessException("Volo.Abp.Identity:010004") + throw new BusinessException(IdentityErrorCodes.DuplicateOrganizationUnitDisplayName) .WithData("0", organizationUnit.DisplayName); } } From dfd2baee7f8ad0fef68eff134014447084555c2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 7 Sep 2020 17:25:44 +0300 Subject: [PATCH 317/474] Stared to document the feature system --- docs/en/Features.md | 46 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/docs/en/Features.md b/docs/en/Features.md index 4b31ca16e9..d5262c6cdb 100644 --- a/docs/en/Features.md +++ b/docs/en/Features.md @@ -1,3 +1,47 @@ # Features -TODO \ No newline at end of file +ABP Feature system is used to **enable**, **disable** or **change the behavior** of the application features **on runtime**. + +Feature system was originally designed to control the tenant features in a **multi-tenant** application. However, it is **extensible** and capable of determining features by any condition. + +> The feature system is implemented with the [Volo.Abp.Features](https://www.nuget.org/packages/Volo.Abp.Features) NuGet package. Most of the times you don't need to manually [install it](https://abp.io/package-detail/Volo.Abp.Features) since it comes pre-installed with the [application startup template](Startup-Templates/Application.md). + +## Checking for the Features + +Before starting to explain how to define features, let's see how to check a feature in your application code. + +### RequiresFeature Attribute + +`[RequiresFeature]` attribute (defined in the `Volo.Abp.Features` namespace) is used to declaratively check if a feature is enabled or not. + +**Example: Check if the current user/tenant has "PDF Reporting" feature enabled** + +```csharp +public class ReportingAppService : ApplicationService, IReportingAppService +{ + public async Task GetCsvReportAsync() + { + throw new System.NotImplementedException(); + } + + [RequiresFeature("MyApp.PdfReporting")] + public async Task GetPdfReportAsync() + { + throw new System.NotImplementedException(); + } +} +``` + +* `RequiresFeature(...)` simply gets a feature name to check if it is enabled or not. If not enabled, an authorization [exception](Exception-Handling.md) is thrown and a proper response is returned to the client side. +* `[RequiresFeature]` can be used for a **method** or a **class**. When you use it for a class, all the +* `RequiresFeature` may get multiple feature names, like `[RequiresFeature("Feature1", "Feature2")]`. In this case ABP checks if current user/tenant has any of the features enabled. Use `[RequiresFeature("Feature1", "Feature2", RequiresAll = true)]` to force to allow only if all of the features are enabled. +* Multiple usage of `[RequiresFeature]` attribute is enabled, so it checks all of them. + +#### About the Interception + +ABP Framework uses the interception system to make the `[RequiresFeature]` attribute working. So, it can work with any class that is injected from the [dependency injection](Dependency-Injection.md). + +However, there are **some rules should be followed** in order to make it working; + +* If you are **not injecting** the service over an interface (like `IMyService`), then the methods of the service must be `virtual` (otherwise, [dynamic proxy / interception](Dynamic-Proxying-Interceptors.md) system can not work). +* Only `async` methods (methods returning a `Task` or `Task`) are intercepted. From 735a0c2db68c054ad456afe4f6231317191bb5d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 7 Sep 2020 18:11:10 +0300 Subject: [PATCH 318/474] Update Features.md --- docs/en/Features.md | 115 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 103 insertions(+), 12 deletions(-) diff --git a/docs/en/Features.md b/docs/en/Features.md index d5262c6cdb..2c859d643f 100644 --- a/docs/en/Features.md +++ b/docs/en/Features.md @@ -2,6 +2,8 @@ ABP Feature system is used to **enable**, **disable** or **change the behavior** of the application features **on runtime**. +The runtime value for a feature can simply be a `boolean`, like enabled (`true`) or disabled (`false`). However, you can store **any kind** of runtime value for feature. + Feature system was originally designed to control the tenant features in a **multi-tenant** application. However, it is **extensible** and capable of determining features by any condition. > The feature system is implemented with the [Volo.Abp.Features](https://www.nuget.org/packages/Volo.Abp.Features) NuGet package. Most of the times you don't need to manually [install it](https://abp.io/package-detail/Volo.Abp.Features) since it comes pre-installed with the [application startup template](Startup-Templates/Application.md). @@ -12,36 +14,125 @@ Before starting to explain how to define features, let's see how to check a feat ### RequiresFeature Attribute -`[RequiresFeature]` attribute (defined in the `Volo.Abp.Features` namespace) is used to declaratively check if a feature is enabled or not. +`[RequiresFeature]` attribute (defined in the `Volo.Abp.Features` namespace) is used to declaratively check if a feature is enabled or not. It is a useful shortcut for the `boolean` features. -**Example: Check if the current user/tenant has "PDF Reporting" feature enabled** +**Example: Check if the "PDF Reporting" feature enabled** ```csharp public class ReportingAppService : ApplicationService, IReportingAppService { - public async Task GetCsvReportAsync() - { - throw new System.NotImplementedException(); - } - [RequiresFeature("MyApp.PdfReporting")] public async Task GetPdfReportAsync() { - throw new System.NotImplementedException(); + //TODO... } } ``` * `RequiresFeature(...)` simply gets a feature name to check if it is enabled or not. If not enabled, an authorization [exception](Exception-Handling.md) is thrown and a proper response is returned to the client side. -* `[RequiresFeature]` can be used for a **method** or a **class**. When you use it for a class, all the -* `RequiresFeature` may get multiple feature names, like `[RequiresFeature("Feature1", "Feature2")]`. In this case ABP checks if current user/tenant has any of the features enabled. Use `[RequiresFeature("Feature1", "Feature2", RequiresAll = true)]` to force to allow only if all of the features are enabled. -* Multiple usage of `[RequiresFeature]` attribute is enabled, so it checks all of them. +* `[RequiresFeature]` can be used for a **method** or a **class**. When you use it for a class, all the methods of that class require the given feature. +* `RequiresFeature` may get multiple feature names, like `[RequiresFeature("Feature1", "Feature2")]`. In this case ABP checks if any of the features enabled. Use `RequiresAll` option, like `[RequiresFeature("Feature1", "Feature2", RequiresAll = true)]` to force to check all of the features to be enabled. +* Multiple usage of `[RequiresFeature]` attribute is supported for a method or class. ABP check checks all of them in that case. + +> Feature name can be any arbitrary string. It should be unique for a feature. #### About the Interception -ABP Framework uses the interception system to make the `[RequiresFeature]` attribute working. So, it can work with any class that is injected from the [dependency injection](Dependency-Injection.md). +ABP Framework uses the interception system to make the `[RequiresFeature]` attribute working. So, it can work with any class (application services, controllers...) that is injected from the [dependency injection](Dependency-Injection.md). However, there are **some rules should be followed** in order to make it working; * If you are **not injecting** the service over an interface (like `IMyService`), then the methods of the service must be `virtual` (otherwise, [dynamic proxy / interception](Dynamic-Proxying-Interceptors.md) system can not work). * Only `async` methods (methods returning a `Task` or `Task`) are intercepted. + +> There is an exception for the controllers and razor pages. They don't require the following rules since ABP Framework uses action/page filters to implement the feature checking in this case. + +### IFeatureChecker Service + +`IFeatureChecker` allows to check a feature in your application code. + +#### IsEnabledAsync + +Returns `true` if the given feature is enabled. So, you can conditionally execute your business flow. + +**Example: Check if the "PDF Reporting" feature enabled** + +```csharp +public class ReportingAppService : ApplicationService, IReportingAppService +{ + private readonly IFeatureChecker _featureChecker; + + public ReportingAppService(IFeatureChecker featureChecker) + { + _featureChecker = featureChecker; + } + + public async Task GetPdfReportAsync() + { + if (await _featureChecker.IsEnabledAsync("MyApp.PdfReporting")) + { + //TODO... + } + else + { + //TODO... + } + } +} +``` + +`IsEnabledAsync` has overloads to check multiple features in one method call. + +#### GetOrNullAsync + +Gets the current value for a feature. This method returns a `string`, so you store any kind of value inside it, by converting to or from `string`. + +**Example: Check the maximum product count allowed** + +```csharp +public class ProductController : AbpController +{ + private readonly IFeatureChecker _featureChecker; + + public ProductController(IFeatureChecker featureChecker) + { + _featureChecker = featureChecker; + } + + public async Task Create(CreateProductModel model) + { + var currentProductCount = await GetCurrentProductCountFromDatabase(); + + //GET THE FEATURE VALUE + var maxProductCountLimit = + await _featureChecker.GetOrNullAsync("MyApp.MaxProductCount"); + + if (currentProductCount >= Convert.ToInt32(maxProductCountLimit)) + { + throw new BusinessException( + "MyApp:ReachToMaxProductCountLimit", + $"You can not create more than {maxProductCountLimit} products!" + ); + } + + //TODO: Create the product in the database... + } + + private async Task GetCurrentProductCountFromDatabase() + { + throw new System.NotImplementedException(); + } +} +``` + +In this way, you can create numeric limits in your SaaS application depending on the current user or tenant. + +Instead of manually converting the value to `int`, you can use the generic overload of the `GetAsync` method: + +```csharp +var maxProductCountLimit = await _featureChecker.GetAsync("MyApp.MaxProductCount"); +``` + +#### Extension Methods + +TODO \ No newline at end of file From 460686a22d003e0475a62402d3f56b5e015e819f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 7 Sep 2020 20:46:43 +0300 Subject: [PATCH 319/474] Added empty sections to the features document --- docs/en/Features.md | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/docs/en/Features.md b/docs/en/Features.md index 2c859d643f..82d1790b9e 100644 --- a/docs/en/Features.md +++ b/docs/en/Features.md @@ -2,19 +2,19 @@ ABP Feature system is used to **enable**, **disable** or **change the behavior** of the application features **on runtime**. -The runtime value for a feature can simply be a `boolean`, like enabled (`true`) or disabled (`false`). However, you can store **any kind** of runtime value for feature. +The runtime value for a feature is generally a `boolean` value, like `true` (enabled) or `false` (disabled). However, you can get/set **any kind** of value for feature. -Feature system was originally designed to control the tenant features in a **multi-tenant** application. However, it is **extensible** and capable of determining features by any condition. +Feature system was originally designed to control the tenant features in a **multi-tenant** application. However, it is **extensible** and capable of determining the features by any condition. > The feature system is implemented with the [Volo.Abp.Features](https://www.nuget.org/packages/Volo.Abp.Features) NuGet package. Most of the times you don't need to manually [install it](https://abp.io/package-detail/Volo.Abp.Features) since it comes pre-installed with the [application startup template](Startup-Templates/Application.md). ## Checking for the Features -Before starting to explain how to define features, let's see how to check a feature in your application code. +Before explaining to define features, let's see how to check a feature value in your application code. ### RequiresFeature Attribute -`[RequiresFeature]` attribute (defined in the `Volo.Abp.Features` namespace) is used to declaratively check if a feature is enabled or not. It is a useful shortcut for the `boolean` features. +`[RequiresFeature]` attribute (defined in the `Volo.Abp.Features` namespace) is used to declaratively check if a feature is `true` (enabled) or not. It is a useful shortcut for the `boolean` features. **Example: Check if the "PDF Reporting" feature enabled** @@ -42,10 +42,10 @@ ABP Framework uses the interception system to make the `[RequiresFeature]` attri However, there are **some rules should be followed** in order to make it working; -* If you are **not injecting** the service over an interface (like `IMyService`), then the methods of the service must be `virtual` (otherwise, [dynamic proxy / interception](Dynamic-Proxying-Interceptors.md) system can not work). +* If you are **not injecting** the service over an interface (like `IMyService`), then the methods of the service must be `virtual`. Otherwise, [dynamic proxy / interception](Dynamic-Proxying-Interceptors.md) system can not work. * Only `async` methods (methods returning a `Task` or `Task`) are intercepted. -> There is an exception for the controllers and razor pages. They don't require the following rules since ABP Framework uses action/page filters to implement the feature checking in this case. +> There is an exception for the **controller and razor page methods**. They **don't require** the following the rules above, since ABP Framework uses the action/page filters to implement the feature checking in this case. ### IFeatureChecker Service @@ -125,7 +125,7 @@ public class ProductController : AbpController } ``` -In this way, you can create numeric limits in your SaaS application depending on the current user or tenant. +This example uses a numeric value as a feature limit product counts for a user/tenant in a SaaS application. Instead of manually converting the value to `int`, you can use the generic overload of the `GetAsync` method: @@ -135,4 +135,27 @@ var maxProductCountLimit = await _featureChecker.GetAsync("MyApp.MaxProduct #### Extension Methods +There are some useful extension methods for the `IFeatureChecker` interface; + +* `Task GetAsync(string name, T defaultValue = default)`: Used to get a value of a feature with the given type `T`. Allows to specify a `defaultValue` that is returned when the feature value is `null`. +* `CheckEnabledAsync(string name)`: Checks if given feature is enabled. Throws an `AbpAuthorizationException` if the feature was not `true` (enabled). + +## Defining the Features + +TODO + +## Feature Management + +TODO + +## Advanced Topics + +TODO + +### Feature Value Providers + +TODO + +### Feature Store + TODO \ No newline at end of file From 01e612ee1082fb8b0c398f208b520716c7f2dbe2 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 7 Sep 2020 20:52:17 +0300 Subject: [PATCH 320/474] fix: avoid horizontal gap in datatable on resize --- .../ngx-datatable-default.directive.ts | 52 +++++++++++++++++-- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-default.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-default.directive.ts index ec6710474f..64a64af4eb 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-default.directive.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-default.directive.ts @@ -1,12 +1,19 @@ -import { Directive, HostBinding, Input } from '@angular/core'; -import { ColumnMode, DatatableComponent } from '@swimlane/ngx-datatable'; +import { DOCUMENT } from '@angular/common'; +import { AfterViewInit, Directive, HostBinding, Inject, Input, OnDestroy } from '@angular/core'; +import { ColumnMode, DatatableComponent, ScrollerComponent } from '@swimlane/ngx-datatable'; +import { fromEvent, Subscription } from 'rxjs'; +import { debounceTime } from 'rxjs/operators'; @Directive({ // tslint:disable-next-line selector: 'ngx-datatable[default]', exportAs: 'ngxDatatableDefault', }) -export class NgxDatatableDefaultDirective { +export class NgxDatatableDefaultDirective implements AfterViewInit, OnDestroy { + private subscription = new Subscription(); + + private resizeDiff = 0; + @Input() class = 'material bordered'; @HostBinding('class') @@ -14,7 +21,7 @@ export class NgxDatatableDefaultDirective { return `ngx-datatable ${this.class}`; } - constructor(private table: DatatableComponent) { + constructor(private table: DatatableComponent, @Inject(DOCUMENT) private document: Document) { this.table.columnMode = ColumnMode.force; this.table.footerHeight = 50; this.table.headerHeight = 50; @@ -22,4 +29,41 @@ export class NgxDatatableDefaultDirective { this.table.scrollbarH = true; this.table.virtualization = false; } + + private fixHorizontalGap(scroller: ScrollerComponent) { + const { body, documentElement } = this.document; + + if (documentElement.scrollHeight !== documentElement.clientHeight) { + if (this.resizeDiff === 0) { + this.resizeDiff = window.innerWidth - body.offsetWidth; + scroller.scrollWidth -= this.resizeDiff; + } + } else { + scroller.scrollWidth += this.resizeDiff; + this.resizeDiff = 0; + } + } + + private fixStyleOnWindowResize() { + // avoided @HostListener('window:resize') in favor of performance + const subscription = fromEvent(window, 'resize') + .pipe(debounceTime(500)) + .subscribe(() => { + const { scroller } = this.table.bodyComponent; + + if (!scroller) return; + + this.fixHorizontalGap(scroller); + }); + + this.subscription.add(subscription); + } + + ngAfterViewInit() { + this.fixStyleOnWindowResize(); + } + + ngOnDestroy() { + this.subscription.unsubscribe(); + } } From 01cd1d56920bfca89bb7b193b2a934c9d542394c Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 7 Sep 2020 21:21:12 +0300 Subject: [PATCH 321/474] fix: avoid unnecessary scrolls on datatable --- .../packages/theme-shared/src/lib/constants/styles.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/constants/styles.ts b/npm/ng-packs/packages/theme-shared/src/lib/constants/styles.ts index a3698f2164..a54aecf581 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/constants/styles.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/constants/styles.ts @@ -32,6 +32,11 @@ export default ` min-width: 215px; } +.datatable-scroll { + margin-bottom: 5px !important; + width: unset !important; +} + .ui-table-scrollable-body::-webkit-scrollbar { height: 5px !important; width: 5px !important; From 60a54bc9f126cad6ce7f3a15200cf0e0c9f95c70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 7 Sep 2020 21:37:55 +0300 Subject: [PATCH 322/474] Added section: Defining the Features. --- docs/en/Features.md | 125 ++++++++++++++++++++++++++++- docs/en/images/features-action.png | Bin 0 -> 16742 bytes docs/en/images/features-modal.png | Bin 0 -> 35412 bytes 3 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 docs/en/images/features-action.png create mode 100644 docs/en/images/features-modal.png diff --git a/docs/en/Features.md b/docs/en/Features.md index 82d1790b9e..e125f16f08 100644 --- a/docs/en/Features.md +++ b/docs/en/Features.md @@ -4,7 +4,7 @@ ABP Feature system is used to **enable**, **disable** or **change the behavior** The runtime value for a feature is generally a `boolean` value, like `true` (enabled) or `false` (disabled). However, you can get/set **any kind** of value for feature. -Feature system was originally designed to control the tenant features in a **multi-tenant** application. However, it is **extensible** and capable of determining the features by any condition. +Feature system was originally designed to control the tenant features in a **[multi-tenant](Multi-Tenancy.md)** application. However, it is **extensible** and capable of determining the features by any condition. > The feature system is implemented with the [Volo.Abp.Features](https://www.nuget.org/packages/Volo.Abp.Features) NuGet package. Most of the times you don't need to manually [install it](https://abp.io/package-detail/Volo.Abp.Features) since it comes pre-installed with the [application startup template](Startup-Templates/Application.md). @@ -142,6 +142,129 @@ There are some useful extension methods for the `IFeatureChecker` interface; ## Defining the Features +A feature should be defined to be able to check it. + +### FeatureDefinitionProvider + +Create a class inheriting the `FeatureDefinitionProvider` to define permissions. + +**Example: Defining permissions** + +```csharp +using Volo.Abp.Features; + +namespace FeaturesDemo +{ + public class MyFeatureDefinitionProvider : FeatureDefinitionProvider + { + public override void Define(IFeatureDefinitionContext context) + { + var myGroup = context.AddGroup("MyApp"); + + myGroup.AddFeature("MyApp.PdfReporting", defaultValue: "false"); + myGroup.AddFeature("MyApp.MaxProductCount", defaultValue: "10"); + } + } +} +``` + +> ABP automatically discovers this class and registers the features. No additional configuration required. + +* In the `Define` method, you first need to add a **feature group** for your application/module or get an existing group then add **features** to this group. +* First feature, named `MyApp.PdfReporting`, is a `boolean` feature with `false` as the default value. +* Second feature, named `MyApp.MaxProductCount`, is a numeric feature with `10` as the default value. + +### Other Feature Properties + +While these minimal definitions are enough to make the feature system working, you can specify the **optional properties** for the features; + +* `DisplayName`: A localizable string that will be used to show the feature name on the user interface. +* `Description`: A longer localizable text to describe the feature. +* `ValueType`: Type of the feature value. Can be a class implementing the `IStringValueType`. Built-in types: + * `ToggleStringValueType`: Used to define `true`/`false`, `on`/`off`, `enabled`/`disabled` style features. A checkbox is shown on the UI. + * `FreeTextStringValueType`: Used to define free text values. A textbox is shown on the UI. + * `SelectionStringValueType`: Used to force the value to be selected from a list. A dropdown list is shown on the UI. +* `IsVisibleToClients` (default: `true`): Set false to hide the value of this feature from clients (browsers). Sharing the value with the clients helps them to conditionally show/hide/change the UI parts based on the feature value. +* `Properties`: A dictionary to set/get arbitrary key-value pairs related to this feature. This can be a point for customization. + +So, based on these descriptions, it would be better to define these features as shown below: + +```csharp +using FeaturesDemo.Localization; +using Volo.Abp.Features; +using Volo.Abp.Localization; +using Volo.Abp.Validation.StringValues; + +namespace FeaturesDemo +{ + public class MyFeatureDefinitionProvider : FeatureDefinitionProvider + { + public override void Define(IFeatureDefinitionContext context) + { + var myGroup = context.AddGroup("MyApp"); + + myGroup.AddFeature( + "MyApp.PdfReporting", + defaultValue: "false", + displayName: LocalizableString + .Create("PdfReporting"), + valueType: new ToggleStringValueType() + ); + + myGroup.AddFeature( + "MyApp.MaxProductCount", + defaultValue: "10", + displayName: LocalizableString + .Create("MaxProductCount"), + valueType: new FreeTextStringValueType( + new NumericValueValidator(0, 1000000)) + ); + } + } +} + +``` + +* `FeaturesDemoResource` is the project name in this example code. See the [localization document](Localization.md) for details about the localization system. +* First feature is set to `ToggleStringValueType`, while the second one is set to `FreeTextStringValueType` with a numeric validator that allows to the values from `0` to `1,000,000`. + +Remember to define the localization the keys in your localization file: + +````json +"PdfReporting": "PDF Reporting", +"MaxProductCount": "Maximum number of products" +```` + +See the [localization document](Localization.md) for details about the localization system. + +### Feature Management Modal + +The [application startup template](Startup-Templates/Application.md) comes with the [tenant management](Modules/Tenant-Management.md) and the [feature management](Modules/Feature-Management.md) modules pre-installed. + +Whenever you define a new feature, it will be available on the **feature management modal**. To open this modal, navigate to the **tenant management page** and select the `Features` action for a tenant (create a new tenant if there is no tenant yet): + +![features-action](images/features-action.png) + +This action opens a modal to manage the feature values for the selected tenant: + +![features-modal](images/features-modal.png) + +So, you can enable, disable and set values for a tenant. These values will be used whenever a user of this tenant uses the application. + +See the *Feature Management* section below to learn more about managing the features. + +### Child Features + +A feature may have child features. This is especially useful if you want to create a feature that is selectable only if another feature was enabled. + +TODO + +### Changing Features Definitions of a Depended Module + +TODO + +### Check a Permission in the Client Side + TODO ## Feature Management diff --git a/docs/en/images/features-action.png b/docs/en/images/features-action.png new file mode 100644 index 0000000000000000000000000000000000000000..8283a95be946232016b65a63f47c211424c6ba54 GIT binary patch literal 16742 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�UfiA=i< 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 literal 0 HcmV?d00001 diff --git a/docs/en/images/features-modal.png b/docs/en/images/features-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..74ee8aabc33189a420f3205ddc0c90215e5767c9 GIT binary patch literal 35412 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 Q7XuJ@y85}Sb4q9e0P>=`F8}}l literal 0 HcmV?d00001 From 8e2cd0e5b9f9a98b9ec60f536e515a9c9378c841 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Mon, 7 Sep 2020 21:48:23 +0300 Subject: [PATCH 323/474] fix: avoid ng-packagr error by mocking Document type --- .../ngx-datatable-default.directive.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-default.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-default.directive.ts index 64a64af4eb..e8b9ffac85 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-default.directive.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-default.directive.ts @@ -21,7 +21,7 @@ export class NgxDatatableDefaultDirective implements AfterViewInit, OnDestroy { return `ngx-datatable ${this.class}`; } - constructor(private table: DatatableComponent, @Inject(DOCUMENT) private document: Document) { + constructor(private table: DatatableComponent, @Inject(DOCUMENT) private document: MockDocument) { this.table.columnMode = ColumnMode.force; this.table.footerHeight = 50; this.table.headerHeight = 50; @@ -67,3 +67,18 @@ export class NgxDatatableDefaultDirective implements AfterViewInit, OnDestroy { this.subscription.unsubscribe(); } } + +// fix: https://github.com/angular/angular/issues/20351 +interface MockDocument { + body: MockBody; + documentElement: MockDocumentElement; +} + +interface MockBody { + offsetWidth: number; +} + +interface MockDocumentElement { + clientHeight: number; + scrollHeight: number; +} From 502ac9eea5d1dc769826a828fba72fd8e2ca6070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 7 Sep 2020 21:49:04 +0300 Subject: [PATCH 324/474] added example: Defining child features --- docs/en/Features.md | 47 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/docs/en/Features.md b/docs/en/Features.md index e125f16f08..963f15a9b7 100644 --- a/docs/en/Features.md +++ b/docs/en/Features.md @@ -222,7 +222,6 @@ namespace FeaturesDemo } } } - ``` * `FeaturesDemoResource` is the project name in this example code. See the [localization document](Localization.md) for details about the localization system. @@ -257,7 +256,51 @@ See the *Feature Management* section below to learn more about managing the feat A feature may have child features. This is especially useful if you want to create a feature that is selectable only if another feature was enabled. -TODO +**Example: Defining child features** + +```csharp +using FeaturesDemo.Localization; +using Volo.Abp.Features; +using Volo.Abp.Localization; +using Volo.Abp.Validation.StringValues; + +namespace FeaturesDemo +{ + public class MyFeatureDefinitionProvider : FeatureDefinitionProvider + { + public override void Define(IFeatureDefinitionContext context) + { + var myGroup = context.AddGroup("MyApp"); + + var reportingFeature = myGroup.AddFeature( + "MyApp.Reporting", + defaultValue: "false", + displayName: LocalizableString + .Create("Reporting"), + valueType: new ToggleStringValueType() + ); + + reportingFeature.CreateChild( + "MyApp.PdfReporting", + defaultValue: "false", + displayName: LocalizableString + .Create("PdfReporting"), + valueType: new ToggleStringValueType() + ); + + reportingFeature.CreateChild( + "MyApp.ExcelReporting", + defaultValue: "false", + displayName: LocalizableString + .Create("ExcelReporting"), + valueType: new ToggleStringValueType() + ); + } + } +} +``` + +The example above defines a *Reporting* feature with two children: *PDF Reporting* and *Excel Reporting*. ### Changing Features Definitions of a Depended Module From 36f8bb65a98aa26cfe48b4735534b9629da1ea83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 7 Sep 2020 21:58:30 +0300 Subject: [PATCH 325/474] Add link to the angular UI doc for the permissions and revise some sections. --- docs/en/Authorization.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/docs/en/Authorization.md b/docs/en/Authorization.md index 4b7502f437..eef4237039 100644 --- a/docs/en/Authorization.md +++ b/docs/en/Authorization.md @@ -80,6 +80,8 @@ namespace Acme.BookStore.Permissions > ABP automatically discovers this class. No additional configuration required! +> You typically define this class inside the `Application.Contracts` project of your [application](Startup-Templates/Application.md). The startup template already comes with an empty class named *YourProjectNamePermissionDefinitionProvider* that you can start with. + In the `Define` method, you first need to add a **permission group** or get an existing group then add **permissions** to this group. When you define a permission, it becomes usable in the ASP.NET Core authorization system as a **policy** name. It also becomes visible in the UI. See permissions dialog for a role: @@ -276,14 +278,24 @@ public async Task CreateAsync(CreateAuthorDto input) > Tip: Prefer to use the `Authorize` attribute wherever possible, since it is declarative & simple. Use `IAuthorizationService` if you need to conditionally check a permission and run a business code based on the permission check. -### Check a Permission in JavaScript +## Check a Permission in JavaScript + +You may need to check a policy/permission on the client side. + +### MVC UI -You may need to check a policy/permission on the client side. For ASP.NET Core MVC / Razor Pages applications, you can use the `abp.auth` API. Example: +For ASP.NET Core MVC / Razor Pages applications, you can use the `abp.auth` API. + +**Example: Check if a given permission has been granted for the current user** ```js abp.auth.isGranted('MyPermissionName'); ``` +### Angular UI + +See the [permission management document](UI/Angular/Permission-Management.md) for the Angular UI. + ## Permission Management Permission management is normally done by an admin user using the permission management modal: @@ -374,7 +386,7 @@ Configure(options => ### Permission Store -`IPermissionStore` is the only interface that needs to be implemented to read the value of permissions from a persistence source, generally a database system. Permission management module implements it. See the [permission management module documentation](Modules/Permission-Management.md) for more information +`IPermissionStore` is the only interface that needs to be implemented to read the value of permissions from a persistence source, generally a database system. The Permission Management module implements it and pre-installed in the application startup template. See the [permission management module documentation](Modules/Permission-Management.md) for more information ### AlwaysAllowAuthorizationService From 8e45c9a240b9930eede375fc0470de51ee5b4673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 7 Sep 2020 21:58:42 +0300 Subject: [PATCH 326/474] Add Feature Store section. --- docs/en/Features.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/Features.md b/docs/en/Features.md index 963f15a9b7..35ba5a0de0 100644 --- a/docs/en/Features.md +++ b/docs/en/Features.md @@ -306,7 +306,7 @@ The example above defines a *Reporting* feature with two children: *PDF Reportin TODO -### Check a Permission in the Client Side +## Check a Permission in the Client Side TODO @@ -324,4 +324,4 @@ TODO ### Feature Store -TODO \ No newline at end of file +`IFeatureStore` is the only interface that needs to be implemented to read the value of features from a persistence source, generally a database system. The Feature Management module implements it and pre-installed in the application startup template. See the [feature management module documentation](https://docs.abp.io/en/abp/latest/Modules/Feature-Management) for more information \ No newline at end of file From 40978470c6b5bc8f032d320aa59535d237c646b8 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 8 Sep 2020 11:17:34 +0800 Subject: [PATCH 327/474] Refactor --- .../FeatureManagement/IFeatureAppService.cs | 8 +-- .../FeatureManagement/FeatureAppService.cs | 52 ++++--------------- .../AbpFeatureManagementDomainModule.cs | 1 + .../FeatureManagement/FeaturesController.cs | 14 ----- .../FeatureManagementModal.cshtml.cs | 21 +------- .../Pages/TenantManagement/Tenants/Index.js | 3 +- 6 files changed, 15 insertions(+), 84 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs index a2a87b195b..ce9609976e 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs @@ -6,12 +6,8 @@ namespace Volo.Abp.FeatureManagement { public interface IFeatureAppService : IApplicationService { - Task GetAsync([NotNull] string providerName, [NotNull] string providerKey); + Task GetAsync([NotNull] string providerName, string providerKey); - Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdateFeaturesDto input); - - Task GetHostAsync(); - - Task UpdateHostAsync(UpdateFeaturesDto input); + Task UpdateAsync([NotNull] string providerName, string providerKey, UpdateFeaturesDto input); } } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs index 6969739baa..7bb305054e 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs @@ -25,13 +25,18 @@ namespace Volo.Abp.FeatureManagement Options = options.Value; } - public virtual async Task GetAsync([NotNull] string providerName, [NotNull] string providerKey) + public virtual async Task GetAsync([NotNull] string providerName, string providerKey) { await CheckProviderPolicy(providerName); var featureDefinitions = FeatureDefinitionManager.GetAll(); var features = new List(); + if (providerName == HostFeatureValueProvider.ProviderName) + { + featureDefinitions = featureDefinitions.Where(x => x.IsAvailableToHost).ToList(); + } + foreach (var featureDefinition in featureDefinitions) { var feature = await FeatureManager.GetOrNullWithProviderAsync(featureDefinition.Name, providerName, providerKey); @@ -56,58 +61,19 @@ namespace Volo.Abp.FeatureManagement return new FeatureListDto { Features = features }; } - public virtual async Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdateFeaturesDto input) + public virtual async Task UpdateAsync([NotNull] string providerName, string providerKey, UpdateFeaturesDto input) { await CheckProviderPolicy(providerName); - foreach (var feature in input.Features) - { - await FeatureManager.SetAsync(feature.Name, feature.Value, providerName, providerKey); - } - } - - [Authorize(FeatureManagementPermissions.ManageHostFeatures)] - public async Task GetHostAsync() - { - var featureDefinitions = FeatureDefinitionManager.GetAll().Where(x => x.IsAvailableToHost); - var features = new List(); - - foreach (var featureDefinition in featureDefinitions) - { - var feature = await FeatureManager.GetOrNullWithProviderAsync(featureDefinition.Name, HostFeatureValueProvider.ProviderName, null); - features.Add(new FeatureDto - { - Name = featureDefinition.Name, - DisplayName = featureDefinition.DisplayName?.Localize(StringLocalizerFactory), - ValueType = featureDefinition.ValueType, - Description = featureDefinition.Description?.Localize(StringLocalizerFactory), - ParentName = featureDefinition.Parent?.Name, - Value = feature.Value, - Provider = new FeatureProviderDto - { - Name = feature.Provider?.Name, - Key = feature.Provider?.Key - } - }); - } - - SetFeatureDepth(features, HostFeatureValueProvider.ProviderName, null); - - return new FeatureListDto { Features = features }; - } - - [Authorize(FeatureManagementPermissions.ManageHostFeatures)] - public async Task UpdateHostAsync(UpdateFeaturesDto input) - { foreach (var feature in input.Features) { var featureDefinition = FeatureDefinitionManager.GetOrNull(feature.Name); - if (featureDefinition == null || !featureDefinition.IsAvailableToHost) + if (featureDefinition == null || (providerName == HostFeatureValueProvider.ProviderName && !featureDefinition.IsAvailableToHost)) { throw new UserFriendlyException(L["FeatureNotAvailable"]); } - await FeatureManager.SetAsync(feature.Name, feature.Value, HostFeatureValueProvider.ProviderName, null); + await FeatureManager.SetAsync(feature.Name, feature.Value, providerName, providerKey); } } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs index 17e0b9fc04..b9992309dd 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs @@ -19,6 +19,7 @@ namespace Volo.Abp.FeatureManagement { options.Providers.Add(); options.Providers.Add(); + options.ProviderPolicies[HostFeatureValueProvider.ProviderName] = "FeatureManagement.ManageHostFeatures"; options.Providers.Add(); //TODO: Should be moved to the Tenant Management module diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs index a5c9c1c819..1c956e1fcf 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs @@ -27,19 +27,5 @@ namespace Volo.Abp.FeatureManagement { return FeatureAppService.UpdateAsync(providerName, providerKey, input); } - - [HttpGet] - [Route("host")] - public virtual Task GetHostAsync() - { - return FeatureAppService.GetHostAsync(); - } - - [HttpPut] - [Route("host")] - public virtual Task UpdateHostAsync(UpdateFeaturesDto input) - { - return FeatureAppService.UpdateHostAsync(input); - } } } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs index 0fd5d756f7..ecc59d11f9 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs @@ -16,7 +16,6 @@ namespace Volo.Abp.FeatureManagement.Web.Pages.FeatureManagement [BindProperty(SupportsGet = true)] public string ProviderName { get; set; } - [Required] [HiddenInput] [BindProperty(SupportsGet = true)] public string ProviderKey { get; set; } @@ -37,14 +36,7 @@ namespace Volo.Abp.FeatureManagement.Web.Pages.FeatureManagement public virtual async Task OnGetAsync() { - if (ProviderName == HostFeatureValueProvider.ProviderName) - { - FeatureListDto = await FeatureAppService.GetHostAsync(); - } - else - { - FeatureListDto = await FeatureAppService.GetAsync(ProviderName, ProviderKey); - } + FeatureListDto = await FeatureAppService.GetAsync(ProviderName, ProviderKey); } public virtual async Task OnPostAsync() @@ -58,14 +50,7 @@ namespace Volo.Abp.FeatureManagement.Web.Pages.FeatureManagement }).ToList() }; - if (ProviderName == HostFeatureValueProvider.ProviderName) - { - await FeatureAppService.UpdateHostAsync(features); - } - else - { - await FeatureAppService.UpdateAsync(ProviderName, ProviderKey, features); - } + await FeatureAppService.UpdateAsync(ProviderName, ProviderKey, features); return NoContent(); } @@ -88,8 +73,6 @@ namespace Volo.Abp.FeatureManagement.Web.Pages.FeatureManagement public string Value { get; set; } - public string ProviderName { get; set; } - public bool BoolValue { get; set; } public string Type { get; set; } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js index 828f163908..ecb2309f36 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js @@ -132,8 +132,7 @@ _$wrapper.find('button[name=ManageHostFeatures]').click(function (e) { e.preventDefault(); _featuresModal.open({ - providerName: 'H', - providerKey: 'H' + providerName: 'H' }); }); }); From 0bae2564c127e359247e5ec87ba510eaf6f311c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 8 Sep 2020 10:27:01 +0300 Subject: [PATCH 328/474] Create Angular UI features page --- docs/en/UI/Angular/Features.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docs/en/UI/Angular/Features.md diff --git a/docs/en/UI/Angular/Features.md b/docs/en/UI/Angular/Features.md new file mode 100644 index 0000000000..f749030a26 --- /dev/null +++ b/docs/en/UI/Angular/Features.md @@ -0,0 +1,3 @@ +# Angular UI: Features + +> This document explains how to get feature values in an Angular application. See the [Features document](../../Features.md) to learn the feature system. \ No newline at end of file From 00c5114b1e3ec8d52b4bdc0243bfdf34c6f6f14e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 8 Sep 2020 10:29:04 +0300 Subject: [PATCH 329/474] Added sections to the features document --- docs/en/Features.md | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/docs/en/Features.md b/docs/en/Features.md index 35ba5a0de0..1ab26a113a 100644 --- a/docs/en/Features.md +++ b/docs/en/Features.md @@ -304,11 +304,38 @@ The example above defines a *Reporting* feature with two children: *PDF Reportin ### Changing Features Definitions of a Depended Module -TODO +A class deriving from the `FeatureDefinitionProvider` (just like the example above) can also get the existing permission definitions (defined by the depended [modules](Module-Development-Basics.md)) and change their definitions. -## Check a Permission in the Client Side +**Example: Manipulate an existing feature definition** -TODO +```csharp +var someGroup = context.GetGroupOrNull("SomeModule"); +var feature = someGroup.Features.FirstOrDefault(f => f.Name == "SomeFeature"); +if (feature != null) +{ + feature.Description = ... + feature.CreateChild(...); +} +``` + +## Check a Feature in the Client Side + +A feature value is available at the client side too, unless you set `IsVisibleToClients` to `false` on the feature definition. The feature values are exposed from the [Application Configuration API](API/Application-Configuration.md) and usable via some services on the UI. + +### ASP.NET Core MVC / Razor Pages UI + +Use `abp.features` API to get the feature values. + +**Example: Get feature values in the JavaScript code** + +````js +var isEnabled = abp.features.values["MyApp.ExcelReporting"] === "true"; +var count = abp.features.values["MyApp.MaxProductCount"]; +```` + +### Angular UI + +See the [features](Features.md) document for the Angular UI. ## Feature Management From fcdcc3e6708feaaf8532a655106f65fe4940fafd Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 8 Sep 2020 10:39:55 +0300 Subject: [PATCH 330/474] feat: create replaceable-components.service --- .../packages/core/src/lib/services/index.ts | 1 + .../replaceable-components.service.ts | 65 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 npm/ng-packs/packages/core/src/lib/services/replaceable-components.service.ts diff --git a/npm/ng-packs/packages/core/src/lib/services/index.ts b/npm/ng-packs/packages/core/src/lib/services/index.ts index c084fd4808..d3d13de20b 100644 --- a/npm/ng-packs/packages/core/src/lib/services/index.ts +++ b/npm/ng-packs/packages/core/src/lib/services/index.ts @@ -9,6 +9,7 @@ export * from './localization.service'; export * from './multi-tenancy.service'; export * from './profile-state.service'; export * from './profile.service'; +export * from './replaceable-components.service'; export * from './rest.service'; export * from './routes.service'; export * from './session-state.service'; diff --git a/npm/ng-packs/packages/core/src/lib/services/replaceable-components.service.ts b/npm/ng-packs/packages/core/src/lib/services/replaceable-components.service.ts new file mode 100644 index 0000000000..418e608c49 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/services/replaceable-components.service.ts @@ -0,0 +1,65 @@ +import { Injectable, NgZone } from '@angular/core'; +import { Router } from '@angular/router'; +import { ReplaceableComponents } from '../models/replaceable-components'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { noop } from '../utils/common-utils'; +import { map, filter } from 'rxjs/operators'; + +@Injectable({ providedIn: 'root' }) +export class ReplaceableComponentsService { + private components$ = new BehaviorSubject([]); + + get replaceableComponents$(): Observable { + return this.components$.asObservable(); + } + + get replaceableComponents(): ReplaceableComponents.ReplaceableComponent[] { + return this.components$.value; + } + + constructor(private ngZone: NgZone, private router: Router) {} + + // TODO: Create a shared service for route reload and more + private reloadRoute() { + const { shouldReuseRoute } = this.router.routeReuseStrategy; + const setRouteReuse = (reuse: typeof shouldReuseRoute) => { + this.router.routeReuseStrategy.shouldReuseRoute = reuse; + }; + + setRouteReuse(() => false); + this.router.navigated = false; + + this.ngZone.run(async () => { + await this.router.navigateByUrl(this.router.url).catch(noop); + setRouteReuse(shouldReuseRoute); + }); + } + + add(replaceableComponent: ReplaceableComponents.ReplaceableComponent, reload?: boolean): void { + let replaceableComponents = this.components$.value; + + const index = replaceableComponents.findIndex( + component => component.key === replaceableComponent.key, + ); + + if (index > -1) { + replaceableComponents[index] = replaceableComponent; + } else { + replaceableComponents = [...replaceableComponents, replaceableComponent]; + } + + this.components$.next(replaceableComponents); + + if (reload) this.reloadRoute(); + } + + get(replaceableComponentKey: string): ReplaceableComponents.ReplaceableComponent { + return this.replaceableComponents.find(component => component.key === replaceableComponentKey); + } + + get$(replaceableComponentKey: string): Observable { + return this.replaceableComponents$.pipe( + map(components => components.find(component => component.key === replaceableComponentKey)), + ); + } +} From a2f6235225001958db5151dbf4f2217c2c0d8d18 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 8 Sep 2020 10:40:27 +0300 Subject: [PATCH 331/474] chore: deprecate replaceable-components.state --- .../actions/replaceable-components.actions.ts | 3 +- .../states/replaceable-components.state.ts | 30 ++++++------------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/actions/replaceable-components.actions.ts b/npm/ng-packs/packages/core/src/lib/actions/replaceable-components.actions.ts index 8df6a384ad..a800ab858a 100644 --- a/npm/ng-packs/packages/core/src/lib/actions/replaceable-components.actions.ts +++ b/npm/ng-packs/packages/core/src/lib/actions/replaceable-components.actions.ts @@ -1,7 +1,8 @@ import { ReplaceableComponents } from '../models/replaceable-components'; +// tslint:disable: max-line-length /** - * @see usage: https://github.com/abpframework/abp/pull/2522#issue-358333183 + * @deprecated To be deleted in v4.0. Use ReplaceableComponentsService instead. See the doc (https://docs.abp.io/en/abp/latest/UI/Angular/Component-Replacement) */ export class AddReplaceableComponent { static readonly type = '[ReplaceableComponents] Add'; diff --git a/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts b/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts index 82096c5472..e5caa9f95b 100644 --- a/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts +++ b/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts @@ -1,11 +1,14 @@ -import { Injectable, NgZone } from '@angular/core'; -import { Router } from '@angular/router'; +import { Injectable } from '@angular/core'; import { Action, createSelector, Selector, State, StateContext } from '@ngxs/store'; import snq from 'snq'; import { AddReplaceableComponent } from '../actions/replaceable-components.actions'; import { ReplaceableComponents } from '../models/replaceable-components'; -import { noop } from '../utils/common-utils'; +import { ReplaceableComponentsService } from '../services/replaceable-components.service'; +// tslint:disable: max-line-length +/** + * @deprecated To be deleted in v4.0. Use ReplaceableComponentsService instead. See the doc (https://docs.abp.io/en/abp/latest/UI/Angular/Component-Replacement) + */ @State({ name: 'ReplaceableComponentsState', defaults: { replaceableComponents: [] } as ReplaceableComponents.State, @@ -30,23 +33,7 @@ export class ReplaceableComponentsState { return selector; } - constructor(private ngZone: NgZone, private router: Router) {} - - // TODO: Create a shared service for route reload and more - private reloadRoute() { - const { shouldReuseRoute } = this.router.routeReuseStrategy; - const setRouteReuse = (reuse: typeof shouldReuseRoute) => { - this.router.routeReuseStrategy.shouldReuseRoute = reuse; - }; - - setRouteReuse(() => false); - this.router.navigated = false; - - this.ngZone.run(async () => { - await this.router.navigateByUrl(this.router.url).catch(noop); - setRouteReuse(shouldReuseRoute); - }); - } + constructor(private service: ReplaceableComponentsService) {} @Action(AddReplaceableComponent) replaceableComponentsAction( @@ -69,6 +56,7 @@ export class ReplaceableComponentsState { replaceableComponents, }); - if (reload) this.reloadRoute(); + console.log(this.service); + this.service.add(payload, reload); } } From 7e7d86a745343c2e9c377a1c1e3752a45776c6ed Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 8 Sep 2020 10:42:07 +0300 Subject: [PATCH 332/474] feat: implement the new service to project --- .../components/dynamic-layout.component.ts | 9 ++- .../replaceable-route-container.component.ts | 9 ++- .../replaceable-template.directive.ts | 9 ++- .../tests/dynamic-layout.component.spec.ts | 63 +++++++++---------- .../src/lib/providers/styles.provider.ts | 39 ++++++------ 5 files changed, 61 insertions(+), 68 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts b/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts index c47b3c02fd..3d6870f577 100644 --- a/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts +++ b/npm/ng-packs/packages/core/src/lib/components/dynamic-layout.component.ts @@ -1,13 +1,12 @@ import { Component, Injector, Optional, SkipSelf, Type } from '@angular/core'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; -import { Store } from '@ngxs/store'; import { eLayoutType } from '../enums/common'; import { ABP } from '../models'; import { ReplaceableComponents } from '../models/replaceable-components'; import { LocalizationService } from '../services/localization.service'; +import { ReplaceableComponentsService } from '../services/replaceable-components.service'; import { RoutesService } from '../services/routes.service'; import { SubscriptionService } from '../services/subscription.service'; -import { ReplaceableComponentsState } from '../states/replaceable-components.state'; import { findRoute, getRoutePath } from '../utils/route-utils'; import { TreeNode } from '../utils/tree-utils'; @@ -37,7 +36,7 @@ export class DynamicLayoutComponent { constructor( injector: Injector, private localizationService: LocalizationService, - private store: Store, + private replaceableComponents: ReplaceableComponentsService, private subscription: SubscriptionService, @Optional() @SkipSelf() dynamicLayoutComponent: DynamicLayoutComponent, ) { @@ -67,7 +66,7 @@ export class DynamicLayoutComponent { if (!expectedLayout) expectedLayout = eLayoutType.empty; const key = this.layouts.get(expectedLayout); - this.layout = this.getComponent(key).component; + this.layout = this.getComponent(key)?.component; } }); @@ -82,6 +81,6 @@ export class DynamicLayoutComponent { } private getComponent(key: string): ReplaceableComponents.ReplaceableComponent { - return this.store.selectSnapshot(ReplaceableComponentsState.getComponent(key)); + return this.replaceableComponents.get(key); } } diff --git a/npm/ng-packs/packages/core/src/lib/components/replaceable-route-container.component.ts b/npm/ng-packs/packages/core/src/lib/components/replaceable-route-container.component.ts index 04c596d398..6c0dabd511 100644 --- a/npm/ng-packs/packages/core/src/lib/components/replaceable-route-container.component.ts +++ b/npm/ng-packs/packages/core/src/lib/components/replaceable-route-container.component.ts @@ -1,10 +1,9 @@ import { Component, OnInit, Type } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; -import { Store } from '@ngxs/store'; import { distinctUntilChanged } from 'rxjs/operators'; import { ReplaceableComponents } from '../models/replaceable-components'; +import { ReplaceableComponentsService } from '../services/replaceable-components.service'; import { SubscriptionService } from '../services/subscription.service'; -import { ReplaceableComponentsState } from '../states/replaceable-components.state'; @Component({ selector: 'abp-replaceable-route-container', @@ -22,7 +21,7 @@ export class ReplaceableRouteContainerComponent implements OnInit { constructor( private route: ActivatedRoute, - private store: Store, + private replaceableComponents: ReplaceableComponentsService, private subscription: SubscriptionService, ) {} @@ -31,8 +30,8 @@ export class ReplaceableRouteContainerComponent implements OnInit { this.componentKey = (this.route.snapshot.data .replaceableComponent as ReplaceableComponents.RouteData).key; - const component$ = this.store - .select(ReplaceableComponentsState.getComponent(this.componentKey)) + const component$ = this.replaceableComponents + .get$(this.componentKey) .pipe(distinctUntilChanged()); this.subscription.addOne( diff --git a/npm/ng-packs/packages/core/src/lib/directives/replaceable-template.directive.ts b/npm/ng-packs/packages/core/src/lib/directives/replaceable-template.directive.ts index fd9051c64e..489d1afabc 100644 --- a/npm/ng-packs/packages/core/src/lib/directives/replaceable-template.directive.ts +++ b/npm/ng-packs/packages/core/src/lib/directives/replaceable-template.directive.ts @@ -10,15 +10,14 @@ import { Type, ViewContainerRef, } from '@angular/core'; -import { Store } from '@ngxs/store'; import compare from 'just-compare'; import { Subscription } from 'rxjs'; import { filter } from 'rxjs/operators'; import snq from 'snq'; import { ABP } from '../models/common'; import { ReplaceableComponents } from '../models/replaceable-components'; +import { ReplaceableComponentsService } from '../services/replaceable-components.service'; import { SubscriptionService } from '../services/subscription.service'; -import { ReplaceableComponentsState } from '../states/replaceable-components.state'; @Directive({ selector: '[abpReplaceableTemplate]', providers: [SubscriptionService] }) export class ReplaceableTemplateDirective implements OnInit, OnChanges { @@ -45,7 +44,7 @@ export class ReplaceableTemplateDirective implements OnInit, OnChanges { private templateRef: TemplateRef, private cfRes: ComponentFactoryResolver, private vcRef: ViewContainerRef, - private store: Store, + private replaceableComponents: ReplaceableComponentsService, private subscription: SubscriptionService, ) { this.context = { @@ -58,8 +57,8 @@ export class ReplaceableTemplateDirective implements OnInit, OnChanges { } ngOnInit() { - const component$ = this.store - .select(ReplaceableComponentsState.getComponent(this.data.componentKey)) + const component$ = this.replaceableComponents + .get$(this.data.componentKey) .pipe( filter( (res = {} as ReplaceableComponents.ReplaceableComponent) => diff --git a/npm/ng-packs/packages/core/src/lib/tests/dynamic-layout.component.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/dynamic-layout.component.spec.ts index 4d5f53a9ba..43ad6f87b1 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/dynamic-layout.component.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/dynamic-layout.component.spec.ts @@ -7,7 +7,11 @@ import { NEVER } from 'rxjs'; import { DynamicLayoutComponent, RouterOutletComponent } from '../components'; import { eLayoutType } from '../enums/common'; import { ABP } from '../models'; -import { ApplicationConfigurationService, RoutesService } from '../services'; +import { + ApplicationConfigurationService, + RoutesService, + ReplaceableComponentsService, +} from '../services'; import { ReplaceableComponentsState } from '../states'; @Component({ @@ -78,33 +82,7 @@ const routes: ABP.Route[] = [ }, ]; -const storeData = { - ReplaceableComponentsState: { - replaceableComponents: [ - { - key: 'Theme.ApplicationLayoutComponent', - component: DummyApplicationLayoutComponent, - }, - { - key: 'Theme.AccountLayoutComponent', - component: DummyAccountLayoutComponent, - }, - { - key: 'Theme.EmptyLayoutComponent', - component: DummyEmptyLayoutComponent, - }, - ], - }, -}; - describe('DynamicLayoutComponent', () => { - const mockActions: Actions = NEVER; - const mockStore = ({ - selectSnapshot() { - return true; - }, - } as unknown) as Store; - const createComponent = createRoutingFactory({ component: RouterOutletComponent, stubsEnabled: false, @@ -113,10 +91,16 @@ describe('DynamicLayoutComponent', () => { providers: [ { provide: RoutesService, - useFactory: () => new RoutesService(mockActions, mockStore), + useFactory: () => + new RoutesService(NEVER, ({ + selectSnapshot() { + return true; + }, + } as unknown) as Store), }, + ReplaceableComponentsService, ], - imports: [RouterModule, DummyLayoutModule, NgxsModule.forRoot([ReplaceableComponentsState])], + imports: [RouterModule, DummyLayoutModule, NgxsModule.forRoot()], routes: [ { path: '', component: RouterOutletComponent }, { @@ -163,15 +147,26 @@ describe('DynamicLayoutComponent', () => { }); let spectator: SpectatorRouting; - let store: Store; + let replaceableComponents: ReplaceableComponentsService; beforeEach(async () => { spectator = createComponent(); - store = spectator.inject(Store); + replaceableComponents = spectator.inject(ReplaceableComponentsService); const routesService = spectator.inject(RoutesService); routesService.add(routes); - store.reset(storeData); + replaceableComponents.add({ + key: 'Theme.ApplicationLayoutComponent', + component: DummyApplicationLayoutComponent, + }); + replaceableComponents.add({ + key: 'Theme.AccountLayoutComponent', + component: DummyAccountLayoutComponent, + }); + replaceableComponents.add({ + key: 'Theme.EmptyLayoutComponent', + component: DummyEmptyLayoutComponent, + }); }); it('should handle application layout from parent abp route and display it', async () => { @@ -204,8 +199,8 @@ describe('DynamicLayoutComponent', () => { }); it('should not display any layout when layouts are empty', async () => { - store.reset({ ...storeData, ReplaceableComponentsState: {} }); - + const spy = jest.spyOn(replaceableComponents, 'get'); + spy.mockReturnValue(null); spectator.detectChanges(); spectator.router.navigateByUrl('/withoutLayout'); diff --git a/npm/ng-packs/packages/theme-basic/src/lib/providers/styles.provider.ts b/npm/ng-packs/packages/theme-basic/src/lib/providers/styles.provider.ts index ab6ea9cd1e..b823503912 100644 --- a/npm/ng-packs/packages/theme-basic/src/lib/providers/styles.provider.ts +++ b/npm/ng-packs/packages/theme-basic/src/lib/providers/styles.provider.ts @@ -1,4 +1,4 @@ -import { AddReplaceableComponent, CONTENT_STRATEGY, DomInsertionService } from '@abp/ng.core'; +import { ReplaceableComponentsService, CONTENT_STRATEGY, DomInsertionService } from '@abp/ng.core'; import { APP_INITIALIZER } from '@angular/core'; import { Store } from '@ngxs/store'; import { AccountLayoutComponent } from '../components/account-layout/account-layout.component'; @@ -11,32 +11,33 @@ export const BASIC_THEME_STYLES_PROVIDERS = [ { provide: APP_INITIALIZER, useFactory: configureStyles, - deps: [DomInsertionService, Store], + deps: [DomInsertionService, ReplaceableComponentsService], multi: true, }, ]; -export function configureStyles(domInsertion: DomInsertionService, store: Store) { +export function configureStyles( + domInsertion: DomInsertionService, + replaceableComponents: ReplaceableComponentsService, +) { return () => { domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles)); - initLayouts(store); + initLayouts(replaceableComponents); }; } -function initLayouts(store: Store) { - store.dispatch([ - new AddReplaceableComponent({ - key: eThemeBasicComponents.ApplicationLayout, - component: ApplicationLayoutComponent, - }), - new AddReplaceableComponent({ - key: eThemeBasicComponents.AccountLayout, - component: AccountLayoutComponent, - }), - new AddReplaceableComponent({ - key: eThemeBasicComponents.EmptyLayout, - component: EmptyLayoutComponent, - }), - ]); +function initLayouts(replaceableComponents: ReplaceableComponentsService) { + replaceableComponents.add({ + key: eThemeBasicComponents.ApplicationLayout, + component: ApplicationLayoutComponent, + }); + replaceableComponents.add({ + key: eThemeBasicComponents.AccountLayout, + component: AccountLayoutComponent, + }); + replaceableComponents.add({ + key: eThemeBasicComponents.EmptyLayout, + component: EmptyLayoutComponent, + }); } From 731539ef84a655c47e92891417aa1a72dafc236a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 8 Sep 2020 10:43:42 +0300 Subject: [PATCH 333/474] Added Feature Management section. --- docs/en/Features.md | 35 +++++++++++++++++++++++- docs/en/Modules/Feature-Management.md | 2 ++ docs/en/Modules/Permission-Management.md | 2 ++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/docs/en/Features.md b/docs/en/Features.md index 1ab26a113a..05712eb803 100644 --- a/docs/en/Features.md +++ b/docs/en/Features.md @@ -170,6 +170,8 @@ namespace FeaturesDemo > ABP automatically discovers this class and registers the features. No additional configuration required. +> This class is generally created in the `Application.Contracts` project of your solution. + * In the `Define` method, you first need to add a **feature group** for your application/module or get an existing group then add **features** to this group. * First feature, named `MyApp.PdfReporting`, is a `boolean` feature with `false` as the default value. * Second feature, named `MyApp.MaxProductCount`, is a numeric feature with `10` as the default value. @@ -339,7 +341,38 @@ See the [features](Features.md) document for the Angular UI. ## Feature Management -TODO +Feature management is normally done by an admin user using the feature management modal: + +![features-modal](images/features-modal.png) + +This modal is available on the related entities, like tenants in a multi-tenant application. To open it, navigate to the **Tenant Management** page (for a multi-tenant application), click to the **Actions** button left to the Tenant and select the **Features** action. + +If you need to manage features by code, inject the `IFeatureManager` service. + +**Example: Enable PDF reporting for a tenant** + +```csharp +public class MyService : ITransientDependency +{ + private readonly IFeatureManager _featureManager; + + public MyService(IFeatureManager featureManager) + { + _featureManager = featureManager; + } + + public async Task EnablePdfReporting(Guid tenantId) + { + await _featureManager.SetForTenantAsync( + tenantId, + "MyApp.PdfReporting", + true.ToString() + ); + } +} +``` + +`IFeatureManager` is defined by the Feature Management module. It comes pre-installed with the application startup template. See the [feature management module documentation](Modules/Feature-Management.md) for more information. ## Advanced Topics diff --git a/docs/en/Modules/Feature-Management.md b/docs/en/Modules/Feature-Management.md index 5c41277dd8..968b742092 100644 --- a/docs/en/Modules/Feature-Management.md +++ b/docs/en/Modules/Feature-Management.md @@ -1,3 +1,5 @@ # Feature Management Module +> This module implements the `IFeatureStore` to store and manage feature values in a database. See the [Features System document](../Features.md) to understand the features first. + TODO \ No newline at end of file diff --git a/docs/en/Modules/Permission-Management.md b/docs/en/Modules/Permission-Management.md index faa03eecc9..ad48b60171 100644 --- a/docs/en/Modules/Permission-Management.md +++ b/docs/en/Modules/Permission-Management.md @@ -1,3 +1,5 @@ # Permission Management Module +This module implements the `IPermissionStore` to store and manage feature values in a database. See the [Authorization document](../Authorization.md) to understand the authorization and permission systems first. + TODO \ No newline at end of file From 5c173a692e6d927d82688cca0c446f054d0fcf63 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 8 Sep 2020 15:54:12 +0800 Subject: [PATCH 334/474] Group features on the feature management modal --- .../Abp/Features/FeatureDefinitionManager.cs | 9 +- .../Abp/Features/IFeatureDefinitionManager.cs | 4 +- .../Abp/FeatureManagement/FeatureGroupDto.cs | 18 ++++ .../Abp/FeatureManagement/FeatureListDto.cs | 9 -- .../GetFeatureListResultDto.cs | 9 ++ .../FeatureManagement/IFeatureAppService.cs | 2 +- .../FeatureManagement/FeatureAppService.cs | 55 +++++++---- .../FeatureManagement/FeaturesController.cs | 2 +- .../FeatureManagementModal.cshtml | 98 +++++++++++-------- .../FeatureManagementModal.cshtml.cs | 19 +++- .../FeatureAppService_Tests.cs | 4 +- .../StringValueJsonConverter_Tests.cs | 82 +++++++++------- 12 files changed, 190 insertions(+), 121 deletions(-) create mode 100644 modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureGroupDto.cs delete mode 100644 modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureListDto.cs create mode 100644 modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/GetFeatureListResultDto.cs diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinitionManager.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinitionManager.cs index f8e8d9e9fe..31498e0756 100644 --- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinitionManager.cs +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinitionManager.cs @@ -62,6 +62,11 @@ namespace Volo.Abp.Features return FeatureDefinitions.GetOrDefault(name); } + public IReadOnlyList GetGroups() + { + return FeatureGroupDefinitions.Values.ToImmutableList(); + } + protected virtual Dictionary CreateFeatureDefinitions() { var features = new Dictionary(); @@ -78,7 +83,7 @@ namespace Volo.Abp.Features } protected virtual void AddFeatureToDictionaryRecursively( - Dictionary features, + Dictionary features, FeatureDefinition feature) { if (features.ContainsKey(feature.Name)) @@ -114,4 +119,4 @@ namespace Volo.Abp.Features return context.Groups; } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/IFeatureDefinitionManager.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/IFeatureDefinitionManager.cs index c0172d7bc3..ca0a8cbcc6 100644 --- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/IFeatureDefinitionManager.cs +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/IFeatureDefinitionManager.cs @@ -11,5 +11,7 @@ namespace Volo.Abp.Features IReadOnlyList GetAll(); FeatureDefinition GetOrNull(string name); + + IReadOnlyList GetGroups(); } -} \ No newline at end of file +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureGroupDto.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureGroupDto.cs new file mode 100644 index 0000000000..dea10fd298 --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureGroupDto.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; + +namespace Volo.Abp.FeatureManagement +{ + public class FeatureGroupDto + { + public string Name { get; set; } + + public string DisplayName { get; set; } + + public List Features { get; set; } + + public string GetNormalizedGroupName() + { + return Name.Replace(".", "_"); + } + } +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureListDto.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureListDto.cs deleted file mode 100644 index ee7bad8d5c..0000000000 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/FeatureListDto.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Collections.Generic; - -namespace Volo.Abp.FeatureManagement -{ - public class FeatureListDto - { - public List Features { get; set; } - } -} \ No newline at end of file diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/GetFeatureListResultDto.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/GetFeatureListResultDto.cs new file mode 100644 index 0000000000..86329598cc --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/GetFeatureListResultDto.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace Volo.Abp.FeatureManagement +{ + public class GetFeatureListResultDto + { + public List Groups { get; set; } + } +} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs index 2c337f1b2a..00c36b7f55 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/IFeatureAppService.cs @@ -6,7 +6,7 @@ namespace Volo.Abp.FeatureManagement { public interface IFeatureAppService : IApplicationService { - Task GetAsync([NotNull] string providerName, [NotNull] string providerKey); + Task GetAsync([NotNull] string providerName, [NotNull] string providerKey); Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdateFeaturesDto input); } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs index f0c310650d..dbe649e51f 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Options; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.Features; namespace Volo.Abp.FeatureManagement @@ -24,35 +25,49 @@ namespace Volo.Abp.FeatureManagement Options = options.Value; } - public virtual async Task GetAsync([NotNull] string providerName, [NotNull] string providerKey) + public virtual async Task GetAsync([NotNull] string providerName, [NotNull] string providerKey) { await CheckProviderPolicy(providerName); - var featureDefinitions = FeatureDefinitionManager.GetAll(); - var features = new List(); + var result = new GetFeatureListResultDto + { + Groups = new List() + }; - foreach (var featureDefinition in featureDefinitions) + foreach (var group in FeatureDefinitionManager.GetGroups()) { - var feature = await FeatureManager.GetOrNullWithProviderAsync(featureDefinition.Name, providerName, providerKey); - features.Add(new FeatureDto + var groupDto = new FeatureGroupDto + { + Name = group.Name, + DisplayName = group.DisplayName.Localize(StringLocalizerFactory), + Features = new List() + }; + + foreach (var featureDefinition in group.GetFeaturesWithChildren()) { - Name = featureDefinition.Name, - DisplayName = featureDefinition.DisplayName?.Localize(StringLocalizerFactory), - ValueType = featureDefinition.ValueType, - Description = featureDefinition.Description?.Localize(StringLocalizerFactory), - ParentName = featureDefinition.Parent?.Name, - Value = feature.Value, - Provider = new FeatureProviderDto + var feature = await FeatureManager.GetOrNullWithProviderAsync(featureDefinition.Name, providerName, providerKey); + groupDto.Features.Add(new FeatureDto { - Name = feature.Provider?.Name, - Key = feature.Provider?.Key - } - }); - } + Name = featureDefinition.Name, + DisplayName = featureDefinition.DisplayName?.Localize(StringLocalizerFactory), + ValueType = featureDefinition.ValueType, + Description = featureDefinition.Description?.Localize(StringLocalizerFactory), + ParentName = featureDefinition.Parent?.Name, + Value = feature.Value, + Provider = new FeatureProviderDto + { + Name = feature.Provider?.Name, + Key = feature.Provider?.Key + } + }); + } + + SetFeatureDepth(groupDto.Features, providerName, providerKey); - SetFeatureDepth(features, providerName, providerKey); + result.Groups.Add(groupDto); + } - return new FeatureListDto { Features = features }; + return result; } public virtual async Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdateFeaturesDto input) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs index 0ae78ed03f..cc00fb370b 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.HttpApi/Volo/Abp/FeatureManagement/FeaturesController.cs @@ -17,7 +17,7 @@ namespace Volo.Abp.FeatureManagement } [HttpGet] - public virtual Task GetAsync(string providerName, string providerKey) + public virtual Task GetAsync(string providerName, string providerKey) { return FeatureAppService.GetAsync(providerName, providerKey); } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml index f5adbf79d4..601926b193 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml @@ -4,7 +4,6 @@ @using Volo.Abp.FeatureManagement.Localization @using Volo.Abp.Validation.StringValues @using Volo.Abp.FeatureManagement.Web.Pages.FeatureManagement -@using Volo.Abp.Features @model FeatureManagementModal @inject IHtmlLocalizer L @{ @@ -13,53 +12,67 @@
    - @if (Model.FeatureListDto?.Features != null && Model.FeatureListDto.Features.Any()) + @if (Model.FeatureListResultDto != null && Model.FeatureListResultDto.Groups.Any()) { - - - @for (var i = 0; i < Model.FeatureListDto.Features.Count; i++) - { - var feature = Model.FeatureListDto.Features[i]; - var disabled = Model.IsDisabled(feature.Provider.Name); -
    + + + + @for (var i = 0; i < Model.FeatureListResultDto.Groups.Count; i++) + { + +

    @Model.FeatureListResultDto.Groups[i].DisplayName

    +
    +
    +
    + @for (var j = 0; j < Model.FeatureListResultDto.Groups[i].Features.Count; j++) + { + var feature = Model.FeatureListResultDto.Groups[i].Features[j]; + var disabled = Model.IsDisabled(feature.Provider.Name); +
    - @feature.DisplayName @(disabled ? $"({feature.Provider.Name})" : "") + @feature.DisplayName @(disabled ? $"({feature.Provider.Name})" : "") - - - @if (feature.ValueType is FreeTextStringValueType) - { - - - } - @if (feature.ValueType is SelectionStringValueType) - { - - + + @if (feature.ValueType is FreeTextStringValueType) + { + + + } + @if (feature.ValueType is SelectionStringValueType) + { + + + } + @if (feature.ValueType is ToggleStringValueType) + { + + + } +
    } - } - - } - @if (feature.ValueType is ToggleStringValueType) - { - - - } -
    - } +
    +
    + + } + +
    - + } else { @@ -69,4 +82,3 @@ }
    - diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs index e46d686e69..1464a1fc9b 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/FeatureManagementModal.cshtml.cs @@ -22,9 +22,9 @@ namespace Volo.Abp.FeatureManagement.Web.Pages.FeatureManagement public string ProviderKey { get; set; } [BindProperty] - public List Features { get; set; } + public List FeatureGroups { get; set; } - public FeatureListDto FeatureListDto { get; set; } + public GetFeatureListResultDto FeatureListResultDto { get; set; } protected IFeatureAppService FeatureAppService { get; } @@ -35,16 +35,20 @@ namespace Volo.Abp.FeatureManagement.Web.Pages.FeatureManagement FeatureAppService = featureAppService; } - public virtual async Task OnGetAsync() + public virtual async Task OnGetAsync() { - FeatureListDto = await FeatureAppService.GetAsync(ProviderName, ProviderKey); + ValidateModel(); + + FeatureListResultDto = await FeatureAppService.GetAsync(ProviderName, ProviderKey); + + return Page(); } public virtual async Task OnPostAsync() { var features = new UpdateFeaturesDto { - Features = Features.Select(f => new UpdateFeatureDto + Features = FeatureGroups.SelectMany(g => g.Features).Select(f => new UpdateFeatureDto { Name = f.Name, Value = f.Type == nameof(ToggleStringValueType) ? f.BoolValue.ToString() : f.Value @@ -68,6 +72,11 @@ namespace Volo.Abp.FeatureManagement.Web.Pages.FeatureManagement public string ProviderKey { get; set; } } + public class FeatureGroupViewModel + { + public List Features { get; set; } + } + public class FeatureViewModel { public string Name { get; set; } diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs index b257f873cd..2f904a46d2 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs @@ -41,7 +41,7 @@ namespace Volo.Abp.FeatureManagement TestEditionIds.Regular.ToString()); featureList.ShouldNotBeNull(); - featureList.Features.ShouldContain(feature => feature.Name == TestFeatureDefinitionProvider.SocialLogins); + featureList.Groups.SelectMany(g =>g .Features).ShouldContain(feature => feature.Name == TestFeatureDefinitionProvider.SocialLogins); } [Fact] @@ -63,7 +63,7 @@ namespace Volo.Abp.FeatureManagement }); (await _featureAppService.GetAsync(EditionFeatureValueProvider.ProviderName, - TestEditionIds.Regular.ToString())).Features.Any(x => + TestEditionIds.Regular.ToString())).Groups.SelectMany(g => g.Features).Any(x => x.Name == TestFeatureDefinitionProvider.SocialLogins && x.Value == false.ToString().ToLowerInvariant()) .ShouldBeTrue(); diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/StringValueJsonConverter_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/StringValueJsonConverter_Tests.cs index 528e0de5e8..1b7553b773 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/StringValueJsonConverter_Tests.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/StringValueJsonConverter_Tests.cs @@ -20,38 +20,46 @@ namespace Volo.Abp.FeatureManagement [Fact] public void Should_Serialize_And_Deserialize() { - var featureListDto = new FeatureListDto + var featureListDto = new GetFeatureListResultDto { - Features = new List + Groups = new List { - new FeatureDto + new FeatureGroupDto { - ValueType = new FreeTextStringValueType + Name = "MyGroup", + DisplayName = "MyGroup", + Features = new List { - Validator = new BooleanValueValidator() - } - }, - new FeatureDto - { - ValueType = new SelectionStringValueType - { - ItemSource = new StaticSelectionStringValueItemSource( - new LocalizableSelectionStringValueItem + new FeatureDto + { + ValueType = new FreeTextStringValueType { - Value = "TestValue", - DisplayText = new LocalizableStringInfo("TestResourceName", "TestName") - }), - Validator = new AlwaysValidValueValidator() - } - }, - new FeatureDto - { - ValueType = new ToggleStringValueType - { - Validator = new NumericValueValidator + Validator = new BooleanValueValidator() + } + }, + new FeatureDto { - MaxValue = 1000, - MinValue = 10 + ValueType = new SelectionStringValueType + { + ItemSource = new StaticSelectionStringValueItemSource( + new LocalizableSelectionStringValueItem + { + Value = "TestValue", + DisplayText = new LocalizableStringInfo("TestResourceName", "TestName") + }), + Validator = new AlwaysValidValueValidator() + } + }, + new FeatureDto + { + ValueType = new ToggleStringValueType + { + Validator = new NumericValueValidator + { + MaxValue = 1000, + MinValue = 10 + } + } } } } @@ -59,22 +67,22 @@ namespace Volo.Abp.FeatureManagement }; var serialized = _jsonSerializer.Serialize(featureListDto, indented: true); - var featureListDto2 = _jsonSerializer.Deserialize(serialized); + var featureListDto2 = _jsonSerializer.Deserialize(serialized); - featureListDto2.Features[0].ValueType.ShouldBeOfType(); - featureListDto2.Features[0].ValueType.Validator.ShouldBeOfType(); + featureListDto2.Groups[0].Features[0].ValueType.ShouldBeOfType(); + featureListDto2.Groups[0].Features[0].ValueType.Validator.ShouldBeOfType(); - featureListDto2.Features[1].ValueType.ShouldBeOfType(); - featureListDto2.Features[1].ValueType.Validator.ShouldBeOfType(); - featureListDto2.Features[1].ValueType.As().ItemSource.Items.ShouldBeOfType(); - featureListDto2.Features[1].ValueType.As().ItemSource.Items.ShouldContain(x => + featureListDto2.Groups[0].Features[1].ValueType.ShouldBeOfType(); + featureListDto2.Groups[0].Features[1].ValueType.Validator.ShouldBeOfType(); + featureListDto2.Groups[0].Features[1].ValueType.As().ItemSource.Items.ShouldBeOfType(); + featureListDto2.Groups[0].Features[1].ValueType.As().ItemSource.Items.ShouldContain(x => x.Value == "TestValue" && x.DisplayText.ResourceName == "TestResourceName" && x.DisplayText.Name == "TestName"); - featureListDto2.Features[2].ValueType.ShouldBeOfType(); - featureListDto2.Features[2].ValueType.Validator.ShouldBeOfType(); - featureListDto2.Features[2].ValueType.Validator.As().MaxValue.ShouldBe(1000); - featureListDto2.Features[2].ValueType.Validator.As().MinValue.ShouldBe(10); + featureListDto2.Groups[0].Features[2].ValueType.ShouldBeOfType(); + featureListDto2.Groups[0].Features[2].ValueType.Validator.ShouldBeOfType(); + featureListDto2.Groups[0].Features[2].ValueType.Validator.As().MaxValue.ShouldBe(1000); + featureListDto2.Groups[0].Features[2].ValueType.Validator.As().MinValue.ShouldBe(10); } } } From 2104c86eab18ce32a0f74ecd6d3356f4d21e9c3b Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 8 Sep 2020 11:07:37 +0300 Subject: [PATCH 335/474] chore: remove console.log --- .../packages/core/src/lib/states/replaceable-components.state.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts b/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts index e5caa9f95b..61a5fef5f6 100644 --- a/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts +++ b/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts @@ -56,7 +56,6 @@ export class ReplaceableComponentsState { replaceableComponents, }); - console.log(this.service); this.service.add(payload, reload); } } From 8fdbab9576574b37b3a112e965c91fe0fe64da09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 8 Sep 2020 11:09:28 +0300 Subject: [PATCH 336/474] Completed the Features document. --- docs/en/Features.md | 67 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 3 deletions(-) diff --git a/docs/en/Features.md b/docs/en/Features.md index 05712eb803..1ec35f730a 100644 --- a/docs/en/Features.md +++ b/docs/en/Features.md @@ -176,6 +176,8 @@ namespace FeaturesDemo * First feature, named `MyApp.PdfReporting`, is a `boolean` feature with `false` as the default value. * Second feature, named `MyApp.MaxProductCount`, is a numeric feature with `10` as the default value. +Default value is used if there is no other value set for the current user/tenant. + ### Other Feature Properties While these minimal definitions are enough to make the feature system working, you can specify the **optional properties** for the features; @@ -376,11 +378,70 @@ public class MyService : ITransientDependency ## Advanced Topics -TODO - ### Feature Value Providers -TODO +Feature system is extensible. Any class derived from `FeatureValueProvider` (or implements `IFeatureValueProvider`) can contribute to the feature system. A value provider is responsible to **obtain the current value** of a given feature. + +Feature value providers are **executed one by one**. If one of them return a non-null value, then this feature value is used and the other providers are not executed. + +There are three pre-defined value providers, executed by the given order: + +* `TenantFeatureValueProvider` tries to get if the feature value is explicitly set for the **current tenant**. +* `EditionFeatureValueProvider` tries to get the feature value for the current edition. Edition Id is obtained from the current principal identity (`ICurrentPrincipalAccessor`) with the claim name `editionid` (a constant defined as`AbpClaimTypes.EditionId`). Editions are not implemented for the [tenant management](Modules/Tenant-Management.md) module. You can implement it yourself or consider to use the [SaaS module](https://commercial.abp.io/modules/Volo.Saas) of the ABP Commercial. +* `DefaultValueFeatureValueProvider` gets the default value of the feature. + +You can write your own provider by inheriting the `FeatureValueProvider`. + +**Example: Enable all features for a user with "SystemAdmin" as a "User_Type" claim value** + +```csharp +using System.Threading.Tasks; +using Volo.Abp.Features; +using Volo.Abp.Security.Claims; +using Volo.Abp.Validation.StringValues; + +namespace FeaturesDemo +{ + public class SystemAdminFeatureValueProvider : FeatureValueProvider + { + public override string Name => "SA"; + + private readonly ICurrentPrincipalAccessor _currentPrincipalAccessor; + + public SystemAdminFeatureValueProvider( + IFeatureStore featureStore, + ICurrentPrincipalAccessor currentPrincipalAccessor) + : base(featureStore) + { + _currentPrincipalAccessor = currentPrincipalAccessor; + } + + public override Task GetOrNullAsync(FeatureDefinition feature) + { + if (feature.ValueType is ToggleStringValueType && + _currentPrincipalAccessor.Principal?.FindFirst("User_Type")?.Value == "SystemAdmin") + { + return Task.FromResult("true"); + } + + return null; + } + } +} +``` + +If a provider returns `null`, then the next provider is executed. + +Once a provider is defined, it should be added to the `AbpFeatureOptions` as shown below: + +```csharp +Configure(options => +{ + options.ValueProviders.Add(); +}); +``` + +Use this code inside the `ConfigureServices` of your [module](Module-Development-Basics.md) class. ### Feature Store From 311287cce9b522f326e16e6138b378b020884251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 8 Sep 2020 11:14:48 +0300 Subject: [PATCH 337/474] Added Features to the nav menu --- docs/en/Multi-Tenancy.md | 3 +++ docs/en/docs-nav.json | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/docs/en/Multi-Tenancy.md b/docs/en/Multi-Tenancy.md index 901a5c5cff..5138c9de04 100644 --- a/docs/en/Multi-Tenancy.md +++ b/docs/en/Multi-Tenancy.md @@ -369,3 +369,6 @@ options.AddDomainTenantResolver("{0}.mydomain.com"); options.AddDomainTenantResolver("{0}.com"); ```` +## See Also + +* [Features](Features.md) \ No newline at end of file diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index dc872a2279..654bc720e2 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -170,6 +170,10 @@ "text": "Settings", "path": "Settings.md" }, + { + "text": "Features", + "path": "Features.md" + }, { "text": "Data Filtering", "path": "Data-Filtering.md" From 89df9fdde0a3f5a33ae6c4c01001ad4b4469c42f Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 8 Sep 2020 12:05:54 +0300 Subject: [PATCH 338/474] test: fix testing errors --- ...laceable-route-container.component.spec.ts | 18 +++++++-------- .../replaceable-template.directive.spec.ts | 22 +++++++++++-------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/tests/replaceable-route-container.component.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/replaceable-route-container.component.spec.ts index f5874bca46..16973c17c8 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/replaceable-route-container.component.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/replaceable-route-container.component.spec.ts @@ -5,6 +5,7 @@ import { Store } from '@ngxs/store'; import { of, Subject, BehaviorSubject } from 'rxjs'; import { ReplaceableRouteContainerComponent } from '../components/replaceable-route-container.component'; import { ReplaceableComponentsState } from '../states'; +import { ReplaceableComponentsService } from '../services/replaceable-components.service'; @Component({ selector: 'abp-external-component', @@ -30,16 +31,15 @@ const activatedRouteMock = { }; describe('ReplaceableRouteContainerComponent', () => { - const selectResponse = new BehaviorSubject(undefined); - const mockSelect = jest.fn(() => selectResponse); - let spectator: SpectatorHost; + const get$Res = new BehaviorSubject(undefined); + const replaceableComponents = spectator.inject(ReplaceableComponentsService); + const spy = jest.spyOn(replaceableComponents, 'get$'); + spy.mockReturnValue(get$Res as any); + const createHost = createHostFactory({ component: ReplaceableRouteContainerComponent, - providers: [ - { provide: ActivatedRoute, useValue: activatedRouteMock }, - { provide: Store, useValue: { select: mockSelect } }, - ], + providers: [{ provide: ActivatedRoute, useValue: activatedRouteMock }], declarations: [ExternalComponent, DefaultComponent], entryComponents: [DefaultComponent, ExternalComponent], }); @@ -55,11 +55,11 @@ describe('ReplaceableRouteContainerComponent', () => { }); it("should display the external component if it's available in store.", () => { - selectResponse.next({ component: ExternalComponent }); + get$Res.next({ component: ExternalComponent }); spectator.detectChanges(); expect(spectator.query('p')).toHaveText('external'); - selectResponse.next({ component: null }); + get$Res.next({ component: null }); spectator.detectChanges(); expect(spectator.query('p')).toHaveText('default'); }); diff --git a/npm/ng-packs/packages/core/src/lib/tests/replaceable-template.directive.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/replaceable-template.directive.spec.ts index 613508f56b..2923dd473b 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/replaceable-template.directive.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/replaceable-template.directive.spec.ts @@ -4,6 +4,8 @@ import { Store } from '@ngxs/store'; import { Subject } from 'rxjs'; import { ReplaceableTemplateDirective } from '../directives'; import { ReplaceableComponents } from '../models'; +import { Router } from '@angular/router'; +import { ReplaceableComponentsService } from '../services/replaceable-components.service'; @Component({ selector: 'abp-default-component', @@ -48,15 +50,17 @@ class ExternalComponent { } describe('ReplaceableTemplateDirective', () => { - const selectResponse = new Subject(); - const mockSelect = jest.fn(() => selectResponse); - let spectator: SpectatorDirective; + const get$Res = new Subject(); + + const replaceableComponents = spectator.inject(ReplaceableComponentsService); + const spy = jest.spyOn(replaceableComponents, 'get$'); + spy.mockReturnValue(get$Res as any); const createDirective = createDirectiveFactory({ directive: ReplaceableTemplateDirective, - providers: [{ provide: Store, useValue: { select: mockSelect } }], declarations: [DefaultComponent, ExternalComponent], entryComponents: [ExternalComponent], + mocks: [Router], }); describe('without external component', () => { @@ -72,7 +76,7 @@ describe('ReplaceableTemplateDirective', () => { `, { hostProps: { oneWay: { label: 'Test' }, twoWay: false, twoWayChange, someOutput } }, ); - selectResponse.next(undefined); + get$Res.next(undefined); const component = spectator.query(DefaultComponent); spectator.directive.context.initTemplate(component); spectator.detectChanges(); @@ -114,7 +118,7 @@ describe('ReplaceableTemplateDirective', () => { `, { hostProps: { oneWay: { label: 'Test' }, twoWay: false, twoWayChange, someOutput } }, ); - selectResponse.next({ component: ExternalComponent, key: 'TestModule.TestComponent' }); + get$Res.next({ component: ExternalComponent, key: 'TestModule.TestComponent' }); }); afterEach(() => twoWayChange.mockClear()); @@ -150,7 +154,7 @@ describe('ReplaceableTemplateDirective', () => { const externalComponent = spectator.query(ExternalComponent); spectator.setHostInput({ oneWay: 'test' }); externalComponent.data.inputs.twoWay = true; - selectResponse.next({ component: null, key: 'TestModule.TestComponent' }); + get$Res.next({ component: null, key: 'TestModule.TestComponent' }); spectator.detectChanges(); const component = spectator.query(DefaultComponent); spectator.directive.context.initTemplate(component); @@ -161,14 +165,14 @@ describe('ReplaceableTemplateDirective', () => { }); it('should reset default component subscriptions', () => { - selectResponse.next({ component: null, key: 'TestModule.TestComponent' }); + get$Res.next({ component: null, key: 'TestModule.TestComponent' }); const component = spectator.query(DefaultComponent); spectator.directive.context.initTemplate(component); spectator.detectChanges(); const unsubscribe = jest.fn(() => {}); spectator.directive.defaultComponentSubscriptions.twoWayChange.unsubscribe = unsubscribe; - selectResponse.next({ component: ExternalComponent, key: 'TestModule.TestComponent' }); + get$Res.next({ component: ExternalComponent, key: 'TestModule.TestComponent' }); expect(unsubscribe).toHaveBeenCalled(); }); }); From f5b6ef2388250eb4c742254ff9b0b0331299702d Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 8 Sep 2020 18:06:58 +0800 Subject: [PATCH 339/474] add paged --- .../Volo/Abp/Identity/IOrganizationUnitRepository.cs | 8 ++++++-- .../EfCoreOrganizationUnitRepository.cs | 10 ++++++++-- .../MongoDB/MongoOrganizationUnitRepository.cs | 10 ++++++++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs index 81474425db..4d5bf7d060 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs @@ -57,8 +57,10 @@ namespace Volo.Abp.Identity Task> GetUnaddedRolesAsync( OrganizationUnit organizationUnit, - string filter = null, string sorting = null, + int maxResultCount = int.MaxValue, + int skipCount = 0, + string filter = null, bool includeDetails = false, CancellationToken cancellationToken = default ); @@ -81,8 +83,10 @@ namespace Volo.Abp.Identity Task> GetUnaddedUsersAsync( OrganizationUnit organizationUnit, - string filter = null, string sorting = null, + int maxResultCount = int.MaxValue, + int skipCount = 0, + string filter = null, bool includeDetails = false, CancellationToken cancellationToken = default ); diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs index d50745ab1d..ebfa9b8ebb 100644 --- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs @@ -114,8 +114,10 @@ namespace Volo.Abp.Identity.EntityFrameworkCore public virtual async Task> GetUnaddedRolesAsync( OrganizationUnit organizationUnit, - string filter = null, string sorting = null, + int maxResultCount = int.MaxValue, + int skipCount = 0, + string filter = null, bool includeDetails = false, CancellationToken cancellationToken = default) { @@ -126,6 +128,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore .IncludeDetails(includeDetails) .WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter)) .OrderBy(sorting ?? nameof(IdentityRole.Name)) + .PageBy(skipCount, maxResultCount) .ToListAsync(cancellationToken); } @@ -157,8 +160,10 @@ namespace Volo.Abp.Identity.EntityFrameworkCore public virtual async Task> GetUnaddedUsersAsync( OrganizationUnit organizationUnit, - string filter = null, string sorting = null, + int maxResultCount = int.MaxValue, + int skipCount = 0, + string filter = null, bool includeDetails = false, CancellationToken cancellationToken = default) { @@ -181,6 +186,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore return await query .IncludeDetails(includeDetails) .OrderBy(sorting ?? nameof(IdentityUser.Name)) + .PageBy(skipCount, maxResultCount) .ToListAsync(cancellationToken); } diff --git a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs index 2823c99a6c..2b28a2e3a1 100644 --- a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs @@ -109,8 +109,10 @@ namespace Volo.Abp.Identity.MongoDB public async Task> GetUnaddedRolesAsync( OrganizationUnit organizationUnit, - string filter = null, string sorting = null, + int maxResultCount = int.MaxValue, + int skipCount = 0, + string filter = null, bool includeDetails = false, CancellationToken cancellationToken = default) { @@ -120,6 +122,7 @@ namespace Volo.Abp.Identity.MongoDB .WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter)) .OrderBy(sorting ?? nameof(IdentityRole.Name)) .As>() + .PageBy>(skipCount, maxResultCount) .ToListAsync(cancellationToken); } @@ -153,8 +156,10 @@ namespace Volo.Abp.Identity.MongoDB public async Task> GetUnaddedUsersAsync( OrganizationUnit organizationUnit, - string filter = null, string sorting = null, + int maxResultCount = int.MaxValue, + int skipCount = 0, + string filter = null, bool includeDetails = false, CancellationToken cancellationToken = default) { @@ -169,6 +174,7 @@ namespace Volo.Abp.Identity.MongoDB ) .OrderBy(sorting ?? nameof(IdentityUser.UserName)) .As>() + .PageBy>(skipCount, maxResultCount) .ToListAsync(GetCancellationToken(cancellationToken)); } From 59a6c630be8f9de8cbadbe68f8c328fa55de37d8 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 8 Sep 2020 18:33:59 +0800 Subject: [PATCH 340/474] Add get count method --- .../Identity/IOrganizationUnitRepository.cs | 12 +++++++ .../EfCoreOrganizationUnitRepository.cs | 31 +++++++++++++++++++ .../MongoOrganizationUnitRepository.cs | 29 +++++++++++++++++ .../OrganizationUnitRepository_Tests.cs | 17 ++++++++++ 4 files changed, 89 insertions(+) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs index 4d5bf7d060..bf39874e00 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs @@ -65,6 +65,12 @@ namespace Volo.Abp.Identity CancellationToken cancellationToken = default ); + Task GetUnaddedRolesCountAsync( + OrganizationUnit organizationUnit, + string filter = null, + CancellationToken cancellationToken = default + ); + Task> GetMembersAsync( OrganizationUnit organizationUnit, string sorting = null, @@ -91,6 +97,12 @@ namespace Volo.Abp.Identity CancellationToken cancellationToken = default ); + Task GetUnaddedUsersCountAsync( + OrganizationUnit organizationUnit, + string filter = null, + CancellationToken cancellationToken = default + ); + Task RemoveAllRolesAsync( OrganizationUnit organizationUnit, CancellationToken cancellationToken = default diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs index ebfa9b8ebb..59fbd9518e 100644 --- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs @@ -132,6 +132,19 @@ namespace Volo.Abp.Identity.EntityFrameworkCore .ToListAsync(cancellationToken); } + public virtual async Task GetUnaddedRolesCountAsync( + OrganizationUnit organizationUnit, + string filter = null, + CancellationToken cancellationToken = default) + { + var roleIds = organizationUnit.Roles.Select(r => r.RoleId).ToList(); + + return await DbContext.Roles + .Where(r => !roleIds.Contains(r.Id)) + .WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter)) + .CountAsync(cancellationToken); + } + public virtual async Task> GetMembersAsync( OrganizationUnit organizationUnit, string sorting = null, @@ -190,6 +203,24 @@ namespace Volo.Abp.Identity.EntityFrameworkCore .ToListAsync(cancellationToken); } + public virtual async Task GetUnaddedUsersCountAsync( + OrganizationUnit organizationUnit, + string filter = null, + CancellationToken cancellationToken = default) + { + var userIdsInOrganizationUnit = DbContext.Set() + .Where(uou => uou.OrganizationUnitId == organizationUnit.Id) + .Select(uou => uou.UserId); + + return await DbContext.Users + .Where(u => !userIdsInOrganizationUnit.Contains(u.Id)) + .WhereIf(!filter.IsNullOrWhiteSpace(), u => + u.UserName.Contains(filter) || + u.Email.Contains(filter) || + (u.PhoneNumber != null && u.PhoneNumber.Contains(filter))) + .CountAsync(cancellationToken); + } + public override IQueryable WithDetails() { return GetQueryable().IncludeDetails(); diff --git a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs index 2b28a2e3a1..10ae4cd038 100644 --- a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs @@ -126,6 +126,19 @@ namespace Volo.Abp.Identity.MongoDB .ToListAsync(cancellationToken); } + public async Task GetUnaddedRolesCountAsync( + OrganizationUnit organizationUnit, + string filter = null, + CancellationToken cancellationToken = default) + { + var roleIds = organizationUnit.Roles.Select(r => r.RoleId).ToArray(); + return await DbContext.Roles.AsQueryable() + .Where(r => !roleIds.Contains(r.Id)) + .WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter)) + .As>() + .CountAsync(cancellationToken); + } + public virtual async Task> GetMembersAsync( OrganizationUnit organizationUnit, string sorting = null, @@ -178,6 +191,22 @@ namespace Volo.Abp.Identity.MongoDB .ToListAsync(GetCancellationToken(cancellationToken)); } + public async Task GetUnaddedUsersCountAsync(OrganizationUnit organizationUnit, string filter = null, + CancellationToken cancellationToken = default) + { + return await DbContext.Users.AsQueryable() + .Where(u => !u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id)) + .WhereIf>( + !filter.IsNullOrWhiteSpace(), + u => + u.UserName.Contains(filter) || + u.Email.Contains(filter) || + (u.PhoneNumber != null && u.PhoneNumber.Contains(filter)) + ) + .As>() + .CountAsync(GetCancellationToken(cancellationToken)); + } + public virtual Task RemoveAllRolesAsync(OrganizationUnit organizationUnit, CancellationToken cancellationToken = default) { organizationUnit.Roles.Clear(); diff --git a/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs b/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs index 97544cd1e9..a671ba3284 100644 --- a/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs @@ -305,5 +305,22 @@ namespace Volo.Abp.Identity unaddedRoles.ShouldNotContain(u => u.Name == "moderator"); unaddedRoles.ShouldContain(u => u.Name.Contains("admin")); } + + [Fact] + public async Task GetUnaddedUsersCountOfOrganizationUnitAsync() + { + var ou = await _organizationUnitRepository.GetAsync("OU111", true); + var count = await _organizationUnitRepository.GetUnaddedUsersCountAsync(ou); + count.ShouldBeGreaterThan(0); + + } + + [Fact] + public async Task GetUnaddedRolesCountOfOrganizationUnitAsync() + { + var ou = await _organizationUnitRepository.GetAsync("OU111", true); + var count = await _organizationUnitRepository.GetUnaddedRolesCountAsync(ou); + count.ShouldBeGreaterThan(0); + } } } From 431d02f177153c79ae6330a45c8c27de3d95a1fa Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 8 Sep 2020 14:26:45 +0300 Subject: [PATCH 341/474] chore: add deprecation message logger to replaceable-components.state --- .../lib/states/replaceable-components.state.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts b/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts index 61a5fef5f6..8b861f144e 100644 --- a/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts +++ b/npm/ng-packs/packages/core/src/lib/states/replaceable-components.state.ts @@ -1,10 +1,19 @@ -import { Injectable } from '@angular/core'; +import { Injectable, isDevMode } from '@angular/core'; import { Action, createSelector, Selector, State, StateContext } from '@ngxs/store'; import snq from 'snq'; import { AddReplaceableComponent } from '../actions/replaceable-components.actions'; import { ReplaceableComponents } from '../models/replaceable-components'; import { ReplaceableComponentsService } from '../services/replaceable-components.service'; +function logDeprecationMsg() { + if (isDevMode()) { + console.warn(` + ReplacableComponentsState has been deprecated. Use ReplaceableComponentsService instead. + See the doc https://docs.abp.io/en/abp/latest/UI/Angular/Component-Replacement + `); + } +} + // tslint:disable: max-line-length /** * @deprecated To be deleted in v4.0. Use ReplaceableComponentsService instead. See the doc (https://docs.abp.io/en/abp/latest/UI/Angular/Component-Replacement) @@ -19,6 +28,7 @@ export class ReplaceableComponentsState { static getAll({ replaceableComponents, }: ReplaceableComponents.State): ReplaceableComponents.ReplaceableComponent[] { + logDeprecationMsg(); return replaceableComponents || []; } @@ -26,6 +36,7 @@ export class ReplaceableComponentsState { const selector = createSelector( [ReplaceableComponentsState], (state: ReplaceableComponents.State): ReplaceableComponents.ReplaceableComponent => { + logDeprecationMsg(); return snq(() => state.replaceableComponents.find(component => component.key === key)); }, ); @@ -40,6 +51,8 @@ export class ReplaceableComponentsState { { getState, patchState }: StateContext, { payload, reload }: AddReplaceableComponent, ) { + logDeprecationMsg(); + let { replaceableComponents } = getState(); const index = snq( From d43dc102c76e0f34d2ce2341e9774309ff004c01 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 8 Sep 2020 15:30:40 +0300 Subject: [PATCH 342/474] Update Default.cshtml --- .../Pages/CmsKit/Shared/Components/Commenting/Default.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml index ab7fc9805b..f988dd29e7 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml @@ -175,7 +175,7 @@
    } - @if (comment.Replies.Count >= 5) + @if (comment.Replies.Count >= 3) {
    @if (CurrentUser.IsAuthenticated) From 9b44c00c1afd16b1499fa3d196858416bbc5987f Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 8 Sep 2020 21:27:58 +0800 Subject: [PATCH 343/474] Use standard name as abp claim type. --- .../Volo/Abp/Security/Claims/AbpClaimTypes.cs | 54 +++++++++---------- .../Authorization/AuthorizationTestBase.cs | 2 +- 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs index a797b360ee..e829ecddf3 100644 --- a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs +++ b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs @@ -8,71 +8,69 @@ namespace Volo.Abp.Security.Claims /// public static class AbpClaimTypes { - public const string ClaimTypeNamespace = "abp_"; - /// - /// Default: abp_username + /// Default: /// - public static string UserName { get; set; } = ClaimTypeNamespace + "username"; + public static string UserName { get; set; } = ClaimTypes.Name; /// - /// Default: abp_name + /// Default: /// - public static string Name { get; set; } = ClaimTypeNamespace + "name"; + public static string Name { get; set; } = ClaimTypes.GivenName; /// - /// Default: abp_surname + /// Default: /// - public static string SurName { get; set; } = ClaimTypeNamespace + "surname"; + public static string SurName { get; set; } = ClaimTypes.Surname; /// - /// Default: abp_user_id + /// Default: security_stamp /// - public static string UserId { get; set; } = ClaimTypeNamespace + "user_id"; + public static string SecurityStamp { get; set; } = "security_stamp"; /// - /// Default: abp_role + /// Default: /// - public static string Role { get; set; } = ClaimTypeNamespace + "role"; + public static string UserId { get; set; } = ClaimTypes.NameIdentifier; /// - /// Default: abp_security_stamp + /// Default: /// - public static string SecurityStamp { get; set; } = ClaimTypeNamespace + "security_stamp"; + public static string Role { get; set; } = ClaimTypes.Role; /// - /// Default: abp_email + /// Default: /// - public static string Email { get; set; } = ClaimTypeNamespace + "email"; + public static string Email { get; set; } = ClaimTypes.Email; /// - /// Default: abp_email_verified + /// Default: "email_verified". /// - public static string EmailVerified { get; set; } = ClaimTypeNamespace + "email_verified"; + public static string EmailVerified { get; set; } = "email_verified"; /// - /// Default: abp_phone_number + /// Default: "phone_number". /// - public static string PhoneNumber { get; set; } = ClaimTypeNamespace + "phone_number"; + public static string PhoneNumber { get; set; } = "phone_number"; /// - /// Default: abp_phone_number_verified + /// Default: "phone_number_verified". /// - public static string PhoneNumberVerified { get; set; } = ClaimTypeNamespace + "phone_number_verified"; + public static string PhoneNumberVerified { get; set; } = "phone_number_verified"; /// - /// Default: abp_tenant_id + /// Default: "tenantid". /// - public static string TenantId { get; set; } = ClaimTypeNamespace + "tenant_id"; + public static string TenantId { get; set; } = "tenant_id"; /// - /// Default: abp_edition_id + /// Default: "editionid". /// - public static string EditionId { get; set; } = ClaimTypeNamespace + "edition_id"; + public static string EditionId { get; set; } = "edition_id"; /// - /// Default: abp_client_id + /// Default: "client_id". /// - public static string ClientId { get; set; } = ClaimTypeNamespace + "client_id"; + public static string ClientId { get; set; } = "client_id"; } } diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AuthorizationTestBase.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AuthorizationTestBase.cs index 89f45600f4..5cf9976e46 100644 --- a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AuthorizationTestBase.cs +++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AuthorizationTestBase.cs @@ -23,7 +23,7 @@ namespace Volo.Abp.Authorization new Claim(AbpClaimTypes.Role, "MyRole") }; - var identity = new ClaimsIdentity(claims,null, AbpClaimTypes.UserName, AbpClaimTypes.Role); + var identity = new ClaimsIdentity(claims); var claimsPrincipal = new ClaimsPrincipal(identity); var principalAccessor = Substitute.For(); principalAccessor.Principal.Returns(ci => claimsPrincipal); From 69f6caca9171604549da09235883784d2a23f563 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 8 Sep 2020 21:29:32 +0800 Subject: [PATCH 344/474] Update AbpClaimTypes.cs --- .../Volo/Abp/Security/Claims/AbpClaimTypes.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs index e829ecddf3..6d6672ec2b 100644 --- a/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs +++ b/framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs @@ -59,12 +59,12 @@ namespace Volo.Abp.Security.Claims public static string PhoneNumberVerified { get; set; } = "phone_number_verified"; /// - /// Default: "tenantid". + /// Default: "tenant_id". /// public static string TenantId { get; set; } = "tenant_id"; /// - /// Default: "editionid". + /// Default: "edition_id". /// public static string EditionId { get; set; } = "edition_id"; From 835e5466c0e62377d948ed9deece0be00bc46e36 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Tue, 8 Sep 2020 22:20:24 +0800 Subject: [PATCH 345/474] Refactor --- .../Volo/Abp/Features/AbpFeaturesModule.cs | 1 - .../Abp/Features/HostFeatureValueProvider.cs | 30 ---------- .../FeatureManagement/FeatureAppService.cs | 33 +++++++---- .../Localization/Domain/en.json | 1 - .../Localization/Domain/tr.json | 1 - .../Localization/Domain/zh-Hans.json | 1 - .../Localization/Domain/zh-Hant.json | 1 - .../AbpFeatureManagementDomainModule.cs | 3 - .../HostFeatureManagementProvider.cs | 59 ------------------- .../Pages/TenantManagement/Tenants/Index.js | 2 +- 10 files changed, 21 insertions(+), 111 deletions(-) delete mode 100644 framework/src/Volo.Abp.Features/Volo/Abp/Features/HostFeatureValueProvider.cs delete mode 100644 modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/HostFeatureManagementProvider.cs diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs index 7db32231e0..f30017feed 100644 --- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs @@ -26,7 +26,6 @@ namespace Volo.Abp.Features context.Services.Configure(options => { options.ValueProviders.Add(); - options.ValueProviders.Add(); options.ValueProviders.Add(); options.ValueProviders.Add(); }); diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/HostFeatureValueProvider.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/HostFeatureValueProvider.cs deleted file mode 100644 index d895813e6f..0000000000 --- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/HostFeatureValueProvider.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.Threading.Tasks; -using Volo.Abp.MultiTenancy; - -namespace Volo.Abp.Features -{ - public class HostFeatureValueProvider : FeatureValueProvider - { - public const string ProviderName = "H"; - - public override string Name => ProviderName; - - protected ICurrentTenant CurrentTenant { get; } - - public HostFeatureValueProvider(IFeatureStore featureStore, ICurrentTenant currentTenant) - : base(featureStore) - { - CurrentTenant = currentTenant; - } - - public override async Task GetOrNullAsync(FeatureDefinition feature) - { - if (CurrentTenant.Id.HasValue || !feature.IsAvailableToHost) - { - return null; - } - - return await FeatureStore.GetOrNullAsync(feature.Name, Name, null); - } - } -} diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs index 5c19df8751..6f0fe4815e 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs @@ -28,7 +28,7 @@ namespace Volo.Abp.FeatureManagement public virtual async Task GetAsync([NotNull] string providerName, string providerKey) { - await CheckProviderPolicy(providerName); + await CheckProviderPolicy(providerName, providerKey); var result = new GetFeatureListResultDto { @@ -46,7 +46,10 @@ namespace Volo.Abp.FeatureManagement foreach (var featureDefinition in group.GetFeaturesWithChildren()) { - if (providerName == HostFeatureValueProvider.ProviderName && !featureDefinition.IsAvailableToHost) + if (providerName == TenantFeatureValueProvider.ProviderName && + CurrentTenant.Id == null && + providerKey == null && + !featureDefinition.IsAvailableToHost) { continue; } @@ -78,16 +81,10 @@ namespace Volo.Abp.FeatureManagement public virtual async Task UpdateAsync([NotNull] string providerName, string providerKey, UpdateFeaturesDto input) { - await CheckProviderPolicy(providerName); + await CheckProviderPolicy(providerName, providerKey); foreach (var feature in input.Features) { - var featureDefinition = FeatureDefinitionManager.GetOrNull(feature.Name); - if (featureDefinition == null || (providerName == HostFeatureValueProvider.ProviderName && !featureDefinition.IsAvailableToHost)) - { - throw new UserFriendlyException(L["FeatureNotAvailable"]); - } - await FeatureManager.SetAsync(feature.Name, feature.Value, providerName, providerKey); } } @@ -105,12 +102,22 @@ namespace Volo.Abp.FeatureManagement } } - protected virtual async Task CheckProviderPolicy(string providerName) + protected virtual async Task CheckProviderPolicy(string providerName, string providerKey) { - var policyName = Options.ProviderPolicies.GetOrDefault(providerName); - if (policyName.IsNullOrEmpty()) + string policyName; + if (providerName == TenantFeatureValueProvider.ProviderName) { - throw new AbpException($"No policy defined to get/set permissions for the provider '{policyName}'. Use {nameof(FeatureManagementOptions)} to map the policy."); + policyName = CurrentTenant.Id == null && providerKey == null ? + "FeatureManagement.ManageHostFeatures" : + "AbpTenantManagement.Tenants.ManageFeatures"; + } + else + { + policyName = Options.ProviderPolicies.GetOrDefault(providerName); + if (policyName.IsNullOrEmpty()) + { + throw new AbpException($"No policy defined to get/set permissions for the provider '{policyName}'. Use {nameof(FeatureManagementOptions)} to map the policy."); + } } await AuthorizationService.CheckAsync(policyName); diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/en.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/en.json index 6e17e8fc48..26f5dc736b 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/en.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/en.json @@ -3,7 +3,6 @@ "texts": { "Features": "Features", "NoFeatureFoundMessage": "There isn't any available feature.", - "FeatureNotAvailable": "Feature not available.", "Permission:FeatureManagement": "Feature management", "Permission:FeatureManagement.ManageHostFeatures": "Manage Host features" } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json index 285b4143cf..8233674933 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/tr.json @@ -3,7 +3,6 @@ "texts": { "Features": "Özellikler", "NoFeatureFoundMessage": "Hiç özellik yok.", - "FeatureNotAvailable": "Özellik bulunamadı.", "Permission:FeatureManagement": "Özellik yönetimi", "Permission:FeatureManagement.ManageHostFeatures": "Host özelliklerini düzenle" } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json index 2ecdb3997b..9737a9a59c 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json @@ -3,7 +3,6 @@ "texts": { "Features": "功能", "NoFeatureFoundMessage": "没有可用的功能.", - "FeatureNotAvailable": "功能不可用.", "Permission:FeatureManagement": "特性管理", "Permission:FeatureManagement.ManageHostFeatures": "管理Host特性" } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hant.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hant.json index 6a8ccd099b..7d68fd5bc2 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hant.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hant.json @@ -3,7 +3,6 @@ "texts": { "Features": "功能", "NoFeatureFoundMessage": "沒有可用的功能.", - "FeatureNotAvailable": "功能不可用.", "Permission:FeatureManagement": "功能管理", "Permission:FeatureManagement.ManageHostFeatures": "管理Host功能" } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs index b9992309dd..34a0e198c7 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs @@ -18,13 +18,10 @@ namespace Volo.Abp.FeatureManagement Configure(options => { options.Providers.Add(); - options.Providers.Add(); - options.ProviderPolicies[HostFeatureValueProvider.ProviderName] = "FeatureManagement.ManageHostFeatures"; options.Providers.Add(); //TODO: Should be moved to the Tenant Management module options.Providers.Add(); - options.ProviderPolicies[TenantFeatureValueProvider.ProviderName] = "AbpTenantManagement.Tenants.ManageFeatures"; }); Configure(options => diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/HostFeatureManagementProvider.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/HostFeatureManagementProvider.cs deleted file mode 100644 index d40d2dfdec..0000000000 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/HostFeatureManagementProvider.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Features; -using Volo.Abp.MultiTenancy; - -namespace Volo.Abp.FeatureManagement -{ - public class HostFeatureManagementProvider : FeatureManagementProvider, ITransientDependency - { - public override string Name => HostFeatureValueProvider.ProviderName; - - protected ICurrentTenant CurrentTenant { get; } - - public HostFeatureManagementProvider( - IFeatureManagementStore store, - ICurrentTenant currentTenant) - : base(store) - { - CurrentTenant = currentTenant; - } - - public override async Task GetOrNullAsync(FeatureDefinition feature, string providerKey) - { - if (IsHostSide(feature)) - { - return await Store.GetOrNullAsync(feature.Name, Name, NormalizeProviderKey(providerKey)); - } - - return null; - } - - public override async Task SetAsync(FeatureDefinition feature, string value, string providerKey) - { - if (IsHostSide(feature)) - { - await Store.SetAsync(feature.Name, value, Name, NormalizeProviderKey(providerKey)); - } - } - - public override async Task ClearAsync(FeatureDefinition feature, string providerKey) - { - if (IsHostSide(feature)) - { - await Store.DeleteAsync(feature.Name, Name, NormalizeProviderKey(providerKey)); - } - } - - protected override string NormalizeProviderKey(string providerKey) - { - return null; - } - - //TODO: Should throw an ex when there is not in the host side? - protected virtual bool IsHostSide(FeatureDefinition feature) - { - return feature.IsAvailableToHost && CurrentTenant.Id == null; - } - } -} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js index ecb2309f36..69bbb0b955 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js @@ -132,7 +132,7 @@ _$wrapper.find('button[name=ManageHostFeatures]').click(function (e) { e.preventDefault(); _featuresModal.open({ - providerName: 'H' + providerName: 'T' }); }); }); From cd91017415ab506d2cd0dafed9f047b4caa2ce38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Tue, 8 Sep 2020 17:31:32 +0300 Subject: [PATCH 346/474] Update AbpComponentDemoSectionTagHelper.cs --- .../Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs index 722460992d..1f1f71b066 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/TagHelpers/AbpComponentDemoSectionTagHelper.cs @@ -47,7 +47,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S output.PreContent.AppendHtml($"

    {Title}

    "); output.PreContent.AppendHtml("
    "); output.PreContent.AppendHtml("