diff --git a/common.props b/common.props index 92d87d3d76..bd6b976758 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 2.3.0 + 2.4.0 $(NoWarn);CS1591 https://abp.io/assets/abp_nupkg.png https://abp.io diff --git a/docs/en/CLI.md b/docs/en/CLI.md index dcab1b672e..837ba26a11 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -59,6 +59,7 @@ abp new Acme.BookStore * `--output-folder` or `-o`: Specifies the output folder. Default value is the current directory. * `--version` or `-v`: Specifies the ABP & template version. It can be a [release tag](https://github.com/abpframework/abp/releases) or a [branch name](https://github.com/abpframework/abp/branches). Uses the latest release if not specified. Most of the times, you will want to use the latest version. * `--template-source` or `-ts`: Specifies a custom template source to use to build the project. Local and network sources can be used(Like `D\localTemplate` or `https://.zip`). +* `--create-solution-folder` or `-csf`: Specifies if the project will be in a new folder in the output folder or directly the output folder. ### add-package @@ -177,6 +178,29 @@ Logs you out by removing the session token from your computer. abp logout ``` +### generate-proxy + +Generates typescript service proxies and DTOs + +Basic usage: + +````bash +abp generate-proxy [options] +```` + +Example: + +````bash +abp generate-proxy --apiUrl https://localhost:44305 --ui angular --module all +```` + +#### Options + +* `--apiUrl` or `-a`: If you don't give this option, the default api url in your environment.ts file is used, but you can always use a specific api source with this option. +* `--ui` or `-u`: Specifies the UI framework. Default framework is angular. Currently there is only angular option, but we will increase the options with our new cli updates. Stay tuned! +* `--module` or `-m`: Specifies the module name. Default module name is app. If you want to all modules. You can give `--module all` command. + + ### help Writes basic usage information of the CLI. @@ -192,4 +216,4 @@ Examples: ````bash abp help # Shows a general help. abp help new # Shows help about the "new" command. -```` \ No newline at end of file +```` diff --git a/docs/en/UI/AspNetCore/Tag-Helpers/Cards.md b/docs/en/UI/AspNetCore/Tag-Helpers/Cards.md new file mode 100644 index 0000000000..d7f3896cdd --- /dev/null +++ b/docs/en/UI/AspNetCore/Tag-Helpers/Cards.md @@ -0,0 +1,188 @@ +# Cards + +## Introduction + +`abp-card` is a content container derived from bootstrap card element. + +Basic usage: + +````xml + + + + Card Title + Some quick example text to build on the card title and make up the bulk of the card's content. + Go somewhere + + +```` + + + +##### Using Titles, Text and Links: + +Following tags can be used under main `abp-card` tag + +* `abp-card-title` +* `abp-card-subtitle` +* `a abp-card-link` + +Sample: + +````xml + + + Card title + Card subtitle + Some quick example text to build on the card title and make up the bulk of the card's content. + Card link + Another link + + +```` + + + +##### Using List Groups: + +* `abp-list-group flush="true"` : `flush` attribute renders into bootstrap `list-group-flush` class which is used for removing borders and rounded corners to render list group items edge to edge in a parent container. +* `abp-list-group-item` + +Kitchen Sink Sample: + +````xml + + + + Card Title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + Cras justo odio + Dapibus ac facilisis in + Vestibulum at eros + + + Card link + Another link + + +```` + + + +##### Using Header, Footer and Blockquote: + +* `abp-card-header` +* `abp-card-footer` +* `abp-blockquote` + +Sample: + +```xml + + Featured + + Special title treatment + With supporting text below as a natural lead-in to additional content. + Go somewhere + + +``` + +Quote Sample: + +```xml + + Quote + + +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
Someone famous in Source Title
+
+
+
+``` + +Footer Sample: + +```xml + + Featured + + +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
Someone famous in Source Title
+
+
+ 2 days ago +
+``` + + + +## Demo + +See the [cards demo page](https://bootstrap-taghelpers.abp.io/Components/Cards) to see it in action. + +## abp-card Attributes + +- **background:** A value indicates the background color of the card. +- **text-color**: A value indicates the color of the text inside the card. +- **border:** A value indicates the color of the border inside the card. + +Should be one of the following values: + +* `Default` (default value) +* `Primary` +* `Secondary` +* `Success` +* `Danger` +* `Warning` +* `Info` +* `Light` +* `Dark` + +Example: + +````xml + +```` + +### sizing + +Cards has default 100% with and can be changed with custom CSS, grid classes, grid Sass mixins or [utilities](https://getbootstrap.com/docs/4.0/utilities/sizing/). + +````xml + +```` + +### card-deck and card-columns + +`abp-card` can be used inside `card-deck` or `card-columns` aswell. + +````xml +
+ + First Deck + + Ace + Here is the content for Ace. + + + + Second Deck + + Beta + Beta content. + + + + Third Deck + + Epsilon + Content for Epsilon. + + +
+```` diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApiExploring/AbpApiDefinitionController.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApiExploring/AbpApiDefinitionController.cs index ae72975486..e1c2d1f859 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApiExploring/AbpApiDefinitionController.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApiExploring/AbpApiDefinitionController.cs @@ -14,9 +14,9 @@ namespace Volo.Abp.AspNetCore.Mvc.ApiExploring } [HttpGet] - public ApplicationApiDescriptionModel Get() + public ApplicationApiDescriptionModel Get(ApplicationApiDescriptionModelRequestDto model) { - return _modelProvider.CreateApiModel(); + return _modelProvider.CreateApiModel(model); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AspNetCoreApiDescriptionModelProvider.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AspNetCoreApiDescriptionModelProvider.cs index 3069d72e9d..aefad0f02e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AspNetCoreApiDescriptionModelProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AspNetCoreApiDescriptionModelProvider.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; +using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Abstractions; @@ -12,10 +13,13 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Options; using Volo.Abp.Application.Services; +using Volo.Abp.AspNetCore.Mvc.ApiExploring; using Volo.Abp.AspNetCore.Mvc.Conventions; using Volo.Abp.AspNetCore.Mvc.Utils; using Volo.Abp.DependencyInjection; using Volo.Abp.Http.Modeling; +using Volo.Abp.Reflection; +using Volo.Abp.Threading; namespace Volo.Abp.AspNetCore.Mvc { @@ -39,7 +43,7 @@ namespace Volo.Abp.AspNetCore.Mvc Logger = NullLogger.Instance; } - public ApplicationApiDescriptionModel CreateApiModel() + public ApplicationApiDescriptionModel CreateApiModel(ApplicationApiDescriptionModelRequestDto input) { //TODO: Can cache the model? @@ -54,19 +58,22 @@ namespace Volo.Abp.AspNetCore.Mvc continue; } - AddApiDescriptionToModel(apiDescription, model); + AddApiDescriptionToModel(apiDescription, model, input); } } return model; } - private void AddApiDescriptionToModel(ApiDescription apiDescription, ApplicationApiDescriptionModel model) + private void AddApiDescriptionToModel( + ApiDescription apiDescription, + ApplicationApiDescriptionModel applicationModel, + ApplicationApiDescriptionModelRequestDto input) { var controllerType = apiDescription.ActionDescriptor.AsControllerActionDescriptor().ControllerTypeInfo.AsType(); var setting = FindSetting(controllerType); - var moduleModel = model.GetOrAddModule(GetRootPath(controllerType, setting)); + var moduleModel = applicationModel.GetOrAddModule(GetRootPath(controllerType, setting)); var controllerModel = moduleModel.GetOrAddController(controllerType.FullName, CalculateControllerName(controllerType, setting), controllerType, _modelOptions.IgnoredInterfaces); @@ -80,6 +87,7 @@ namespace Volo.Abp.AspNetCore.Mvc } Logger.LogDebug($"ActionApiDescriptionModel.Create: {controllerModel.ControllerName}.{uniqueMethodName}"); + var actionModel = controllerModel.AddAction(uniqueMethodName, ActionApiDescriptionModel.Create( uniqueMethodName, method, @@ -88,6 +96,11 @@ namespace Volo.Abp.AspNetCore.Mvc GetSupportedVersions(controllerType, method, setting) )); + if (input.IncludeTypes) + { + AddCustomTypesToModel(applicationModel, method); + } + AddParameterDescriptionsToModel(actionModel, method, apiDescription); } @@ -149,6 +162,68 @@ namespace Volo.Abp.AspNetCore.Mvc return supportedVersions.Select(v => v.ToString()).Distinct().ToList(); } + private void AddCustomTypesToModel(ApplicationApiDescriptionModel applicationModel, MethodInfo method) + { + foreach (var parameterInfo in method.GetParameters()) + { + AddCustomTypesToModel(applicationModel, parameterInfo.ParameterType); + } + + AddCustomTypesToModel(applicationModel, method.ReturnType); + } + + private static void AddCustomTypesToModel(ApplicationApiDescriptionModel applicationModel, [CanBeNull] Type type) + { + if (type == null) + { + return; + } + + type = AsyncHelper.UnwrapTask(type); + + if (type == typeof(object) || + type == typeof(void) || + type == typeof(Enum) || + type == typeof(ValueType) || + TypeHelper.IsPrimitiveExtended(type)) + { + return; + } + + if (TypeHelper.IsEnumerable(type, out var itemType)) + { + AddCustomTypesToModel(applicationModel, itemType); + return; + } + + if (TypeHelper.IsDictionary(type, out var keyType, out var valueType)) + { + AddCustomTypesToModel(applicationModel, keyType); + AddCustomTypesToModel(applicationModel, valueType); + return; + } + + /* TODO: Add interfaces + */ + + var typeName = ModelingTypeHelper.GetFullNameHandlingNullableAndGenerics(type); + + if (applicationModel.Types.ContainsKey(typeName)) + { + return; + } + + var typeModel = TypeApiDescriptionModel.Create(type); + applicationModel.Types[typeName] = typeModel; + + AddCustomTypesToModel(applicationModel, type.BaseType); + + foreach (var propertyInfo in type.GetProperties()) + { + AddCustomTypesToModel(applicationModel, propertyInfo.PropertyType); + } + } + private void AddParameterDescriptionsToModel(ActionApiDescriptionModel actionModel, MethodInfo method, ApiDescription apiDescription) { if (!apiDescription.ParameterDescriptions.Any()) 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 63fb4f8eee..f5a5a44980 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 @@ -28,10 +28,11 @@ namespace Volo.Abp.Cli options.Commands["add-package"] = typeof(AddPackageCommand); options.Commands["add-module"] = typeof(AddModuleCommand); options.Commands["login"] = typeof(LoginCommand); - options.Commands["logout"] = typeof(LogoutCommand); + options.Commands["logout"] = typeof(LogoutCommand); + options.Commands["generate-proxy"] = typeof(GenerateProxyCommand); options.Commands["suite"] = typeof(SuiteCommand); options.Commands["switch-to-preview"] = typeof(SwitchNightlyPreviewCommand); - options.Commands["switch-to-stable"] = typeof(SwitchStableCommand); + options.Commands["switch-to-stable"] = typeof(SwitchStableCommand); }); } } 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 new file mode 100644 index 0000000000..17fe2d3781 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs @@ -0,0 +1,731 @@ +using System; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Newtonsoft.Json.Linq; +using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.ProjectBuilding; +using Volo.Abp.Cli.ProjectBuilding.Building; +using Volo.Abp.DependencyInjection; +using System.Collections.Generic; +using System.Linq; +using System.Net; + +namespace Volo.Abp.Cli.Commands +{ + public class GenerateProxyCommand : IConsoleCommand, ITransientDependency + { + public static Dictionary> propertyList = new Dictionary>(); + public ILogger Logger { get; set; } + + protected TemplateProjectBuilder TemplateProjectBuilder { get; } + + public GenerateProxyCommand(TemplateProjectBuilder templateProjectBuilder) + { + TemplateProjectBuilder = templateProjectBuilder; + + Logger = NullLogger.Instance; + } + + public async Task ExecuteAsync(CommandLineArgs commandLineArgs) + { + var angularPath = $"angular.json"; + if (!File.Exists(angularPath)) + { + throw new CliUsageException( + "angular.json file not found. You must run this command in angular folder." + + Environment.NewLine + Environment.NewLine + + GetUsageInfo() + ); + } + + var module = commandLineArgs.Options.GetOrNull(Options.Module.Short, Options.Module.Long); + module = module == null ? "app" : module.ToLower(); + + var apiUrl = commandLineArgs.Options.GetOrNull(Options.ApiUrl.Short, Options.ApiUrl.Long); + if (string.IsNullOrWhiteSpace(apiUrl)) + { + var environmentJson = File.ReadAllText("src/environments/environment.ts").Split("export const environment = ")[1].Replace(";", " "); + var environment = JObject.Parse(environmentJson); + apiUrl = environment["apis"]["default"]["url"].ToString(); + } + apiUrl += "/api/abp/api-definition?IncludeTypes=true"; + + var uiFramework = GetUiFramework(commandLineArgs); + + WebClient client = new WebClient(); + string json = client.DownloadString(apiUrl); + //var sr = File.OpenText("api-definition.json"); + //var json = sr.ReadToEnd(); + + Logger.LogInformation("Downloading api definition..."); + Logger.LogInformation("Api Url: " + apiUrl); + + var data = JObject.Parse(json); + + Logger.LogInformation("Modules are combining"); + var moduleList = GetCombinedModules(data, module); + + if (moduleList.Count < 1) + { + throw new CliUsageException( + "Module can not find!" + + Environment.NewLine + Environment.NewLine + + GetUsageInfo() + ); + } + + Logger.LogInformation("Modules and types are creating"); + + foreach (var moduleItem in moduleList) + { + var moduleValue = JObject.Parse(moduleItem.Value); + + var rootPath = moduleItem.Key; + + Logger.LogInformation($"{rootPath} directory is creating"); + + Directory.CreateDirectory($"src/app/{rootPath}/shared/models"); + Directory.CreateDirectory($"src/app/{rootPath}/shared/services"); + + var serviceIndexList = new List(); + var modelIndexList = new List(); + + foreach (var controller in moduleValue.Root.ToList().Select(item => item.First)) + { + var serviceFileText = new StringBuilder(); + + serviceFileText.AppendLine("[firstTypeList]"); + serviceFileText.AppendLine("import { Injectable } from '@angular/core';"); + serviceFileText.AppendLine("import { Observable } from 'rxjs';"); + serviceFileText.AppendLine("[secondTypeList]"); + serviceFileText.AppendLine(""); + serviceFileText.AppendLine("@Injectable({providedIn: 'root'})"); + serviceFileText.AppendLine("export class [controllerName]Service {"); + serviceFileText.AppendLine(" constructor(private restService: RestService) {}"); + serviceFileText.AppendLine(""); + + var firstTypeList = new List(); + var secondTypeList = new List(); + + var controllerName = (string)controller["controllerName"]; + var controllerServiceName = controllerName.PascalToKebabCase() + ".service.ts"; + + foreach (var actionItem in controller["actions"]) + { + var action = actionItem.First; + var actionName = (string)action["uniqueName"]; + + actionName = (char.ToLower(actionName[0]) + actionName.Substring(1)).Replace("Async", "").Replace("Controller", ""); + + var returnValueType = (string)action["returnValue"]["type"]; + + var parameters = action["parameters"]; + var parametersText = new StringBuilder(); + var parametersIndex = 0; + var bodyExtra = ""; + var modelBindingExtra = ""; + var modelBindingExtraList = new List(); + var parameterModel = new List(); + + foreach (var parameter in parameters.OrderBy(p => p["bindingSourceId"])) + { + var bindingSourceId = (string)parameter["bindingSourceId"]; + bindingSourceId = char.ToLower(bindingSourceId[0]) + bindingSourceId.Substring(1); + + var name = (string)parameter["name"]; + var typeSimple = (string)parameter["typeSimple"]; + var typeArray = ((string)parameter["type"]).Split("."); + var type = (typeArray[typeArray.Length - 1]).TrimEnd('>'); + var isOptional = (bool)parameter["isOptional"]; + var defaultValue = (string)parameter["defaultValue"]; + + var modelIndex = CreateType(data, (string)parameter["type"], rootPath, modelIndexList); + + if (!string.IsNullOrWhiteSpace(modelIndex)) + { + modelIndexList.Add(modelIndex); + } + + if (bindingSourceId == "body") + { + bodyExtra = ", body"; + parameterModel = AddParameter(bindingSourceId, type, isOptional, defaultValue, bindingSourceId, parameterModel); + } + else if (bindingSourceId == "path") + { + parameterModel = AddParameter(name, typeSimple, isOptional, defaultValue, bindingSourceId, parameterModel); + } + else if (bindingSourceId == "modelBinding") + { + var parameterNameOnMethod = (string)parameter["nameOnMethod"]; + + var parametersOnMethod = action["parametersOnMethod"]; + foreach (var parameterOnMethod in parametersOnMethod) + { + var parametersOnMethodName = (string)parameterOnMethod["name"]; + if (parametersOnMethodName == parameterNameOnMethod) + { + typeSimple = (string)parameterOnMethod["typeSimple"]; + typeArray = ((string)parameterOnMethod["type"]).Split("."); + type = typeArray[typeArray.Length - 1]; + isOptional = (bool)parameterOnMethod["isOptional"]; + defaultValue = (string)parameterOnMethod["defaultValue"]; + + if (typeSimple == "string" || typeSimple == "boolean" || typeSimple == "number") + { + parameterModel = AddParameter(name, typeSimple, isOptional, defaultValue, bindingSourceId, parameterModel); + } + + modelIndex = CreateType(data, (string)parameterOnMethod["type"], rootPath, modelIndexList); + + if (!string.IsNullOrWhiteSpace(modelIndex)) + { + modelIndexList.Add(modelIndex); + } + } + } + + if (typeSimple != "string" && typeSimple != "boolean" && typeSimple != "number") + { + parametersText.Append($"params = {{}} as {type}"); + modelBindingExtra = ", params"; + if (!string.IsNullOrWhiteSpace(modelIndex)) + { + secondTypeList.Add(type); + } + else { + firstTypeList.Add(type); + } + break; + } + } + } + + if (parameterModel != null && parameterModel.Count > 0) + { + foreach (var parameterItem in parameterModel.OrderBy(p => p.DisplayOrder)) + { + var parameterItemModelName = parameterItem.Type.PascalToKebabCase() + ".ts"; + var parameterItemModelPath = $"src/app/{rootPath}/shared/models/{parameterItemModelName}"; + if (parameterItem.BindingSourceId == "body" && !File.Exists(parameterItemModelPath)) + { + parameterItem.Type = "any"; + } + + parametersIndex++; + + if (parametersIndex > 1) + { + parametersText.Append(", "); + } + + parametersText.Append(parameterItem.Name + (parameterItem.IsOptional ? "?" : "") + ": " + parameterItem.Type + (parameterItem.Value != null ? (" = " + (string.IsNullOrWhiteSpace(parameterItem.Value) ? "''" : parameterItem.Value)) : "")); + + if (parameterItem.BindingSourceId == "modelBinding") + { + modelBindingExtraList.Add(parameterItem.Name); + } + else if (parameterItem.BindingSourceId == "body" && File.Exists(parameterItemModelPath)) + { + secondTypeList.Add(parameterItem.Type); + } + } + } + + if (returnValueType != null) + { + if (returnValueType.IndexOf('<') > -1) + { + var firstTypeArray = returnValueType.Split("<")[0].Split("."); + var firstType = firstTypeArray[firstTypeArray.Length - 1]; + + var secondTypeArray = returnValueType.Split("<")[1].Split("."); + var secondType = secondTypeArray[secondTypeArray.Length - 1].TrimEnd('>'); + + var secondTypeModelName = secondType.PascalToKebabCase() + ".ts"; + var secondTypeModelPath = $"src/app/{rootPath}/shared/models/{secondTypeModelName}"; + if (firstType == "List" && !File.Exists(secondTypeModelPath)) + { + secondType = "any"; + } + + serviceFileText.AppendLine( + firstType == "List" + ? $" {actionName}({parametersText}): Observable<{secondType}[]> {{" + : $" {actionName}({parametersText}): Observable<{firstType}<{secondType}>> {{"); + + if (firstType != "List") + { + firstTypeList.Add(firstType); + } + + if (secondType != "any") + { + secondTypeList.Add(secondType); + } + } + else + { + var typeArray = returnValueType.Split("."); + var type = typeArray[typeArray.Length - 1].TrimEnd('>'); + + type = type switch + { + "Void" => "void", + "String" => "string", + "IActionResult" => "void", + "ActionResult" => "void", + _ => type + }; + + serviceFileText.AppendLine( + $" {actionName}({parametersText}): Observable<{type}> {{"); + + if (type != "void" && type != "string") + { + secondTypeList.Add(type); + } + } + + var modelIndex = CreateType(data, returnValueType, rootPath, modelIndexList); + + if (!string.IsNullOrWhiteSpace(modelIndex)) + { + modelIndexList.Add(modelIndex); + } + } + + if (modelBindingExtraList != null && modelBindingExtraList.Count > 0) + { + modelBindingExtra = ", params: { " + string.Join(", ", modelBindingExtraList.ToArray()) + " }"; + } + + var url = ((string)action["url"]).Replace("/{", "/${"); + var httpMethod = (string)action["httpMethod"]; + + serviceFileText.AppendLine( + url.Contains("${") + ? $" return this.restService.request({{ url: `/{url}`, method: '{httpMethod}'{bodyExtra}{modelBindingExtra} }});" + : $" return this.restService.request({{ url: '/{url}', method: '{httpMethod}'{bodyExtra}{modelBindingExtra} }});"); + + + serviceFileText.AppendLine(" }"); + } + + serviceIndexList.Add(controllerServiceName.Replace(".ts", "")); + + if (firstTypeList != null && firstTypeList.Count > 0) + { + var firstTypeListDistinct = ", " + string.Join(", ", firstTypeList.Where(p => p != "void").Distinct().ToArray()); + serviceFileText.Replace("[firstTypeList]", + $"import {{ RestService {firstTypeListDistinct}}} from '@abp/ng.core';"); + } + else + { + serviceFileText.Replace("[firstTypeList]", + $"import {{ RestService }} from '@abp/ng.core';"); + } + + if (secondTypeList != null && secondTypeList.Count > 0) + { + var secondTypeListDistinct = string.Join(", ", secondTypeList.Where(p => p != "void").Distinct().ToArray()); + serviceFileText.Replace("[secondTypeList]", + $"import {{{secondTypeListDistinct}}} from '../models';"); + } + else + { + serviceFileText.Replace("[secondTypeList]", ""); + } + + serviceFileText.AppendLine("}"); + + serviceFileText.Replace("[controllerName]", controllerName); + File.WriteAllText($"src/app/{rootPath}/shared/services/{controllerServiceName}", serviceFileText.ToString()); + } + + var serviceIndexFileText = new StringBuilder(); + + foreach (var serviceIndexItem in serviceIndexList.Distinct()) + { + serviceIndexFileText.AppendLine($"export * from './{serviceIndexItem}';"); + } + + File.WriteAllText($"src/app/{rootPath}/shared/services/index.ts", serviceIndexFileText.ToString()); + + var modelIndexFileText = new StringBuilder(); + + foreach (var modelIndexItem in modelIndexList.Distinct()) + { + modelIndexFileText.AppendLine($"export * from './{modelIndexItem}';"); + } + + File.WriteAllText($"src/app/{rootPath}/shared/models/index.ts", modelIndexFileText.ToString()); + } + + Logger.LogInformation("Completed!"); + } + + private Dictionary GetCombinedModules(JToken data, string module) + { + var moduleList = new Dictionary(); + + foreach (var moduleItem in data["modules"]) + { + var rootPath = ((string)moduleItem.First["rootPath"]).ToLower(); + + if (moduleList.Any(p => p.Key == rootPath)) + { + var value = moduleList[rootPath]; + + moduleList[rootPath] = value.TrimEnd('}') + "," + moduleItem.First["controllers"].ToString().TrimStart('{'); + } + else + { + moduleList.Add(rootPath, moduleItem.First["controllers"].ToString()); + } + } + + if (module != "all") + { + moduleList = moduleList.Where(p => p.Key.ToLower() == module).ToDictionary(p => p.Key, s => s.Value); + } + + return moduleList; + } + + private static string CreateType(JObject data, string returnValueType, string rootPath, List modelIndexList) + { + var type = data["types"][returnValueType]; + + if (type == null) + { + return null; + } + + if (returnValueType.StartsWith("Volo.Abp.Application.Dtos") + || returnValueType.StartsWith("System.Collections") + || returnValueType == "System.String" + || returnValueType == "System.Void" + || returnValueType.Contains("System.Net.HttpStatusCode?") + || returnValueType.Contains("IActionResult") + || returnValueType.Contains("ActionResult") + || returnValueType.Contains("IStringValueType") + || returnValueType.Contains("IValueValidator") + ) + { + return null; + } + + var typeNameSplit = returnValueType.Split("."); + var typeName = typeNameSplit[typeNameSplit.Length - 1]; + + if (typeName.Contains("HttpStatusCode")) + { + + } + + var typeModelName = typeName.Replace("<", "").Replace(">", "").Replace("?","").PascalToKebabCase() + ".ts"; + + var path = $"src/app/{rootPath}/shared/models/{typeModelName}"; + + var modelFileText = new StringBuilder(); + + var baseType = (string)type["baseType"]; + var extends = ""; + var customBaseTypeName = ""; + var baseTypeName = ""; + + if (!string.IsNullOrWhiteSpace(baseType)) + { + var baseTypeSplit = baseType.Split("."); + baseTypeName = baseTypeSplit[baseTypeSplit.Length - 1].Replace("<", "").Replace(">", ""); + var baseTypeKebabCase = "./" + baseTypeName.PascalToKebabCase(); + + if (baseType != "System.Enum") + { + if (baseType.Contains("Volo.Abp.Application.Dtos")) + { + baseTypeKebabCase = "@abp/ng.core"; + + baseTypeName = baseType.Split("Volo.Abp.Application.Dtos")[1].Split("<")[0].TrimStart('.'); + customBaseTypeName = baseType.Split("Volo.Abp.Application.Dtos")[1].Replace("System.Guid", "string").TrimStart('.'); + } + + if (baseTypeName.Contains("guid") || baseTypeName.Contains("Guid")) + { + baseTypeName = "string"; + } + + modelFileText.AppendLine($"import {{ {baseTypeName} }} from '{baseTypeKebabCase}';"); + extends = "extends " + (!string.IsNullOrWhiteSpace(customBaseTypeName) ? customBaseTypeName : baseTypeName); + + var modelIndex = CreateType(data, baseType, rootPath, modelIndexList); + if (!string.IsNullOrWhiteSpace(modelIndex)) + { + modelIndexList.Add(modelIndex); + } + } + } + + if (baseType == "System.Enum" && (bool)type["isEnum"]) + { + modelFileText.AppendLine($"export enum {typeName} {{"); + + var enumNameList = type["enumNames"].ToArray(); + var enumValueList = type["enumValues"].ToArray(); + + for (var i = 0; i < enumNameList.Length; i++) + { + modelFileText.AppendLine($" {enumNameList[i]} = {enumValueList[i]},"); + } + + modelFileText.AppendLine("}"); + } + else + { + modelFileText.AppendLine(""); + modelFileText.AppendLine($"export class {typeName} {extends} {{"); + + foreach (var property in type["properties"]) + { + var propertyName = (string)property["name"]; + propertyName = (char.ToLower(propertyName[0]) + propertyName.Substring(1)); + var typeSimple = (string)property["typeSimple"]; + + var modelIndex = CreateType(data, (string)property["type"], rootPath, modelIndexList); + + if (typeSimple.IndexOf("[") > -1 && typeSimple.IndexOf("]") > -1) + { + typeSimple = typeSimple.Replace("[", "").Replace("]", "") + "[]"; + } + + if (typeSimple.StartsWith("Volo.Abp")) + { + var typeSimpleSplit = typeSimple.Split("."); + typeSimple = typeSimpleSplit[typeSimpleSplit.Length - 1]; + } + + if (typeSimple.StartsWith("System.Object")) + { + typeSimple = typeSimple.Replace("System.Object", "object"); + } + + if (typeSimple.Contains("?")) + { + typeSimple = typeSimple.Replace("?", ""); + propertyName += "?"; + } + + if (typeSimple != "boolean" + && typeSimple != "string" + && typeSimple != "number" + && typeSimple != "boolean[]" + && typeSimple != "string[]" + && typeSimple != "number[]" + ) + { + var typeSimpleModelName = typeSimple.PascalToKebabCase() + ".ts"; + var modelPath = $"src/app/{rootPath}/shared/models/{typeSimpleModelName}"; + if (!File.Exists(modelPath)) + { + typeSimple = "any" + (typeSimple.Contains("[]") ? "[]" : ""); + } + } + + if (propertyList.Any(p => p.Key == baseTypeName && p.Value.Any(q => q.Key == propertyName && q.Value == typeSimple))) + { + continue; + } + + if (!string.IsNullOrWhiteSpace(modelIndex)) + { + var propertyTypeSplit = ((string)property["type"]).Split("."); + var propertyType = propertyTypeSplit[propertyTypeSplit.Length - 1]; + modelFileText.Insert(0, ""); + modelFileText.Insert(0, $"import {{ {propertyType} }} from '../models';"); + modelFileText.Insert(0, ""); + modelIndexList.Add(modelIndex); + } + + if (propertyList.Any(p => p.Key == typeName && !p.Value.Any(q => q.Key == propertyName))) + { + propertyList[typeName].Add(propertyName, typeSimple); + } + else if (!propertyList.Any(p => p.Key == typeName)) + { + var newProperty = new Dictionary(); + newProperty.Add(propertyName, typeSimple); + propertyList.Add(typeName, newProperty); + } + + modelFileText.AppendLine($" {propertyName}: {typeSimple};"); + } + + modelFileText.AppendLine(""); + + modelFileText.AppendLine($" constructor(initialValues: Partial<{typeName}> = {{}}) {{"); + + if (!string.IsNullOrWhiteSpace(baseType)) + { + modelFileText.AppendLine(" super(initialValues);"); + modelFileText.AppendLine(" }"); + } + else + { + modelFileText.AppendLine(" if (initialValues) {"); + modelFileText.AppendLine(" for (const key in initialValues) {"); + modelFileText.AppendLine(" if (initialValues.hasOwnProperty(key)) {"); + modelFileText.AppendLine(" this[key] = initialValues[key];"); + + modelFileText.AppendLine(" }"); + modelFileText.AppendLine(" }"); + modelFileText.AppendLine(" }"); + modelFileText.AppendLine(" }"); + } + + modelFileText.AppendLine("}"); + } + + File.WriteAllText($"src/app/{rootPath}/shared/models/{typeModelName}", modelFileText.ToString()); + + return typeModelName.Replace(".ts", ""); + } + + private static List AddParameter(string parameterName, string type, bool parameterIsOptional, string parameterDefaultValue, string bindingSourceId, List parameterModel) + { + if (parameterDefaultValue != "null") + { + parameterModel.Add(new ParameterModel + { + DisplayOrder = 3, + Name = parameterName, + Type = type, + Value = parameterDefaultValue, + BindingSourceId = bindingSourceId + }); + } + else if (parameterDefaultValue == "null" && parameterIsOptional) + { + parameterModel.Add(new ParameterModel + { + DisplayOrder = 2, + Name = parameterName, + IsOptional = true, + Type = type, + BindingSourceId = bindingSourceId + }); + } + else + { + parameterModel.Add(new ParameterModel + { + DisplayOrder = 1, + Name = parameterName, + Type = type, + BindingSourceId = bindingSourceId + }); + } + + return parameterModel; + } + + public string GetUsageInfo() + { + var sb = new StringBuilder(); + + sb.AppendLine(""); + sb.AppendLine("Usage:"); + sb.AppendLine(""); + sb.AppendLine(" abp generate-proxy [options]"); + sb.AppendLine(""); + sb.AppendLine("Options:"); + sb.AppendLine(""); + sb.AppendLine("-a|--apiUrl (default: environment.ts>apis>default>url)"); + sb.AppendLine("-u|--ui (default: angular)"); + sb.AppendLine("-m|--module (default: app)"); + sb.AppendLine(""); + sb.AppendLine("Examples:"); + sb.AppendLine(""); + sb.AppendLine(" abp generate-proxy --apiUrl https://www.volosoft.com"); + 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 typescript service proxies and DTOs"; + } + + private UiFramework GetUiFramework(CommandLineArgs commandLineArgs) + { + var optionValue = commandLineArgs.Options.GetOrNull(Options.UiFramework.Short, Options.UiFramework.Long); + switch (optionValue) + { + case "none": + return UiFramework.None; + case "mvc": + return UiFramework.Mvc; + case "angular": + return UiFramework.Angular; + default: + return UiFramework.Angular; + } + } + + public static class Options + { + public static class Module + { + public const string Short = "m"; + public const string Long = "module"; + } + + public static class ApiUrl + { + public const string Short = "a"; + public const string Long = "apiUrl"; + } + + public static class UiFramework + { + public const string Short = "u"; + public const string Long = "ui"; + } + } + } + + public static class StringExtensions + { + public static string PascalToKebabCase(this string value) + { + if (string.IsNullOrEmpty(value)) + { + return value; + } + + return Regex.Replace( + value, + "(? TryUpdatePackage(string file, JProperty package, bool includePreviews = false, bool switchToStable = false) { - var updated = false; var currentVersion = (string)package.Value; var version = await GetLatestVersion(package, currentVersion, includePreviews, switchToStable); - var versionWithPrefix = $"^{version}"; + var versionWithPrefix = $"~{version}"; if (versionWithPrefix == currentVersion) { return false; } - else - { - updated = true; - } package.Value.Replace(versionWithPrefix); Logger.LogInformation($"Updated {package.Name} to {version} in {file.Replace(Directory.GetCurrentDirectory(), "")}."); - return updated; + return true; } protected virtual async Task GetLatestVersion(JProperty package, string currentVersion, diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageInfo.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageInfo.cs index 03c5c5493b..6bd6297384 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageInfo.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageInfo.cs @@ -7,5 +7,7 @@ public string ModuleClass { get; set; } public NuGetPackageTarget Target { get; set; } + + public NuGetPackageTarget TieredTarget { get; set; } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFileNameHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFileNameHelper.cs new file mode 100644 index 0000000000..2c86fe54f5 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFileNameHelper.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace Volo.Abp.Cli.ProjectModification +{ + public static class ProjectFileNameHelper + { + + public static string GetAssemblyNameFromProjectPath(string projectFile) + { + return projectFile + .Substring(projectFile.LastIndexOf(Path.DirectorySeparatorChar) + 1) + .RemovePostFix(StringComparison.OrdinalIgnoreCase, ".csproj"); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs index 9d155ba079..b2f5421e6e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs @@ -94,14 +94,7 @@ namespace Volo.Abp.Cli.ProjectModification public static string[] GetAssemblyNames(string[] projectFiles) { - return projectFiles.Select(GetAssemblyName).ToArray(); - } - - public static string GetAssemblyName(string projectFile) - { - return projectFile - .Substring(projectFile.LastIndexOf(Path.DirectorySeparatorChar) + 1) - .RemovePostFix(StringComparison.OrdinalIgnoreCase, ".csproj"); + return projectFiles.Select(ProjectFileNameHelper.GetAssemblyNameFromProjectPath).ToArray(); } private static string FindProjectEndsWith( diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs index e369690785..106ce97d8c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs @@ -143,7 +143,12 @@ namespace Volo.Abp.Cli.ProjectModification { foreach (var nugetPackage in module.NugetPackages) { - var targetProjectFile = ProjectFinder.FindNuGetTargetProjectFile(projectFiles, nugetPackage.Target); + var nugetTarget = + await IsProjectTiered(projectFiles) && nugetPackage.TieredTarget != NuGetPackageTarget.Undefined + ? nugetPackage.TieredTarget + : nugetPackage.Target; + + var targetProjectFile = ProjectFinder.FindNuGetTargetProjectFile(projectFiles, nugetTarget); if (targetProjectFile == null) { Logger.LogDebug($"Target project is not available for this NuGet package '{nugetPackage.Name}'"); @@ -234,5 +239,11 @@ namespace Volo.Abp.Cli.ProjectModification return JsonSerializer.Deserialize(responseContent); } } + + protected virtual async Task IsProjectTiered(string[] projectFiles) + { + return projectFiles.Select(ProjectFileNameHelper.GetAssemblyNameFromProjectPath) + .Any(p => p.EndsWith(".IdentityServer") || p.EndsWith(".HttpApi.Host")); + } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs index eaaa0d442b..07052a8f48 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs @@ -65,6 +65,8 @@ namespace Volo.Abp.Cli.Utils } } + process.WaitForExit(); + exitCode = process.ExitCode; } diff --git a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj index f6bcbd5def..2dd1772165 100644 --- a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj +++ b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj @@ -12,6 +12,7 @@
+ diff --git a/framework/src/Volo.Abp.Core/System/AbpTypeExtensions.cs b/framework/src/Volo.Abp.Core/System/AbpTypeExtensions.cs index a930096404..e7c600eff6 100644 --- a/framework/src/Volo.Abp.Core/System/AbpTypeExtensions.cs +++ b/framework/src/Volo.Abp.Core/System/AbpTypeExtensions.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using JetBrains.Annotations; +using Volo.Abp; namespace System { @@ -17,8 +18,10 @@ namespace System /// Internally uses . /// /// Target type (as reverse). - public static bool IsAssignableTo(this Type type) + public static bool IsAssignableTo([NotNull] this Type type) { + Check.NotNull(type, nameof(type)); + return type.IsAssignableTo(typeof(TTarget)); } @@ -30,8 +33,11 @@ namespace System /// /// this type /// Target type - public static bool IsAssignableTo(this Type type, Type targetType) + public static bool IsAssignableTo([NotNull] this Type type, [NotNull] Type targetType) { + Check.NotNull(type, nameof(type)); + Check.NotNull(targetType, nameof(targetType)); + return targetType.IsAssignableFrom(type); } @@ -40,8 +46,10 @@ namespace System /// /// The type to get its base classes. /// True, to include the standard type in the returned array. - public static Type[] GetBaseClasses(this Type type, bool includeObject = true) + public static Type[] GetBaseClasses([NotNull] this Type type, bool includeObject = true) { + Check.NotNull(type, nameof(type)); + var types = new List(); AddTypeAndBaseTypesRecursively(types, type.BaseType, includeObject); return types.ToArray(); @@ -52,6 +60,8 @@ namespace System [CanBeNull] Type type, bool includeObject) { + Check.NotNull(types, nameof(types)); + if (type == null) { return; diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs index b314ca6b84..8d6e6a42cf 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs @@ -53,14 +53,14 @@ namespace Volo.Abp.Reflection if (givenTypeInfo.IsGenericType && givenType.GetGenericTypeDefinition() == genericType) { - result.Add(givenType); + result.AddIfNotContains(givenType); } foreach (var interfaceType in givenTypeInfo.GetInterfaces()) { if (interfaceType.GetTypeInfo().IsGenericType && interfaceType.GetGenericTypeDefinition() == genericType) { - result.Add(interfaceType); + result.AddIfNotContains(interfaceType); } } diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeHelper.cs index a708ecc10d..b62f21f124 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeHelper.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeHelper.cs @@ -1,4 +1,7 @@ using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Reflection; @@ -54,6 +57,59 @@ namespace Volo.Abp.Reflection return t; } + public static bool IsEnumerable(Type type, out Type itemType, bool includePrimitives = true) + { + if (!includePrimitives && IsPrimitiveExtended(type)) + { + itemType = null; + return false; + } + + var enumerableTypes = ReflectionHelper.GetImplementedGenericTypes(type, typeof(IEnumerable<>)); + if (enumerableTypes.Count == 1) + { + itemType = enumerableTypes[0].GenericTypeArguments[0]; + return true; + } + + if (typeof(IEnumerable).IsAssignableFrom(type)) + { + itemType = typeof(object); + return true; + } + + itemType = null; + return false; + } + + public static bool IsDictionary(Type type, out Type keyType, out Type valueType) + { + var dictionaryTypes = ReflectionHelper + .GetImplementedGenericTypes( + type, + typeof(IDictionary<,>) + ); + + if (dictionaryTypes.Count == 1) + { + keyType = dictionaryTypes[0].GenericTypeArguments[0]; + valueType = dictionaryTypes[0].GenericTypeArguments[1]; + return true; + } + + if (typeof(IDictionary).IsAssignableFrom(type)) + { + keyType = typeof(object); + valueType = typeof(object); + return true; + } + + keyType = null; + valueType = null; + + return false; + } + private static bool IsPrimitiveExtendedInternal(Type type, bool includeEnums) { if (type.IsPrimitive) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Threading/AsyncHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Threading/AsyncHelper.cs index dc678b8fd4..65e411d038 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Threading/AsyncHelper.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Threading/AsyncHelper.cs @@ -27,6 +27,11 @@ namespace Volo.Abp.Threading return type == typeof(Task) || (type.GetTypeInfo().IsGenericType && type.GetGenericTypeDefinition() == typeof(Task<>)); } + public static bool IsTaskOfT([NotNull] this Type type) + { + return type.GetTypeInfo().IsGenericType && type.GetGenericTypeDefinition() == typeof(Task<>); + } + /// /// Returns void if given type is Task. /// Return T, if given type is Task{T}. @@ -41,7 +46,7 @@ namespace Volo.Abp.Threading return typeof(void); } - if (type.GetTypeInfo().IsGenericType && type.GetGenericTypeDefinition() == typeof(Task<>)) + if (type.IsTaskOfT()) { return type.GenericTypeArguments[0]; } diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ApiDescriptionFinder.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ApiDescriptionFinder.cs index 38e6878bed..2e8eb41844 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ApiDescriptionFinder.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/ApiDescriptionFinder.cs @@ -56,8 +56,8 @@ namespace Volo.Abp.Http.Client.DynamicProxying var found = true; for (int i = 0; i < methodParameters.Length; i++) - { - if (!TypeMatches(action.ParametersOnMethod[i], methodParameters[i])) + { + if (!TypeMatches(action.ParametersOnMethod[i], methodParameters[i])) { found = false; break; diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ApplicationApiDescriptionModel.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ApplicationApiDescriptionModel.cs index a7def10625..fad94b3745 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ApplicationApiDescriptionModel.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ApplicationApiDescriptionModel.cs @@ -10,6 +10,8 @@ namespace Volo.Abp.Http.Modeling { public IDictionary Modules { get; set; } + public IDictionary Types { get; set; } + private ApplicationApiDescriptionModel() { @@ -19,8 +21,8 @@ namespace Volo.Abp.Http.Modeling { return new ApplicationApiDescriptionModel { - //TODO: Why ConcurrentDictionary? - Modules = new ConcurrentDictionary() + Modules = new ConcurrentDictionary(), //TODO: Why ConcurrentDictionary? + Types = new Dictionary() }; } diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ApplicationApiDescriptionModelRequestDto.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ApplicationApiDescriptionModelRequestDto.cs new file mode 100644 index 0000000000..bb50fc0d96 --- /dev/null +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ApplicationApiDescriptionModelRequestDto.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.Http.Modeling +{ + public class ApplicationApiDescriptionModelRequestDto + { + public bool IncludeTypes { get; set; } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ControllerApiDescriptionModel.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ControllerApiDescriptionModel.cs index 2bd9a301ab..db5a5eb37a 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ControllerApiDescriptionModel.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ControllerApiDescriptionModel.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.Http.Modeling { public string ControllerName { get; set; } - public string TypeAsString { get; set; } + public string Type { get; set; } public List Interfaces { get; set; } @@ -26,7 +26,7 @@ namespace Volo.Abp.Http.Modeling return new ControllerApiDescriptionModel { ControllerName = controllerName, - TypeAsString = type.GetFullNameWithAssemblyName(), + Type = type.FullName, Actions = new Dictionary(), Interfaces = type .GetInterfaces() @@ -52,7 +52,7 @@ namespace Volo.Abp.Http.Modeling { var subModel = new ControllerApiDescriptionModel { - TypeAsString = TypeAsString, + Type = Type, Interfaces = Interfaces, ControllerName = ControllerName, Actions = new Dictionary() @@ -71,7 +71,7 @@ namespace Volo.Abp.Http.Modeling public bool Implements(Type interfaceType) { - return Interfaces.Any(i => i.TypeAsString == interfaceType.GetFullNameWithAssemblyName()); + return Interfaces.Any(i => i.Type == interfaceType.FullName); } public override string ToString() diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ControllerInterfaceApiDescriptionModel.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ControllerInterfaceApiDescriptionModel.cs index 3605cf675b..04b5ea1bc9 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ControllerInterfaceApiDescriptionModel.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ControllerInterfaceApiDescriptionModel.cs @@ -5,7 +5,7 @@ namespace Volo.Abp.Http.Modeling [Serializable] public class ControllerInterfaceApiDescriptionModel { - public string TypeAsString { get; set; } + public string Type { get; set; } private ControllerInterfaceApiDescriptionModel() { @@ -16,7 +16,7 @@ namespace Volo.Abp.Http.Modeling { return new ControllerInterfaceApiDescriptionModel { - TypeAsString = type.GetFullNameWithAssemblyName() + Type = type.FullName }; } } diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/IApiDescriptionModelProvider.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/IApiDescriptionModelProvider.cs index 800dc504db..6f8803ddb6 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/IApiDescriptionModelProvider.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/IApiDescriptionModelProvider.cs @@ -2,6 +2,6 @@ namespace Volo.Abp.Http.Modeling { public interface IApiDescriptionModelProvider { - ApplicationApiDescriptionModel CreateApiModel(); + ApplicationApiDescriptionModel CreateApiModel(ApplicationApiDescriptionModelRequestDto input); } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/MethodParameterApiDescriptionModel.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/MethodParameterApiDescriptionModel.cs index 61ffc516f6..4199e29ec0 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/MethodParameterApiDescriptionModel.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/MethodParameterApiDescriptionModel.cs @@ -10,13 +10,17 @@ namespace Volo.Abp.Http.Modeling public string TypeAsString { get; set; } + public string Type { get; set; } + + public string TypeSimple { get; set; } + public bool IsOptional { get; set; } public object DefaultValue { get; set; } private MethodParameterApiDescriptionModel() { - + } public static MethodParameterApiDescriptionModel Create(ParameterInfo parameterInfo) @@ -25,6 +29,8 @@ namespace Volo.Abp.Http.Modeling { Name = parameterInfo.Name, TypeAsString = parameterInfo.ParameterType.GetFullNameWithAssemblyName(), + Type = parameterInfo.ParameterType != null ? ModelingTypeHelper.GetFullNameHandlingNullableAndGenerics(parameterInfo.ParameterType) : null, + TypeSimple = parameterInfo.ParameterType != null ? ModelingTypeHelper.GetSimplifiedName(parameterInfo.ParameterType) : null, IsOptional = parameterInfo.IsOptional, DefaultValue = parameterInfo.HasDefaultValue ? parameterInfo.DefaultValue : null }; diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ModelingTypeHelper.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ModelingTypeHelper.cs new file mode 100644 index 0000000000..2d4b2bac85 --- /dev/null +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ModelingTypeHelper.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using JetBrains.Annotations; + +namespace Volo.Abp.Http.Modeling +{ + public static class ModelingTypeHelper + { + public static string GetFullNameHandlingNullableAndGenerics([NotNull] Type type) + { + Check.NotNull(type, nameof(type)); + + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) + { + return type.GenericTypeArguments[0].FullName + "?"; + } + + if (type.IsGenericType) + { + var genericType = type.GetGenericTypeDefinition(); + return $"{genericType.FullName.Left(genericType.FullName.IndexOf('`'))}<{type.GenericTypeArguments.Select(GetFullNameHandlingNullableAndGenerics).JoinAsString(",")}>"; + } + + return type.FullName; + } + + public static string GetSimplifiedName([NotNull] Type type) + { + Check.NotNull(type, nameof(type)); + + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) + { + return GetSimplifiedName(type.GenericTypeArguments[0]) + "?"; + } + + if (type.IsGenericType) + { + var genericType = type.GetGenericTypeDefinition(); + return $"{genericType.FullName.Left(genericType.FullName.IndexOf('`'))}<{type.GenericTypeArguments.Select(GetSimplifiedName).JoinAsString(",")}>"; + } + + if (type == typeof(string)) + { + return "string"; + } + else if (type == typeof(int)) + { + return "number"; + } + else if (type == typeof(long)) + { + return "number"; + } + else if (type == typeof(bool)) + { + return "boolean"; + } + else if (type == typeof(char)) + { + return "string"; + } + else if (type == typeof(double)) + { + return "number"; + } + else if (type == typeof(float)) + { + return "number"; + } + else if (type == typeof(decimal)) + { + return "number"; + } + else if (type == typeof(DateTime)) + { + return "string"; + } + else if (type == typeof(DateTimeOffset)) + { + return "string"; + } + else if (type == typeof(TimeSpan)) + { + return "string"; + } + else if (type == typeof(Guid)) + { + return "string"; + } + else if (type == typeof(byte)) + { + return "number"; + } + else if (type == typeof(sbyte)) + { + return "number"; + } + else if (type == typeof(short)) + { + return "number"; + } + else if (type == typeof(ushort)) + { + return "number"; + } + else if (type == typeof(uint)) + { + return "number"; + } + else if (type == typeof(ulong)) + { + return "number"; + } + else if (type == typeof(IntPtr)) + { + return "number"; + } + else if (type == typeof(UIntPtr)) + { + return "number"; + } + + return type.FullName; + } + } +} diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ParameterApiDescriptionModel.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ParameterApiDescriptionModel.cs index 257f06d3db..0be791053c 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ParameterApiDescriptionModel.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ParameterApiDescriptionModel.cs @@ -9,7 +9,9 @@ namespace Volo.Abp.Http.Modeling public string Name { get; set; } - public string TypeAsString { get; set; } + public string Type { get; set; } + + public string TypeSimple { get; set; } public bool IsOptional { get; set; } @@ -32,7 +34,8 @@ namespace Volo.Abp.Http.Modeling { Name = name, NameOnMethod = nameOnMethod, - TypeAsString = type?.GetFullNameWithAssemblyName(), + Type = type != null ? ModelingTypeHelper.GetFullNameHandlingNullableAndGenerics(type) : null, + TypeSimple = type != null ? ModelingTypeHelper.GetSimplifiedName(type) : null, IsOptional = isOptional, DefaultValue = defaultValue, ConstraintTypes = constraintTypes, diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/PropertyApiDescriptionModel.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/PropertyApiDescriptionModel.cs new file mode 100644 index 0000000000..ca8af7f22a --- /dev/null +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/PropertyApiDescriptionModel.cs @@ -0,0 +1,46 @@ +using System; +using System.Reflection; +using Volo.Abp.Reflection; + +namespace Volo.Abp.Http.Modeling +{ + [Serializable] + public class PropertyApiDescriptionModel + { + public string Name { get; set; } + + public string Type { get; set; } + + public string TypeSimple { get; set; } + + //TODO: Validation rules for this property + public static PropertyApiDescriptionModel Create(PropertyInfo propertyInfo) + { + string typeName; + string simpleTypeName; + + if (TypeHelper.IsEnumerable(propertyInfo.PropertyType, out var itemType, includePrimitives: false)) + { + typeName = $"[{ModelingTypeHelper.GetFullNameHandlingNullableAndGenerics(itemType)}]"; + simpleTypeName = $"[{ModelingTypeHelper.GetSimplifiedName(itemType)}]"; + } + else if (TypeHelper.IsDictionary(propertyInfo.PropertyType, out var keyType, out var valueType)) + { + typeName = $"{{{ModelingTypeHelper.GetFullNameHandlingNullableAndGenerics(keyType)}:{ModelingTypeHelper.GetFullNameHandlingNullableAndGenerics(valueType)}}}"; + simpleTypeName = $"{{{ModelingTypeHelper.GetSimplifiedName(keyType)}:{ModelingTypeHelper.GetSimplifiedName(valueType)}}}"; + } + else + { + typeName = ModelingTypeHelper.GetFullNameHandlingNullableAndGenerics(propertyInfo.PropertyType); + simpleTypeName = ModelingTypeHelper.GetSimplifiedName(propertyInfo.PropertyType); + } + + return new PropertyApiDescriptionModel + { + Name = propertyInfo.Name, + Type = typeName, + TypeSimple = simpleTypeName + }; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ReturnValueApiDescriptionModel.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ReturnValueApiDescriptionModel.cs index 001bd1b9c9..d6532be6d4 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ReturnValueApiDescriptionModel.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ReturnValueApiDescriptionModel.cs @@ -6,7 +6,9 @@ namespace Volo.Abp.Http.Modeling [Serializable] public class ReturnValueApiDescriptionModel { - public string TypeAsString { get; set; } + public string Type { get; set; } + + public string TypeSimple { get; set; } private ReturnValueApiDescriptionModel() { @@ -15,9 +17,12 @@ namespace Volo.Abp.Http.Modeling public static ReturnValueApiDescriptionModel Create(Type type) { + var unwrappedType = AsyncHelper.UnwrapTask(type); + return new ReturnValueApiDescriptionModel { - TypeAsString = AsyncHelper.UnwrapTask(type).GetFullNameWithAssemblyName() + Type = ModelingTypeHelper.GetFullNameHandlingNullableAndGenerics(unwrappedType), + TypeSimple = ModelingTypeHelper.GetSimplifiedName(unwrappedType) }; } } diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/TypeApiDescriptionModel.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/TypeApiDescriptionModel.cs new file mode 100644 index 0000000000..fcc4b034ea --- /dev/null +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/TypeApiDescriptionModel.cs @@ -0,0 +1,54 @@ +using System; +using System.Linq; + +namespace Volo.Abp.Http.Modeling +{ + [Serializable] + public class TypeApiDescriptionModel + { + public string BaseType { get; set; } + + public bool IsEnum { get; set; } + + public string[] EnumNames { get; set; } + + public object[] EnumValues { get; set; } + + public PropertyApiDescriptionModel[] Properties { get; set; } + + private TypeApiDescriptionModel() + { + + } + + public static TypeApiDescriptionModel Create(Type type) + { + var baseType = type.BaseType; + if (baseType == typeof(object)) + { + baseType = null; + } + + var typeModel = new TypeApiDescriptionModel + { + IsEnum = type.IsEnum, + BaseType = baseType != null ? ModelingTypeHelper.GetFullNameHandlingNullableAndGenerics(baseType) : null + }; + + if (typeModel.IsEnum) + { + typeModel.EnumNames = type.GetEnumNames(); + typeModel.EnumValues = type.GetEnumValues().Cast().ToArray(); + } + else + { + typeModel.Properties = type + .GetProperties() + .Select(PropertyApiDescriptionModel.Create) + .ToArray(); + } + + return typeModel; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/Generators/JQuery/JQueryProxyScriptGenerator.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/Generators/JQuery/JQueryProxyScriptGenerator.cs index b267c26296..c9a10c5432 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/Generators/JQuery/JQueryProxyScriptGenerator.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/Generators/JQuery/JQueryProxyScriptGenerator.cs @@ -56,7 +56,7 @@ namespace Volo.Abp.Http.ProxyScripting.Generators.JQuery private static void AddControllerScript(StringBuilder script, ControllerApiDescriptionModel controller) { - var controllerName = GetNormalizedTypeName(controller.TypeAsString); + var controllerName = GetNormalizedTypeName(controller.Type); script.AppendLine($" // controller {controllerName}"); script.AppendLine(); @@ -129,7 +129,7 @@ namespace Volo.Abp.Http.ProxyScripting.Generators.JQuery script.AppendLine(" url: abp.appPath + '" + ProxyScriptingHelper.GenerateUrlWithParameters(action) + "',"); script.Append(" type: '" + httpMethod + "'"); - if (action.ReturnValue.TypeAsString == typeof(void).GetFullNameWithAssemblyName()) + if (action.ReturnValue.Type == typeof(void).FullName) { script.AppendLine(","); script.Append(" dataType: null"); diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs index a3df2c70a2..7ac3651ad9 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs @@ -49,7 +49,7 @@ namespace Volo.Abp.Http.ProxyScripting private string CreateScript(ProxyScriptingModel scriptingModel) { - var apiModel = _modelProvider.CreateApiModel(); + var apiModel = _modelProvider.CreateApiModel(new ApplicationApiDescriptionModelRequestDto {IncludeTypes = false}); if (scriptingModel.IsPartialRequest()) { diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ApiExploring/AbpApiDefinitionController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ApiExploring/AbpApiDefinitionController_Tests.cs index 44b206e462..8dbbf3eac2 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ApiExploring/AbpApiDefinitionController_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ApiExploring/AbpApiDefinitionController_Tests.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Collections.Generic; +using System.Threading.Tasks; using Shouldly; using Volo.Abp.Http.Modeling; using Xunit; @@ -12,6 +13,15 @@ namespace Volo.Abp.AspNetCore.Mvc.ApiExploring { var model = await GetResponseAsObjectAsync("/api/abp/api-definition"); model.ShouldNotBeNull(); + model.Types.IsNullOrEmpty().ShouldBeTrue(); + } + + [Fact] + public async Task GetAsync_IncludeTypes() + { + var model = await GetResponseAsObjectAsync("/api/abp/api-definition?includeTypes=true"); + model.ShouldNotBeNull(); + model.Types.IsNullOrEmpty().ShouldBeFalse(); } } } diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectFinder_Tests.cs b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectFinder_Tests.cs index 5576960dfa..71d2de51fa 100644 --- a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectFinder_Tests.cs +++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectFinder_Tests.cs @@ -29,7 +29,7 @@ namespace Volo.Abp.Cli [Fact] public void GetAssemblyName_Tests() { - var assemblyName = ProjectFinder.GetAssemblyName( + var assemblyName = ProjectFileNameHelper.GetAssemblyNameFromProjectPath( GetNormalizedPath( @"c:\temp\project\folder\src\Acme.PhoneBook.Host.csproj" ) diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeHelper_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeHelper_Tests.cs index 0fc11addae..e289779d2c 100644 --- a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeHelper_Tests.cs +++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeHelper_Tests.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Text; using Shouldly; using Xunit; @@ -16,5 +15,60 @@ namespace Volo.Abp.Reflection guidType.ShouldBe(typeof(Guid)); } + + [Fact] + public void IsEnumerable() + { + TypeHelper.IsEnumerable( + typeof(IEnumerable), + out var itemType + ).ShouldBeTrue(); + itemType.ShouldBe(typeof(string)); + + TypeHelper.IsEnumerable( + typeof(List), + out itemType + ).ShouldBeTrue(); + itemType.ShouldBe(typeof(TypeHelper_Tests)); + + TypeHelper.IsEnumerable( + typeof(TypeHelper_Tests), + out itemType + ).ShouldBeFalse(); + } + + [Fact] + public void IsDictionary() + { + //Dictionary + TypeHelper.IsDictionary( + typeof(Dictionary), + out var keyType, + out var valueType + ).ShouldBeTrue(); + keyType.ShouldBe(typeof(string)); + valueType.ShouldBe(typeof(int)); + + //MyDictionary + TypeHelper.IsDictionary( + typeof(MyDictionary), + out keyType, + out valueType + ).ShouldBeTrue(); + keyType.ShouldBe(typeof(bool)); + valueType.ShouldBe(typeof(TypeHelper_Tests)); + + //TypeHelper_Tests + TypeHelper.IsDictionary( + typeof(TypeHelper_Tests), + out keyType, + out valueType + ).ShouldBeFalse(); + } + + public class MyDictionary : Dictionary + { + + } } } diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs index 68aef8ee4c..014088983a 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs @@ -147,7 +147,7 @@ namespace Volo.Abp.Account.Web.Pages.Account var properties = SignInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl); properties.Items["scheme"] = provider; - return Challenge(properties, provider); + return await Task.FromResult(Challenge(properties, provider)); } [UnitOfWork] diff --git a/npm/get-version.js b/npm/get-version.js index 7f3dd79e3b..5198ee913a 100644 --- a/npm/get-version.js +++ b/npm/get-version.js @@ -1,3 +1,10 @@ -const fse = require("fs-extra"); +const fse = require('fs-extra'); -console.log(fse.readJSONSync("package.json").version); +const commonProps = fse.readFileSync('../common.props').toString(); + +const versionTag = ''; +const versionEndTag = ''; +const first = commonProps.indexOf(versionTag) + versionTag.length; +const last = commonProps.indexOf(versionEndTag); + +console.log(commonProps.substring(first, last)); diff --git a/npm/lerna.json b/npm/lerna.json index e23f5a1a9a..145064dc14 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.2.0", + "version": "2.3.0", "packages": [ "packs/*" ], diff --git a/npm/ng-packs/lerna.version.json b/npm/ng-packs/lerna.version.json index ccbc798b72..9f5e9c4874 100644 --- a/npm/ng-packs/lerna.version.json +++ b/npm/ng-packs/lerna.version.json @@ -1,5 +1,5 @@ { - "version": "2.2.0", + "version": "2.3.0", "packages": [ "packages/*" ], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 93ef5c8ae7..c3e26038f0 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -14,7 +14,7 @@ "lint": "ng lint", "scripts:build": "cd scripts && yarn && yarn build", "prepare:workspace": "yarn scripts:build", - "ci": "yarn prepare:workspace && yarn ci:test && yarn ng lint && yarn ci:build", + "ci": "yarn ng lint && yarn prepare:workspace && yarn ci:test && yarn ci:build", "ci:test": "ng test --coverage=false", "ci:build": "cd scripts && yarn build:prod", "lerna": "lerna", diff --git a/npm/ng-packs/packages/account-config/package.json b/npm/ng-packs/packages/account-config/package.json index acbfbc6e8b..fb21569a6d 100644 --- a/npm/ng-packs/packages/account-config/package.json +++ b/npm/ng-packs/packages/account-config/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.account.config", - "version": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json index 84d4b6bf56..84b88dc78d 100644 --- a/npm/ng-packs/packages/account/package.json +++ b/npm/ng-packs/packages/account/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.account", - "version": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.account.config": "~2.2.0", - "@abp/ng.theme.shared": "~2.2.0" + "@abp/ng.account.config": "^2.3.0", + "@abp/ng.theme.shared": "^2.3.0" }, "publishConfig": { "access": "public" diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index 3fdb5bf6bb..49aee45ca3 100644 --- a/npm/ng-packs/packages/core/package.json +++ b/npm/ng-packs/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.core", - "version": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", diff --git a/npm/ng-packs/packages/core/src/lib/models/dtos.ts b/npm/ng-packs/packages/core/src/lib/models/dtos.ts new file mode 100644 index 0000000000..21bf136aa5 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/models/dtos.ts @@ -0,0 +1,124 @@ +export class ListResultDto { + items?: T[]; + + constructor(initialValues: Partial> = {}) { + for (const key in initialValues) { + if (initialValues.hasOwnProperty(key)) { + this[key] = initialValues[key]; + } + } + } +} + +export class PagedResultDto extends ListResultDto { + totalCount?: number; + + constructor(initialValues: Partial> = {}) { + super(initialValues); + } +} + +export class LimitedResultRequestDto { + maxResultCount = 10; + + constructor(initialValues: Partial = {}) { + for (const key in initialValues) { + if (initialValues.hasOwnProperty(key)) { + this[key] = initialValues[key]; + } + } + } +} + +export class PagedResultRequestDto extends LimitedResultRequestDto { + skipCount?: number; + + constructor(initialValues: Partial = {}) { + super(initialValues); + } +} + +export class PagedAndSortedResultRequestDto extends PagedResultRequestDto { + sorting?: string; + + constructor(initialValues: Partial = {}) { + super(initialValues); + } +} + +export class EntityDto { + id?: TKey; + + constructor(initialValues: Partial> = {}) { + for (const key in initialValues) { + if (initialValues.hasOwnProperty(key)) { + this[key] = initialValues[key]; + } + } + } +} + +export class CreationAuditedEntityDto extends EntityDto { + creationTime?: string | Date; + creatorId?: string; + + constructor(initialValues: Partial> = {}) { + super(initialValues); + } +} + +export class CreationAuditedEntityWithUserDto< + TUserDto, + TPrimaryKey = string +> extends CreationAuditedEntityDto { + creator?: TUserDto; + + constructor( + initialValues: Partial> = {}, + ) { + super(initialValues); + } +} + +export class AuditedEntityDto extends CreationAuditedEntityDto { + lastModificationTime?: string | Date; + lastModifierId?: string; + + constructor(initialValues: Partial> = {}) { + super(initialValues); + } +} + +export class AuditedEntityWithUserDto extends AuditedEntityDto< + TPrimaryKey +> { + creator?: TUserDto; + lastModifier?: TUserDto; + + constructor(initialValues: Partial> = {}) { + super(initialValues); + } +} + +export class FullAuditedEntityDto extends AuditedEntityDto { + isDeleted?: boolean; + deleterId?: string; + deletionTime?: Date | string; + + constructor(initialValues: Partial> = {}) { + super(initialValues); + } +} + +export class FullAuditedEntityWithUserDto< + TUserDto, + TPrimaryKey = string +> extends FullAuditedEntityDto { + creator?: TUserDto; + lastModifier?: TUserDto; + deleter?: TUserDto; + + constructor(initialValues: Partial> = {}) { + super(initialValues); + } +} diff --git a/npm/ng-packs/packages/core/src/lib/models/index.ts b/npm/ng-packs/packages/core/src/lib/models/index.ts index c19dcbc96a..c38a38bfaf 100644 --- a/npm/ng-packs/packages/core/src/lib/models/index.ts +++ b/npm/ng-packs/packages/core/src/lib/models/index.ts @@ -1,6 +1,7 @@ export * from './application-configuration'; export * from './common'; export * from './config'; +export * from './dtos'; export * from './profile'; export * from './replaceable-components'; export * from './rest'; diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index f4518675c6..5c8fa4b3cb 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": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~2.2.0" + "@abp/ng.theme.shared": "^2.3.0" }, "publishConfig": { "access": "public" diff --git a/npm/ng-packs/packages/identity-config/package.json b/npm/ng-packs/packages/identity-config/package.json index 13ce65c2be..0e4218bc6e 100644 --- a/npm/ng-packs/packages/identity-config/package.json +++ b/npm/ng-packs/packages/identity-config/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.identity.config", - "version": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index d003761f4c..0e60ce9189 100644 --- a/npm/ng-packs/packages/identity/package.json +++ b/npm/ng-packs/packages/identity/package.json @@ -1,15 +1,15 @@ { "name": "@abp/ng.identity", - "version": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.identity.config": "~2.2.0", - "@abp/ng.permission-management": "~2.2.0", - "@abp/ng.theme.shared": "~2.2.0" + "@abp/ng.identity.config": "^2.3.0", + "@abp/ng.permission-management": "^2.3.0", + "@abp/ng.theme.shared": "^2.3.0" }, "publishConfig": { "access": "public" diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index cb114343cb..5b0e0f2701 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": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~2.2.0" + "@abp/ng.theme.shared": "^2.3.0" }, "publishConfig": { "access": "public" diff --git a/npm/ng-packs/packages/setting-management-config/package.json b/npm/ng-packs/packages/setting-management-config/package.json index 5467d1591d..437a46d005 100644 --- a/npm/ng-packs/packages/setting-management-config/package.json +++ b/npm/ng-packs/packages/setting-management-config/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.setting-management.config", - "version": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index 78b733b3b1..64a563d045 100644 --- a/npm/ng-packs/packages/setting-management/package.json +++ b/npm/ng-packs/packages/setting-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.setting-management", - "version": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.setting-management.config": "~2.2.0", - "@abp/ng.theme.shared": "~2.2.0" + "@abp/ng.setting-management.config": "^2.3.0", + "@abp/ng.theme.shared": "^2.3.0" }, "publishConfig": { "access": "public" diff --git a/npm/ng-packs/packages/tenant-management-config/package.json b/npm/ng-packs/packages/tenant-management-config/package.json index c2f8f63ec2..b4d9d555ae 100644 --- a/npm/ng-packs/packages/tenant-management-config/package.json +++ b/npm/ng-packs/packages/tenant-management-config/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.tenant-management.config", - "version": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index 4e17d00c9c..dae3c9a6dc 100644 --- a/npm/ng-packs/packages/tenant-management/package.json +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -1,15 +1,15 @@ { "name": "@abp/ng.tenant-management", - "version": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.feature-management": "~2.2.0", - "@abp/ng.tenant-management.config": "~2.2.0", - "@abp/ng.theme.shared": "~2.2.0" + "@abp/ng.feature-management": "^2.3.0", + "@abp/ng.tenant-management.config": "^2.3.0", + "@abp/ng.theme.shared": "^2.3.0" }, "publishConfig": { "access": "public" diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html index a0fccaf9d3..2b0276ede8 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html +++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html @@ -140,6 +140,26 @@ +
+ + +
+
+ + +
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts index fa400d06f9..788953096f 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts @@ -60,6 +60,10 @@ export class TenantsComponent implements OnInit { sortKey = ''; + get hasSelectedTenant(): boolean { + return Boolean(this.selected.id); + } + get useSharedDatabase(): boolean { return this.defaultConnectionStringForm.get('useSharedDatabase').value; } @@ -115,9 +119,18 @@ export class TenantsComponent implements OnInit { } private createTenantForm() { - this.tenantForm = this.fb.group({ + const tenantForm = this.fb.group({ name: [this.selected.name || '', [Validators.required, Validators.maxLength(256)]], + adminEmailAddress: [null, [Validators.required, Validators.maxLength(256), Validators.email]], + adminPassword: [null, [Validators.required]], }); + + if (this.hasSelectedTenant) { + tenantForm.removeControl('adminEmailAddress'); + tenantForm.removeControl('adminPassword'); + } + + this.tenantForm = tenantForm; } private createDefaultConnectionStringForm() { diff --git a/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts b/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts index 40a9c06d11..b7659e2a95 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts @@ -14,11 +14,14 @@ export namespace TenantManagement { } export interface AddRequest { + adminEmailAddress: string; + adminPassword: string; name: string; } - export interface UpdateRequest extends AddRequest { + export interface UpdateRequest { id: string; + name: string; } export interface DefaultConnectionStringRequest { diff --git a/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts b/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts index bb043377e6..27ee26b7ed 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts @@ -4,7 +4,7 @@ import { RestService, Rest, ABP } from '@abp/ng.core'; import { TenantManagement } from '../models/tenant-management'; @Injectable({ - providedIn: 'root' + providedIn: 'root', }) export class TenantManagementService { constructor(private rest: RestService) {} @@ -13,7 +13,7 @@ export class TenantManagementService { const request: Rest.Request = { method: 'GET', url: '/api/multi-tenancy/tenants', - params + params, }; return this.rest.request(request); @@ -22,7 +22,7 @@ export class TenantManagementService { getTenantById(id: string): Observable { const request: Rest.Request = { method: 'GET', - url: `/api/multi-tenancy/tenants/${id}` + url: `/api/multi-tenancy/tenants/${id}`, }; return this.rest.request(request); @@ -31,7 +31,7 @@ export class TenantManagementService { deleteTenant(id: string): Observable { const request: Rest.Request = { method: 'DELETE', - url: `/api/multi-tenancy/tenants/${id}` + url: `/api/multi-tenancy/tenants/${id}`, }; return this.rest.request(request); @@ -41,7 +41,7 @@ export class TenantManagementService { const request: Rest.Request = { method: 'POST', url: '/api/multi-tenancy/tenants', - body + body, }; return this.rest.request(request); @@ -54,10 +54,10 @@ export class TenantManagementService { const request: Rest.Request = { method: 'PUT', url, - body + body, }; - return this.rest.request(request); + return this.rest.request(request); } getDefaultConnectionString(id: string): Observable { @@ -66,18 +66,20 @@ export class TenantManagementService { const request: Rest.Request = { method: 'GET', responseType: Rest.ResponseType.Text, - url + url, }; return this.rest.request(request); } - updateDefaultConnectionString(payload: TenantManagement.DefaultConnectionStringRequest): Observable { + updateDefaultConnectionString( + payload: TenantManagement.DefaultConnectionStringRequest, + ): Observable { const url = `/api/multi-tenancy/tenants/${payload.id}/default-connection-string`; const request: Rest.Request = { method: 'PUT', url, - params: { defaultConnectionString: payload.defaultConnectionString } + params: { defaultConnectionString: payload.defaultConnectionString }, }; return this.rest.request(request); } @@ -87,7 +89,7 @@ export class TenantManagementService { const request: Rest.Request = { method: 'DELETE', - url + url, }; return this.rest.request(request); } diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json index 7ac94efb0a..cf7111b6f3 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": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~2.2.0" + "@abp/ng.theme.shared": "^2.3.0" }, "publishConfig": { "access": "public" diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json index efd21cd245..b3a17b8d88 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": "2.2.0", + "version": "2.3.0", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~2.2.0", + "@abp/ng.core": "^2.3.0", "@fortawesome/fontawesome-free": "^5.12.1", "@ng-bootstrap/ng-bootstrap": "^5.3.0", "@ngx-validate/core": "^0.0.7", diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts index 27a2b6b460..16d06e1b60 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts @@ -22,7 +22,7 @@ export namespace Toaster { export type Severity = 'neutral' | 'success' | 'info' | 'warning' | 'error'; /** - * @deprecated Status will be removed from toaster model in v2.2 + * @deprecated Status will be removed from toaster model in v3.0 */ export enum Status { confirm = 'confirm', diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index f405dcbd9d..db911bfb55 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -2,125 +2,122 @@ # yarn lockfile v1 -"@abp/ng.account.config@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.account.config/-/ng.account.config-2.1.0.tgz#3ee7cdf6a3d72db90c55f2dc775c402d5be63b29" - integrity sha512-6kCMRy+HLZqM5wKhSDfwc71Ei6MdQ502jOSWCpIPt2wgo8hGnRbht0hdUbT0XgY3qebRA14wXSh59DzLLhPW+A== +"@abp/ng.account.config@^2.2.0", "@abp/ng.account.config@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.account.config/-/ng.account.config-2.2.0.tgz#420396fc55eadd9a5c179e87075a51437ebc964c" + integrity sha512-5BpxFnXCeCDR+m3qGMKn8rSMGwBb4mkwtejVAJXCVYoMXL8x2J9uRgDf9fkdudqpls+BIgB8BX1tRyJiY+Bg8Q== dependencies: tslib "^1.9.0" -"@abp/ng.account@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-2.1.0.tgz#20a702e0901f1402eb9a4fe1fbb7d326ad4664ae" - integrity sha512-Ql6U9D+r34xCSvZpDTy7R/jYf9zt9Rx+0Dgsro4JRII+rKHtS8r3+aLPD3PMSNwjKBsCwj6dl+GUYbICbxhHiQ== +"@abp/ng.account@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-2.2.0.tgz#3a200a46f83c36ae89a6724a6a2226a5f846641b" + integrity sha512-OwTOxXDI3BJ1MrlR6WtvDmNIkqi1OCWlq7MvUhuFPVmIIUI3OjxHNASk1NfWMSlu6amXDxuFEey4ItrMKnAJog== dependencies: - "@abp/ng.account.config" "^2.1.0" - "@abp/ng.theme.shared" "^2.1.0" + "@abp/ng.account.config" "^2.2.0" + "@abp/ng.theme.shared" "^2.2.0" tslib "^1.9.0" -"@abp/ng.core@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-2.1.0.tgz#70d47b81e7bbf1fa6d38e557c2aef26c9611458a" - integrity sha512-BJquoWQbH/lJmXeBKcOQfUTLkeGvTTgeq+ZRIngm7qGnbM5oeS3LPo6rTopP1ELHWzfkRMthx3HHJF4xqMpmaQ== +"@abp/ng.core@^2.2.0", "@abp/ng.core@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-2.2.0.tgz#a553e845f7bc43838704eb15d8684869dfcb053b" + integrity sha512-HtyHJYPY6kKqySt/afgFT5j6yaN7Bx4MMvIGWHqFqZsQChWceagLk5SBFTOjCE1FgsewX2a7OT452bKjgsWsrg== dependencies: - "@ngxs/router-plugin" "^3.5.1" - "@ngxs/storage-plugin" "^3.5.1" - "@ngxs/store" "^3.5.1" + "@angular/localize" "~9.0.2" + "@ngxs/router-plugin" "^3.6.2" + "@ngxs/storage-plugin" "^3.6.2" + "@ngxs/store" "^3.6.2" angular-oauth2-oidc "^8.0.4" just-clone "3.1.0" just-compare "^1.3.0" snq "^1.0.3" tslib "^1.9.0" -"@abp/ng.feature-management@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-2.1.0.tgz#914bafbbb16e7080a519b081e830c7e6dec1e948" - integrity sha512-9geOnDrmZyVD9VRVkLD+Az5zVjw2K/t1znq2IE6aZN9XUmCkvu7Rsao0OwPeMZDcFHqe2MlrLSa/RkxOpwX5Og== +"@abp/ng.feature-management@^2.2.0", "@abp/ng.feature-management@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-2.2.0.tgz#04f959ddb62a0abd99a84fb4e6ec935a796418d4" + integrity sha512-Cw0GRi+6LX5oKDwEvJJyUoh7M4hvaUE5TsuP1E3Hicg/1mMSyUDXVrLBOvAeWWolyfFTpFKLppAvoEEMpUt2eg== dependencies: - "@abp/ng.theme.shared" "^2.1.0" + "@abp/ng.theme.shared" "^2.2.0" tslib "^1.9.0" -"@abp/ng.identity.config@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.identity.config/-/ng.identity.config-2.1.0.tgz#2ea5ba58fc2d882166a076d32eb1b1835b9d9f78" - integrity sha512-irg2ey/LEIHeOkq/ZnNSAncq69AxYYt4Cm4xTT+sNgjyN2hrqpj+NBx6hjOnLci0ZB69o08/o1NgVdHRwgk9WQ== +"@abp/ng.identity.config@^2.2.0", "@abp/ng.identity.config@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.identity.config/-/ng.identity.config-2.2.0.tgz#ac050ed632624c490d8957a18606622637d1d6f3" + integrity sha512-sHRG0iRFrGtF2pNnKcjBaeupg39V8easzUFPU42/SVPi0XyAumrOZRbKkN2CBl0WYedqARTZxE5/nejRMXX4Fg== dependencies: tslib "^1.9.0" -"@abp/ng.identity@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-2.1.0.tgz#ee5646b7538619735548cd6e8db3bcdeedf1e21e" - integrity sha512-4aRtveWZ0J0zSfVuNR9t8EIsujLrI0Zudg9/iagbA37Q018rJIiRX58zuOfcfoBojk8y9Ul0ceviaWbH4DLoYg== +"@abp/ng.identity@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-2.2.0.tgz#1cc7ffa4e2aae462d8ce2399f94cf5ad047fefae" + integrity sha512-G/hrMg/PaN0tA871D52AuKlUhsLWfWSblK0XqQiRmMp/ozsEYSvAV91n/pEScm7qx0RF01K0J5K5V8Cjb4LTyA== dependencies: - "@abp/ng.identity.config" "^2.1.0" - "@abp/ng.permission-management" "^2.1.0" - "@abp/ng.theme.shared" "^2.1.0" + "@abp/ng.identity.config" "^2.2.0" + "@abp/ng.permission-management" "^2.2.0" + "@abp/ng.theme.shared" "^2.2.0" tslib "^1.9.0" -"@abp/ng.permission-management@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-2.1.0.tgz#e5e561d4a9d6e7f46a681860836a3094eedf9b08" - integrity sha512-qXVFaenKikcu6WRJFt6BIIiCtdxuVirgwvo6hoILzfuDeNn0Kl6qqpjMAe2Rpeltm5hBj5Xurm2WFsAQMJeu2w== +"@abp/ng.permission-management@^2.2.0", "@abp/ng.permission-management@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-2.2.0.tgz#56bece037aa094400f8d5585db0bfd5718437ae0" + integrity sha512-OeUZzZV+2TTWOhmpwFTvar9/4IpKz5EhI/6uabu3pOtIsU2Ms2OBbjwVUSKbhLT7e0+z5MM1nPCDoXIlYv22wA== dependencies: - "@abp/ng.theme.shared" "^2.1.0" + "@abp/ng.theme.shared" "^2.2.0" tslib "^1.9.0" -"@abp/ng.setting-management.config@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.setting-management.config/-/ng.setting-management.config-2.1.0.tgz#aba507be43f6cef3e03fc65d2f361fd6fc375801" - integrity sha512-L7iJ9E+qIsylz0cLuiabZJrTl4pMs8H7cx7ZL7aNGcwMqULSSpI1DYZ7HbodNxZetpL2R1AO6mTEHU+Y3YtaLw== +"@abp/ng.setting-management.config@^2.2.0", "@abp/ng.setting-management.config@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management.config/-/ng.setting-management.config-2.2.0.tgz#31cf94a785fc2d5c3f1bcfe2c79afc0f1ab419ee" + integrity sha512-vZhBvKFZ6puWwujkzEEhqyQiMKdTmAeJjSxlUPRyIuwowrZhPnUk1r0ghyOLTC5fC1TDaUXF1mZ2UsBFMDvuiw== dependencies: tslib "^1.9.0" -"@abp/ng.setting-management@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-2.1.0.tgz#5a44da7615c93ecce51ff0df137df00bc1611964" - integrity sha512-Ri3YBn484PU0U1ffp8Hwyq/Do4hajMIk7K70R985vOhzyq9jPzBS4hOoBP+C9Xl/Cn6H0mfMiyr25NNUk7at+w== +"@abp/ng.setting-management@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-2.2.0.tgz#e1c976bf69bbfaa452489b8968b8669c3fba7710" + integrity sha512-LL6CUi0qpS0+9kPz/T0n1U+Kpu9gwI49+d/+xVDG+lIziGqukgwgoUwlEv+Lk0ak+RC5noLurvvJaaKd3l3mPw== dependencies: - "@abp/ng.setting-management.config" "^2.1.0" - "@abp/ng.theme.shared" "^2.1.0" + "@abp/ng.setting-management.config" "^2.2.0" + "@abp/ng.theme.shared" "^2.2.0" tslib "^1.9.0" -"@abp/ng.tenant-management.config@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management.config/-/ng.tenant-management.config-2.1.0.tgz#8dd5c32fdca0c679b2534cb4b4025fb5de1532ee" - integrity sha512-A9ucsNiLsAA/bANJGX4mi2DThR7jiNFb9u4aGdwcphZw5l2DyDqJdcXkOHMQU3S4KwVBCzQbOY1FHdNTqnTPSQ== +"@abp/ng.tenant-management.config@^2.2.0", "@abp/ng.tenant-management.config@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management.config/-/ng.tenant-management.config-2.2.0.tgz#16d87f31ec069e1f3a8351ef3be9a05a3002ed26" + integrity sha512-lfW9lGERn9PBIRseJajQ0GSxo1+wfRxO7Ic/lSSPxhUbsmwg6afquYTcGiU0d+4QQOBY47ga3n0IVrNqWq1pmw== dependencies: tslib "^1.9.0" -"@abp/ng.tenant-management@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-2.1.0.tgz#908b421a4a1c91348bb9576a2f2f9db610de3977" - integrity sha512-5vMqpmcRiRpnUOVhknJc9T2mUzwB+j4vfJGBxxeLpSd9oMpausvL44waMvpyGJGtXNJaiDkeE0ef7EycSwpD0Q== +"@abp/ng.tenant-management@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-2.2.0.tgz#0ce498eaf9f65ef0255fc23949a47f8ae36cf5c8" + integrity sha512-v9Y5F9fm2EXYteCWKI8QODN4ETmSdh6K7gC5Y3+/N+QaUAod8JxFNX0EIXzFGnSLbiZ0O1xA/TRJruQTv1m3SA== dependencies: - "@abp/ng.feature-management" "^2.1.0" - "@abp/ng.tenant-management.config" "^2.1.0" - "@abp/ng.theme.shared" "^2.1.0" + "@abp/ng.feature-management" "^2.2.0" + "@abp/ng.tenant-management.config" "^2.2.0" + "@abp/ng.theme.shared" "^2.2.0" tslib "^1.9.0" -"@abp/ng.theme.basic@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-2.1.0.tgz#9b1d9cbf47f01bbe93db57312bc685dfabfd2a92" - integrity sha512-yjUbFlGPe85hndiCJ9ZefN3JZyItXeKFhGOFbNclTuN8owW21fVrQsk9V6cGN0Jtt1AQr1TDZ0Qr2tVnKEthlQ== +"@abp/ng.theme.basic@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-2.2.0.tgz#7a086a27daa3bec16962dd62dfb2f39a1538e82f" + integrity sha512-fpdDjjhEQZtaZvFkVi5uhqZoYyrxCWJeQgGFvLS36TqYqvJVyoMeJBlVw0CgbY3F+u5V/GmZSVxvZAAJDpUYhg== dependencies: - "@abp/ng.theme.shared" "^2.1.0" + "@abp/ng.theme.shared" "^2.2.0" tslib "^1.9.0" -"@abp/ng.theme.shared@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-2.1.0.tgz#60655b94f755ccd6af3d51061d15547bb216c2ab" - integrity sha512-6PFEVIg2hST8ZVOaR8xHNiEwd9S5AEQ+S2eQRBs7eptN75WYL7CGQTjVGIsphB2g1TYA3256k0shxyOR6iw63g== +"@abp/ng.theme.shared@^2.2.0", "@abp/ng.theme.shared@~2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-2.2.0.tgz#438f77498df3e2f25a1ecf9adb77a9ee5a71d2c5" + integrity sha512-w7TnDbdHpOFcT12wt/9nZDH9PkyZdTP6W+tJIGeH6zOgWC8V4MDX8Ulc9e/ZvQ8u0qRLOEmk3aE5odFQUHSlJw== dependencies: - "@abp/ng.core" "^2.1.0" - "@angular/cdk" "^8.2.3" - "@fortawesome/fontawesome-free" "^5.11.2" - "@ng-bootstrap/ng-bootstrap" "^5.1.4" + "@abp/ng.core" "^2.2.0" + "@fortawesome/fontawesome-free" "^5.12.1" + "@ng-bootstrap/ng-bootstrap" "^5.3.0" "@ngx-validate/core" "^0.0.7" - bootstrap "^4.3.1" - chart.js "^2.9.2" - font-awesome "^4.7.0" - primeicons "^2.0.0" - primeng "^8.1.1" + bootstrap "^4.4.1" + chart.js "^2.9.3" tslib "^1.9.0" "@angular-builders/jest@^8.2.0": @@ -274,15 +271,6 @@ dependencies: tslib "^1.9.0" -"@angular/cdk@^8.2.3": - version "8.2.3" - resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-8.2.3.tgz#16b96ffa935cbf5a646757ecaf2b19c434678f72" - integrity sha512-ZwO5Sn720RA2YvBqud0JAHkZXjmjxM0yNzCO8RVtRE9i8Gl26Wk0j0nQeJkVm4zwv2QO8MwbKUKGTMt8evsokA== - dependencies: - tslib "^1.7.1" - optionalDependencies: - parse5 "^5.0.0" - "@angular/cli@~8.3.21": version "8.3.25" resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-8.3.25.tgz#2802291f83a88f334336a1482c8ee63a69cabad7" @@ -1232,7 +1220,7 @@ unique-filename "^1.1.1" which "^1.3.1" -"@fortawesome/fontawesome-free@^5.11.2", "@fortawesome/fontawesome-free@^5.12.1": +"@fortawesome/fontawesome-free@^5.12.1": version "5.12.1" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.12.1.tgz#2a98fea9fbb8a606ddc79a4680034e9d5591c550" integrity sha512-ZtjIIFplxncqxvogq148C3hBLQE+W3iJ8E4UvJ09zIJUgzwLcROsWwFDErVSXY2Plzao5J9KUYNHKHMEUYDMKw== @@ -2083,7 +2071,7 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@ng-bootstrap/ng-bootstrap@^5.1.4", "@ng-bootstrap/ng-bootstrap@^5.3.0": +"@ng-bootstrap/ng-bootstrap@^5.3.0": version "5.3.0" resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-5.3.0.tgz#4d624dd70a93f99c38bc35b1d3e00afc490155fc" integrity sha512-oNg1sgT+XXxwSBX9oF4AeCHrq+Nm1CvukfVT/NPuYiuNAoTeVOdXc5bJHTLd+cCwoZ1OPZN/yZT+1BcW1KCksQ== @@ -2133,21 +2121,21 @@ dependencies: tslib "^1.9.0" -"@ngxs/router-plugin@^3.5.1", "@ngxs/router-plugin@^3.6.2": +"@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.5.1", "@ngxs/storage-plugin@^3.6.2": +"@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.5.1", "@ngxs/store@^3.6.2": +"@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== @@ -3274,7 +3262,7 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -bootstrap@^4.3.1, bootstrap@^4.4.1: +bootstrap@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.4.1.tgz#8582960eea0c5cd2bede84d8b0baf3789c3e8b01" integrity sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA== @@ -3696,7 +3684,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chart.js@^2.9.2, chart.js@^2.9.3: +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== @@ -9595,11 +9583,6 @@ primeicons@^2.0.0: resolved "https://registry.yarnpkg.com/primeicons/-/primeicons-2.0.0.tgz#ec3e5a8d4d04a09309225a5a57deb911e08dc0d3" integrity sha512-GJTCeMSQU8UU1GqbsaDrg/IH+b/vSinJQl52NVpdJ7sShYLZA8Eq6jLF48Ye3N/dQloGrE07i7XsZvxQ9pNbqg== -primeng@^8.1.1: - version "8.1.4" - resolved "https://registry.yarnpkg.com/primeng/-/primeng-8.1.4.tgz#aa98de9b3a4f8bd669da6011c0abde6892110fe5" - integrity sha512-UHZ10i551zS3+g5GAADI99JhWriYs25QvYYh8wm3twi9HuCVpmRdpULqbsY6gIhvcl0qnPyVTLQM/XII//tVUg== - private@^0.1.6: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -11712,7 +11695,7 @@ tslib@1.10.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslib@^1.10.0, tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.11.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.0.tgz#f1f3528301621a53220d58373ae510ff747a66bc" integrity sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg== diff --git a/npm/package-lock.json b/npm/package-lock.json index 5aadbe1235..b50344e0c5 100644 --- a/npm/package-lock.json +++ b/npm/package-lock.json @@ -1,5 +1,5 @@ { - "version": "2.2.0", + "version": "2.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index 0548674d45..a352b6722f 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "anchor-js": "^4.2.2" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index e3b0981f37..da66f27d5d 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": "2.2.0", + "version": "2.3.0", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^2.2.0" + "@abp/aspnetcore.mvc.ui.theme.shared": "^2.3.0" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index 05d398abcd..4a3b24579b 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": "2.2.0", + "version": "2.3.0", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "^2.2.0", - "@abp/bootstrap": "^2.2.0", - "@abp/bootstrap-datepicker": "^2.2.0", - "@abp/datatables.net-bs4": "^2.2.0", - "@abp/font-awesome": "^2.2.0", - "@abp/jquery-form": "^2.2.0", - "@abp/jquery-validation-unobtrusive": "^2.2.0", - "@abp/lodash": "^2.2.0", - "@abp/luxon": "^2.2.0", - "@abp/malihu-custom-scrollbar-plugin": "^2.2.0", - "@abp/select2": "^2.2.0", - "@abp/sweetalert": "^2.2.0", - "@abp/timeago": "^2.2.0", - "@abp/toastr": "^2.2.0" + "@abp/aspnetcore.mvc.ui": "^2.3.0", + "@abp/bootstrap": "^2.3.0", + "@abp/bootstrap-datepicker": "^2.3.0", + "@abp/datatables.net-bs4": "^2.3.0", + "@abp/font-awesome": "^2.3.0", + "@abp/jquery-form": "^2.3.0", + "@abp/jquery-validation-unobtrusive": "^2.3.0", + "@abp/lodash": "^2.3.0", + "@abp/luxon": "^2.3.0", + "@abp/malihu-custom-scrollbar-plugin": "^2.3.0", + "@abp/select2": "^2.3.0", + "@abp/sweetalert": "^2.3.0", + "@abp/timeago": "^2.3.0", + "@abp/toastr": "^2.3.0" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index 3f32ccb015..6095327299 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/aspnetcore.mvc.ui", "publishConfig": { "access": "public" @@ -12,5 +12,5 @@ "path": "^0.12.7", "rimraf": "^3.0.0" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index 932b4c856d..15df7b9ed8 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,13 +1,13 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^2.2.0", - "@abp/owl.carousel": "^2.2.0", - "@abp/tui-editor": "^2.2.0" + "@abp/aspnetcore.mvc.ui.theme.shared": "^2.3.0", + "@abp/owl.carousel": "^2.3.0", + "@abp/tui-editor": "^2.3.0" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index 386d7eba6c..0e8509d622 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -1,5 +1,5 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/bootstrap-datepicker", "publishConfig": { "access": "public" @@ -7,5 +7,5 @@ "dependencies": { "bootstrap-datepicker": "^1.9.0" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index 498e54e892..96de72dc43 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/bootstrap", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "bootstrap": "^4.3.1" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index 80ccd61e17..e6b3bf0f5a 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -1,5 +1,5 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/chart.js", "publishConfig": { "access": "public" @@ -7,5 +7,5 @@ "dependencies": { "chart.js": "^2.9.3" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index b6a483d76f..b4f3659faf 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "clipboard": "^2.0.4" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index 7a2b528f44..894f5370df 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "codemirror": "^5.49.2" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index dec0ece13b..383aeba66f 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,8 +1,8 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/core", "publishConfig": { "access": "public" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index d5e3c10801..dd553c0fda 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/datatables.net-bs4", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "^2.2.0", + "@abp/datatables.net": "^2.3.0", "datatables.net-bs4": "^1.10.20" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index 47d51dd15b..90f83375ae 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/datatables.net", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "datatables.net": "^1.10.20" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index e21b186f57..4656a2562f 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "^2.2.0", - "@abp/clipboard": "^2.2.0", - "@abp/malihu-custom-scrollbar-plugin": "^2.2.0", - "@abp/popper.js": "^2.2.0", - "@abp/prismjs": "^2.2.0" + "@abp/anchor-js": "^2.3.0", + "@abp/clipboard": "^2.3.0", + "@abp/malihu-custom-scrollbar-plugin": "^2.3.0", + "@abp/popper.js": "^2.3.0", + "@abp/prismjs": "^2.3.0" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index 96ec8df8c4..c7929d83a5 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,5 +1,5 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" @@ -7,5 +7,5 @@ "dependencies": { "flag-icon-css": "^3.4.5" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index fe302462be..277eb28eed 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/font-awesome", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "@fortawesome/fontawesome-free": "^5.11.2" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index e46c972e59..f1d91f0b35 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0" + "@abp/core": "^2.3.0" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index 391c4a06df..6d396750fb 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/jquery-form", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "^2.2.0", + "@abp/jquery": "^2.3.0", "jquery-form": "^4.2.2" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index b40a776119..8e83ae4c17 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/jquery-validation-unobtrusive", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery-validation": "^2.2.0", + "@abp/jquery-validation": "^2.3.0", "jquery-validation-unobtrusive": "^3.2.11" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index d1c32c5fea..a0793621e1 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/jquery-validation", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "^2.2.0", + "@abp/jquery": "^2.3.0", "jquery-validation": "^1.19.1" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index 5ec2fd0ec3..ce18819d94 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/jquery", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "jquery": "^3.4.1" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index 6e9ffd0c0c..becc25f57a 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/lodash", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "lodash": "^4.17.15" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index 1e53e6fd99..d7f2c9eba6 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -1,5 +1,5 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/luxon", "publishConfig": { "access": "public" @@ -7,5 +7,5 @@ "dependencies": { "luxon": "^1.21.3" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index 1d65d8f9d8..ef24529795 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/malihu-custom-scrollbar-plugin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "malihu-custom-scrollbar-plugin": "^3.1.5" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index da0afef6db..a996ce3163 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "markdown-it": "^10.0.0" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index 947313ad4a..3ecd626f1e 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "owl.carousel": "^2.3.4" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index 21fa7de6ee..83ea7eea5f 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "popper.js": "^1.16.0" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 745e4da5b1..e6899bbb1f 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "prismjs": "^1.17.1" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index f3f6715210..58c48daa56 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/select2", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "select2": "^4.0.12" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/sweetalert/package.json b/npm/packs/sweetalert/package.json index 01693f17d1..0c947bb1de 100644 --- a/npm/packs/sweetalert/package.json +++ b/npm/packs/sweetalert/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/sweetalert", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "^2.2.0", + "@abp/core": "^2.3.0", "sweetalert": "^2.1.2" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index 57f55b073b..b2549944e1 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/timeago", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "^2.2.0", + "@abp/jquery": "^2.3.0", "timeago": "^1.6.7" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index 063be979ae..16fa91de0e 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,12 +1,12 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/toastr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "^2.2.0", + "@abp/jquery": "^2.3.0", "toastr": "^2.1.4" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index e13b5d37b8..cb61bce4e0 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,15 +1,15 @@ { - "version": "2.2.0", + "version": "2.3.0", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/codemirror": "^2.2.0", - "@abp/highlight.js": "^2.2.0", - "@abp/jquery": "^2.2.0", - "@abp/markdown-it": "^2.2.0", + "@abp/codemirror": "^2.3.0", + "@abp/highlight.js": "^2.3.0", + "@abp/jquery": "^2.3.0", + "@abp/markdown-it": "^2.3.0", "tui-editor": "^1.4.8" }, - "gitHead": "d5707967977fb14328661ae403c41eaa679ee263" + "gitHead": "e5aead708928c668494ed0dbd7e8ae5c5ef9b9e7" } diff --git a/npm/preview-publish.ps1 b/npm/preview-publish.ps1 index 953dda9d63..8f92022378 100644 --- a/npm/preview-publish.ps1 +++ b/npm/preview-publish.ps1 @@ -20,7 +20,6 @@ $Registry = "http://localhost:4873"; } $commands = ( - "npm-cli-login -u $User -p $Pass -e $Email -r $Registry", "cd ng-packs\scripts", "npm install", "npm run publish-packages -- --nextVersion $Version --preview", diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index af62eb56ed..ea84e52b28 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -92,6 +92,7 @@ $projects = ( "framework/src/Volo.Abp.MultiTenancy", "framework/src/Volo.Abp.Minify", "framework/src/Volo.Abp.ObjectMapping", + "framework/src/Volo.Abp.Quartz", "framework/src/Volo.Abp.RabbitMQ", "framework/src/Volo.Abp.Security", "framework/src/Volo.Abp.Serialization", diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json index 20b3d0ea23..c982ed20ca 100644 --- a/templates/app/angular/package.json +++ b/templates/app/angular/package.json @@ -11,11 +11,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~2.2.0", - "@abp/ng.identity": "~2.2.0", - "@abp/ng.setting-management": "~2.2.0", - "@abp/ng.tenant-management": "~2.2.0", - "@abp/ng.theme.basic": "~2.2.0", + "@abp/ng.account": "~2.3.0", + "@abp/ng.identity": "~2.3.0", + "@abp/ng.setting-management": "~2.3.0", + "@abp/ng.tenant-management": "~2.3.0", + "@abp/ng.theme.basic": "~2.3.0", "@angular/animations": "~9.0.2", "@angular/common": "~9.0.2", "@angular/compiler": "~9.0.2", 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 6e36dde3bf..504aafc075 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": "^2.2.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "^2.3.0" } } \ 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 157d0f2e34..a900560181 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@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-2.2.0.tgz#e7f4e57d2b17cc76388e9c56bc34d50c9658873b" - integrity sha512-S9GQ9YVg4DWrgjujwiXBER6KqdqW5nZ1Bmt+YEePn5gEoPvoVrh6ojthpHYRjBJtGFqBSzRAQ9eVZLebT22Ozg== +"@abp/aspnetcore.mvc.ui.theme.basic@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-2.3.0.tgz#482c236565268d305c0c86399e837bdddecf97ad" + integrity sha512-PJqGAHllBoZv/97DalfMFQr4oPA6PatObaj/+oxkjUjQcPD4z2sJO5Z+d8t6plo3ZvjzMvwm+VwzhZgdJhtwKw== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "^2.2.0" + "@abp/aspnetcore.mvc.ui.theme.shared" "^2.3.0" -"@abp/aspnetcore.mvc.ui.theme.shared@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-2.2.0.tgz#e0df953853be2a184d323931573f9f98aebbaa62" - integrity sha512-urxziaCdvfEqN5cjiiM5f5dx2Yr+AoGqCJVCo0Okjl2dosdaj5DH4SBzMvKAaLXzo3Ep1h4b3Wvws4BThL/6rA== - dependencies: - "@abp/aspnetcore.mvc.ui" "^2.2.0" - "@abp/bootstrap" "^2.2.0" - "@abp/bootstrap-datepicker" "^2.2.0" - "@abp/datatables.net-bs4" "^2.2.0" - "@abp/font-awesome" "^2.2.0" - "@abp/jquery-form" "^2.2.0" - "@abp/jquery-validation-unobtrusive" "^2.2.0" - "@abp/lodash" "^2.2.0" - "@abp/luxon" "^2.2.0" - "@abp/malihu-custom-scrollbar-plugin" "^2.2.0" - "@abp/select2" "^2.2.0" - "@abp/sweetalert" "^2.2.0" - "@abp/timeago" "^2.2.0" - "@abp/toastr" "^2.2.0" - -"@abp/aspnetcore.mvc.ui@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-2.2.0.tgz#b2cdd421eed09ec1d30ae85e14434b7efc094ade" - integrity sha512-IO/AjhJu+LUa9zOaT8JlEnV+Pcp9oQ3q9kTq8kmMakC35vTIyvBpB3nnykXIOytZSyjsBgFYB/uMxPgBOjWagg== +"@abp/aspnetcore.mvc.ui.theme.shared@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-2.3.0.tgz#553ba6983308a8da3336226b8c20f9191da8a5cc" + integrity sha512-LLf89lXILM0MiSv/Mk4GXXl+eu+J5obTMfA9obLNiXD5fpwlYxnTtMwxh+sfZe9KcsZTuYEcXJgVk/A8HKydeg== + dependencies: + "@abp/aspnetcore.mvc.ui" "^2.3.0" + "@abp/bootstrap" "^2.3.0" + "@abp/bootstrap-datepicker" "^2.3.0" + "@abp/datatables.net-bs4" "^2.3.0" + "@abp/font-awesome" "^2.3.0" + "@abp/jquery-form" "^2.3.0" + "@abp/jquery-validation-unobtrusive" "^2.3.0" + "@abp/lodash" "^2.3.0" + "@abp/luxon" "^2.3.0" + "@abp/malihu-custom-scrollbar-plugin" "^2.3.0" + "@abp/select2" "^2.3.0" + "@abp/sweetalert" "^2.3.0" + "@abp/timeago" "^2.3.0" + "@abp/toastr" "^2.3.0" + +"@abp/aspnetcore.mvc.ui@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-2.3.0.tgz#166a1235b70b460be0c84171c229c1c5543dcbb7" + integrity sha512-5vitUltSBEVf97tJwonMkL6YQ0acKF2JEtbkfer3GN63MuU4+8ayYT8bwlieV6iC20dm69dCLI3dIfezvFnAfA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,135 +41,135 @@ path "^0.12.7" rimraf "^3.0.0" -"@abp/bootstrap-datepicker@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-2.2.0.tgz#a2f50b422824f18ed4b7e80be6852e2979119f8e" - integrity sha512-X9jT5mU42QFfVhOZdun7aEJUf3bMko6NsG3NFQVjqTqKH+iYGKfHPFpXD0gP/6Nb4KgZUdId8hSyQTZyOK2JEA== +"@abp/bootstrap-datepicker@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-2.3.0.tgz#fc235d1fb47e44cd6950cd6179b045fbd19b2a12" + integrity sha512-X7iWvwo7QqOp35IBz8WELDVfuVK110vZCcfuXwo0MbnH0aXS3+2CEUxqZnYHNcDrf+eXaact/IPKVl5Z/mA70A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-2.2.0.tgz#16e41d3432117bbcd9012c6f735c49c543255879" - integrity sha512-aRmluu6SkIl+JgCzSSJZrDPkYr6WWaQdY0iJAOz6NHtffa7Aumh1IUOrLVKL0T1pQn6QKs0Z7JDGyYMdh1HPkQ== +"@abp/bootstrap@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-2.3.0.tgz#e53ead2fae02cef04e8d44c1fd38d3368d0db8df" + integrity sha512-PsmCRUEF82Co903JxdvvPaBaiP+BFpQvMhM0PMqZzJ4AKGq0qG4kdCTAhFYhusy1e/UqBaNwCp7URDN/I+Xr7A== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" bootstrap "^4.3.1" -"@abp/core@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-2.2.0.tgz#4eea0a06458c90acb8566a11eb841fe65d15d256" - integrity sha512-tBGHa5CUr0ewT31g689RAfQ6Su2p4uyn2PzmrW/8lahBrvqkoCb41fkCDLQJkTY5rKPrEKZd/s9OoyOnS20DLg== +"@abp/core@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-2.3.0.tgz#3bb600c6b3e77060561d90db06e0052e04fa59b6" + integrity sha512-LGtOSYZqINZuX6Hy9vDDxxLJpEfZYyzdTxFdQt9UBtE/AuypILG8lOQjd96OJpRTeqyOUHBYo8AXtYzEyR6ZiA== -"@abp/datatables.net-bs4@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-2.2.0.tgz#c7cc49e889b295ae10fb24ed62b154ef79ffc85a" - integrity sha512-zjJRPqOCWPfkHt1QztfFHKrsTE9o6Je2EpfA7hRMej2FlGbsMWUxOqx/btK1vjD6YIU8DtVDpIdj1WvPOITQ4Q== +"@abp/datatables.net-bs4@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-2.3.0.tgz#f7268173bd5070471999e3e694509b49e4fc2e87" + integrity sha512-nA913hyrZRl8gQlGAmg+n7Z4iav4U+XrPgC0CfTUkZda7ReHj50jFZPQREfnmGdM77FVA+3y4q4LZELGB65GMQ== dependencies: - "@abp/datatables.net" "^2.2.0" + "@abp/datatables.net" "^2.3.0" datatables.net-bs4 "^1.10.20" -"@abp/datatables.net@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-2.2.0.tgz#22f9c7ca90c2d4af264483b4f8286b0feb7c3d52" - integrity sha512-L4MnpdloSWr/px3mvV75sxsxL68MyALB2LKdzCFMQWILCZVkxMmQb9LARINYIrn461Wrc+zbYWNEBD0MAq7flg== +"@abp/datatables.net@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-2.3.0.tgz#420ab84c54ca6b81a555c8525a96de62c54aca75" + integrity sha512-CAIF/+eQzCPltfQsvojOE5ojbbOv0u9MqtAIjgCiQ0ccCLe0j+68ZJhizDK1e3JA1o9jZXcBZnEWIGPdhpcRcA== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" datatables.net "^1.10.20" -"@abp/font-awesome@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-2.2.0.tgz#2de39e3c6c3e8c30394d82861761a66c5b4032f0" - integrity sha512-RT06MYUGgaWBEpW5c7wUcfMXgxcOHWdX/C01LDO/j6iVoKBuBHOkkvcUoTWII068ECrLYOkj+RyT59dCKm8FFw== +"@abp/font-awesome@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-2.3.0.tgz#30988351f7ca7ccf84b414e95848016df701bafe" + integrity sha512-lco8ArQi1xeKqypmvCubXrwO0/a+uP33vqQy+d3JRcmAXJgc5+AeQrzEq9KRcD/BGeWQUi8aJobW0rGFTAZxxQ== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" "@fortawesome/fontawesome-free" "^5.11.2" -"@abp/jquery-form@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-2.2.0.tgz#951653fac4013a7bbec065b5101b86d575e0eca7" - integrity sha512-ji44E3Ud0S3LNXn1WJ/Aw44qAIG7EITEW1KOe46oz+/awPpbiiA4dDDNleTvO2jI2/s8mNyR0bNanP6BUsc7tw== +"@abp/jquery-form@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-2.3.0.tgz#91e088fd1861c2a6224ce127c0fe0071baec9eef" + integrity sha512-cVPFdKpgAPSsG4mxrREfmslkgVJEZI9LpHask/6vy5gE/eFKZ9t6BZg+gop7bj6co3NcjekjDxhM7c0Iq+auyA== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" jquery-form "^4.2.2" -"@abp/jquery-validation-unobtrusive@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-2.2.0.tgz#6d39ba9f7bf026d1380796bf5dff76c8d16b42ce" - integrity sha512-SuS/dRRVz7ZR4HK/h9x0jRRVLPqXN0CPRGPdJZ1LJraXVEJ9/eDEGf1rMlHmEGt1FXXFTD01/zjisbweDE786w== +"@abp/jquery-validation-unobtrusive@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-2.3.0.tgz#18dcd10ac0d6678716b42170fca1810b23cebaab" + integrity sha512-CAR3zZ4Oxbu5MK7VO2QhZjwYW81NCEqOViKPpPzk/K2qkgphHbDpRei3XMbi+476KMhrAgQE6KzlrafWBtsdRA== dependencies: - "@abp/jquery-validation" "^2.2.0" + "@abp/jquery-validation" "^2.3.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-2.2.0.tgz#02bb8ba883e72c1204867ee4d1c1094bd91c4c4c" - integrity sha512-ypITQloO4iEDgqlA6qb3taj+7HMX0Cf/ACA2OvtrvOgJejx6J4wfrPjwuFZu1WWJ0xtc9yTdbovdcSVcQbIGaA== +"@abp/jquery-validation@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-2.3.0.tgz#af723abf5950729ef2763cecb7f5a9c5cbed0031" + integrity sha512-YvFCbvx9hWzi7BytYRBb/0tFdiibWT9CFz7vcHTrZiXjjSfZ1koh3DeXPErj091VR9X4q4nzRfCETA+0lINQbA== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" jquery-validation "^1.19.1" -"@abp/jquery@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-2.2.0.tgz#0e641b1109e78eff4c34331ca2b123b67cc30cbe" - integrity sha512-vEfRoFEAmDmRgSq98Y9EZExfQFSWtmjaHrodUu+MadTcRlnn+wHq8wwkKKxpj/eYtNc8aFORpyHMMH7uliAKxg== +"@abp/jquery@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-2.3.0.tgz#c17fcc3559a0285af3d6e534a5a076e99fc0ba37" + integrity sha512-376LnHco1kW6U094Tx3cbkM5y3ZAA02Lp3yrN/b0Qc1th84Xr2twix2YZG+GqcqlwdljH4ihdgpAM/ZO7REEaw== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" jquery "^3.4.1" -"@abp/lodash@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-2.2.0.tgz#af0a2ebcb28fd0a8c02da5026479d9370ed19719" - integrity sha512-wOMLqIpuq4a7ww7pB138G6YxBiTGBgxNW/IWGUiWbfgrr88cGPKIYYv/8O8mvr8PLNGjizNynuwQRj522yA3Dw== +"@abp/lodash@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-2.3.0.tgz#20219d872db7eba372cbaea168494fa54eb1cf12" + integrity sha512-I2KKEJaGwfpCKUox32lkllLRKgP25mszJuGpj571KTsvuT0Zo6BlNov4xoy8wbHC7vZF7dvkJpiCGg2yKnxc8Q== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" lodash "^4.17.15" -"@abp/luxon@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-2.2.0.tgz#0d0e78edc249853fa31eceecc00df2846a879aa9" - integrity sha512-WbOW0PcMks+WXRPWt/+H4pOa5waM331WkY0F+EJx8fpxemNGQNUEXLkuMXzN3MrN6LrplM9AZ9i+NRA9PWHbNw== +"@abp/luxon@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-2.3.0.tgz#5e08cdff00682f317707d9f34da6a1fb21402914" + integrity sha512-UAbh+HyVwr+ytJpJEddHp0aRpIKQIWknvrDmcyIOaTY6ZSJPZSxJlDmIC56d094JopeRf/+E/cTMMS5bM8nmrA== dependencies: luxon "^1.21.3" -"@abp/malihu-custom-scrollbar-plugin@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-2.2.0.tgz#e11fd46dccbb28d44fb199e880b91d27c94f1919" - integrity sha512-YDu/NLpIzMA96NDHxd27/+liTm3sow9M+oWH29+9JW8o/AEpXUH3T3AmoXXcTgsBlzLaewgHEFM8yxsAAFoj8Q== +"@abp/malihu-custom-scrollbar-plugin@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-2.3.0.tgz#1b2535ca6f30dd49ea5ec3de283f3ac4d1d5f6a0" + integrity sha512-dCeJMRn+zHhGi1Uwg0h0ET21+sZ/Zf2trwfVJrd8bXan5bMKPRd3UtXrJlxZg3NHqVJmUiwWe2dzEHt1fexCDQ== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-2.2.0.tgz#4639d4e5b72b1736fa4476bd9b6a78e036400421" - integrity sha512-tc87JyM0kvVF388kyGUjDby49Zrrb089jVRRipoIaxXeu4M1YxEFSKBEcUK1MohZWjVtWrNs8MoxPlfukaMpyw== +"@abp/select2@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-2.3.0.tgz#edc5ae4655ccdf6b9ec7546dd156cda33bf907d3" + integrity sha512-s7TMBe2zUndVkfDTD0cBX/F4Fm9alA1BUx7l0b2+CmbJkdIp3YkjA4Oqsi4RinpP6/vVSYpTiTGWX4cYogbcFw== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" select2 "^4.0.12" -"@abp/sweetalert@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-2.2.0.tgz#dfc60ba085522d8390e41b90bf5a3d474f4ae624" - integrity sha512-HS6TKOwP91UjzjZHaheurZ1AYUSMkQyCSmoX6g5LAK4eH8IIgpojVSp1AFCSPATrFsFWY/dzkDGcfu90FWsVBg== +"@abp/sweetalert@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-2.3.0.tgz#2120b1f98e2530afc65f6c11fb7ea8d087a98777" + integrity sha512-Kq7UAOwi2sH/lxIrwoEhUCt5n8OAv17SubLWE/Ud3gWgcSw5XSmAZb13S6e78yydlV89Ny3LeYeGjqfU6nnSug== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" sweetalert "^2.1.2" -"@abp/timeago@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-2.2.0.tgz#9a8297f36a46cdc4cc62f44d0fdc91b70def389c" - integrity sha512-8qjmKscsTvPznHKWEsddYxdSBiU+l+OgLG6vzMcSWqngYbDQGXqNA93BwJI2qiwd+FkNcfGgYg7CN7bcwzmaiw== +"@abp/timeago@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-2.3.0.tgz#79bb1019f135d3342916bb61f52f3be35914f11b" + integrity sha512-TogWr4bdFl/DsB3QLa1iOkRGmeWNPyR60buI3D+WSJGlEtbjU9L5I3cGDEWJGYOxPKU9WuqV4DiraBbq/xNGLw== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" timeago "^1.6.7" -"@abp/toastr@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-2.2.0.tgz#1cad83a89da244685b3c82adff64260b7ccf4742" - integrity sha512-HHfSaw4M/9zS+KgzxGvbHYiQ5qcJgpf21cRZEo16aUwnTeKr4SRaewAWryNn4dKcIO2YNrhzDLH+OYbEaJJlDQ== +"@abp/toastr@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-2.3.0.tgz#0c0201e00a8070b831a33fe9763e0fb3a1981523" + integrity sha512-MlS9KXPuo1vYW78QvJUR1CXGMq7qo2wGKRxZJEloxWTI8bg7zEZwa27LGJJmHLQacOqdhUP9c5t9D136eUhu6A== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" toastr "^2.1.4" "@fortawesome/fontawesome-free@^5.11.2": diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/Controllers/TestController.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/Controllers/TestController.cs deleted file mode 100644 index 449beaf29c..0000000000 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/Controllers/TestController.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using MyCompanyName.MyProjectName.Models.Test; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; - -namespace MyCompanyName.MyProjectName.Controllers -{ - [Route("api/test")] - public class TestController : MyProjectNameController - { - public TestController() - { - - } - - [HttpGet] - [Route("")] - public async Task> GetAsync() - { - return new List - { - new TestModel {Name = "John", BirthDate = new DateTime(1942, 11, 18)}, - new TestModel {Name = "Adams", BirthDate = new DateTime(1997, 05, 24)} - }; - } - } -} 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 5d035c76c9..b467e1767f 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": "^2.2.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "^2.3.0" } } \ 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 b3b0eb268b..3c0e460076 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@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-2.2.0.tgz#e7f4e57d2b17cc76388e9c56bc34d50c9658873b" - integrity sha512-S9GQ9YVg4DWrgjujwiXBER6KqdqW5nZ1Bmt+YEePn5gEoPvoVrh6ojthpHYRjBJtGFqBSzRAQ9eVZLebT22Ozg== +"@abp/aspnetcore.mvc.ui.theme.basic@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-2.3.0.tgz#482c236565268d305c0c86399e837bdddecf97ad" + integrity sha512-PJqGAHllBoZv/97DalfMFQr4oPA6PatObaj/+oxkjUjQcPD4z2sJO5Z+d8t6plo3ZvjzMvwm+VwzhZgdJhtwKw== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "^2.2.0" + "@abp/aspnetcore.mvc.ui.theme.shared" "^2.3.0" -"@abp/aspnetcore.mvc.ui.theme.shared@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-2.2.0.tgz#e0df953853be2a184d323931573f9f98aebbaa62" - integrity sha512-urxziaCdvfEqN5cjiiM5f5dx2Yr+AoGqCJVCo0Okjl2dosdaj5DH4SBzMvKAaLXzo3Ep1h4b3Wvws4BThL/6rA== - dependencies: - "@abp/aspnetcore.mvc.ui" "^2.2.0" - "@abp/bootstrap" "^2.2.0" - "@abp/bootstrap-datepicker" "^2.2.0" - "@abp/datatables.net-bs4" "^2.2.0" - "@abp/font-awesome" "^2.2.0" - "@abp/jquery-form" "^2.2.0" - "@abp/jquery-validation-unobtrusive" "^2.2.0" - "@abp/lodash" "^2.2.0" - "@abp/luxon" "^2.2.0" - "@abp/malihu-custom-scrollbar-plugin" "^2.2.0" - "@abp/select2" "^2.2.0" - "@abp/sweetalert" "^2.2.0" - "@abp/timeago" "^2.2.0" - "@abp/toastr" "^2.2.0" - -"@abp/aspnetcore.mvc.ui@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-2.2.0.tgz#b2cdd421eed09ec1d30ae85e14434b7efc094ade" - integrity sha512-IO/AjhJu+LUa9zOaT8JlEnV+Pcp9oQ3q9kTq8kmMakC35vTIyvBpB3nnykXIOytZSyjsBgFYB/uMxPgBOjWagg== +"@abp/aspnetcore.mvc.ui.theme.shared@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-2.3.0.tgz#553ba6983308a8da3336226b8c20f9191da8a5cc" + integrity sha512-LLf89lXILM0MiSv/Mk4GXXl+eu+J5obTMfA9obLNiXD5fpwlYxnTtMwxh+sfZe9KcsZTuYEcXJgVk/A8HKydeg== + dependencies: + "@abp/aspnetcore.mvc.ui" "^2.3.0" + "@abp/bootstrap" "^2.3.0" + "@abp/bootstrap-datepicker" "^2.3.0" + "@abp/datatables.net-bs4" "^2.3.0" + "@abp/font-awesome" "^2.3.0" + "@abp/jquery-form" "^2.3.0" + "@abp/jquery-validation-unobtrusive" "^2.3.0" + "@abp/lodash" "^2.3.0" + "@abp/luxon" "^2.3.0" + "@abp/malihu-custom-scrollbar-plugin" "^2.3.0" + "@abp/select2" "^2.3.0" + "@abp/sweetalert" "^2.3.0" + "@abp/timeago" "^2.3.0" + "@abp/toastr" "^2.3.0" + +"@abp/aspnetcore.mvc.ui@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-2.3.0.tgz#166a1235b70b460be0c84171c229c1c5543dcbb7" + integrity sha512-5vitUltSBEVf97tJwonMkL6YQ0acKF2JEtbkfer3GN63MuU4+8ayYT8bwlieV6iC20dm69dCLI3dIfezvFnAfA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,135 +41,135 @@ path "^0.12.7" rimraf "^3.0.0" -"@abp/bootstrap-datepicker@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-2.2.0.tgz#a2f50b422824f18ed4b7e80be6852e2979119f8e" - integrity sha512-X9jT5mU42QFfVhOZdun7aEJUf3bMko6NsG3NFQVjqTqKH+iYGKfHPFpXD0gP/6Nb4KgZUdId8hSyQTZyOK2JEA== +"@abp/bootstrap-datepicker@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-2.3.0.tgz#fc235d1fb47e44cd6950cd6179b045fbd19b2a12" + integrity sha512-X7iWvwo7QqOp35IBz8WELDVfuVK110vZCcfuXwo0MbnH0aXS3+2CEUxqZnYHNcDrf+eXaact/IPKVl5Z/mA70A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-2.2.0.tgz#16e41d3432117bbcd9012c6f735c49c543255879" - integrity sha512-aRmluu6SkIl+JgCzSSJZrDPkYr6WWaQdY0iJAOz6NHtffa7Aumh1IUOrLVKL0T1pQn6QKs0Z7JDGyYMdh1HPkQ== +"@abp/bootstrap@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-2.3.0.tgz#e53ead2fae02cef04e8d44c1fd38d3368d0db8df" + integrity sha512-PsmCRUEF82Co903JxdvvPaBaiP+BFpQvMhM0PMqZzJ4AKGq0qG4kdCTAhFYhusy1e/UqBaNwCp7URDN/I+Xr7A== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" bootstrap "^4.3.1" -"@abp/core@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-2.2.0.tgz#4eea0a06458c90acb8566a11eb841fe65d15d256" - integrity sha512-tBGHa5CUr0ewT31g689RAfQ6Su2p4uyn2PzmrW/8lahBrvqkoCb41fkCDLQJkTY5rKPrEKZd/s9OoyOnS20DLg== +"@abp/core@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-2.3.0.tgz#3bb600c6b3e77060561d90db06e0052e04fa59b6" + integrity sha512-LGtOSYZqINZuX6Hy9vDDxxLJpEfZYyzdTxFdQt9UBtE/AuypILG8lOQjd96OJpRTeqyOUHBYo8AXtYzEyR6ZiA== -"@abp/datatables.net-bs4@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-2.2.0.tgz#c7cc49e889b295ae10fb24ed62b154ef79ffc85a" - integrity sha512-zjJRPqOCWPfkHt1QztfFHKrsTE9o6Je2EpfA7hRMej2FlGbsMWUxOqx/btK1vjD6YIU8DtVDpIdj1WvPOITQ4Q== +"@abp/datatables.net-bs4@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-2.3.0.tgz#f7268173bd5070471999e3e694509b49e4fc2e87" + integrity sha512-nA913hyrZRl8gQlGAmg+n7Z4iav4U+XrPgC0CfTUkZda7ReHj50jFZPQREfnmGdM77FVA+3y4q4LZELGB65GMQ== dependencies: - "@abp/datatables.net" "^2.2.0" + "@abp/datatables.net" "^2.3.0" datatables.net-bs4 "^1.10.20" -"@abp/datatables.net@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-2.2.0.tgz#22f9c7ca90c2d4af264483b4f8286b0feb7c3d52" - integrity sha512-L4MnpdloSWr/px3mvV75sxsxL68MyALB2LKdzCFMQWILCZVkxMmQb9LARINYIrn461Wrc+zbYWNEBD0MAq7flg== +"@abp/datatables.net@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-2.3.0.tgz#420ab84c54ca6b81a555c8525a96de62c54aca75" + integrity sha512-CAIF/+eQzCPltfQsvojOE5ojbbOv0u9MqtAIjgCiQ0ccCLe0j+68ZJhizDK1e3JA1o9jZXcBZnEWIGPdhpcRcA== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" datatables.net "^1.10.20" -"@abp/font-awesome@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-2.2.0.tgz#2de39e3c6c3e8c30394d82861761a66c5b4032f0" - integrity sha512-RT06MYUGgaWBEpW5c7wUcfMXgxcOHWdX/C01LDO/j6iVoKBuBHOkkvcUoTWII068ECrLYOkj+RyT59dCKm8FFw== +"@abp/font-awesome@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-2.3.0.tgz#30988351f7ca7ccf84b414e95848016df701bafe" + integrity sha512-lco8ArQi1xeKqypmvCubXrwO0/a+uP33vqQy+d3JRcmAXJgc5+AeQrzEq9KRcD/BGeWQUi8aJobW0rGFTAZxxQ== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" "@fortawesome/fontawesome-free" "^5.11.2" -"@abp/jquery-form@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-2.2.0.tgz#951653fac4013a7bbec065b5101b86d575e0eca7" - integrity sha512-ji44E3Ud0S3LNXn1WJ/Aw44qAIG7EITEW1KOe46oz+/awPpbiiA4dDDNleTvO2jI2/s8mNyR0bNanP6BUsc7tw== +"@abp/jquery-form@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-2.3.0.tgz#91e088fd1861c2a6224ce127c0fe0071baec9eef" + integrity sha512-cVPFdKpgAPSsG4mxrREfmslkgVJEZI9LpHask/6vy5gE/eFKZ9t6BZg+gop7bj6co3NcjekjDxhM7c0Iq+auyA== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" jquery-form "^4.2.2" -"@abp/jquery-validation-unobtrusive@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-2.2.0.tgz#6d39ba9f7bf026d1380796bf5dff76c8d16b42ce" - integrity sha512-SuS/dRRVz7ZR4HK/h9x0jRRVLPqXN0CPRGPdJZ1LJraXVEJ9/eDEGf1rMlHmEGt1FXXFTD01/zjisbweDE786w== +"@abp/jquery-validation-unobtrusive@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-2.3.0.tgz#18dcd10ac0d6678716b42170fca1810b23cebaab" + integrity sha512-CAR3zZ4Oxbu5MK7VO2QhZjwYW81NCEqOViKPpPzk/K2qkgphHbDpRei3XMbi+476KMhrAgQE6KzlrafWBtsdRA== dependencies: - "@abp/jquery-validation" "^2.2.0" + "@abp/jquery-validation" "^2.3.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-2.2.0.tgz#02bb8ba883e72c1204867ee4d1c1094bd91c4c4c" - integrity sha512-ypITQloO4iEDgqlA6qb3taj+7HMX0Cf/ACA2OvtrvOgJejx6J4wfrPjwuFZu1WWJ0xtc9yTdbovdcSVcQbIGaA== +"@abp/jquery-validation@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-2.3.0.tgz#af723abf5950729ef2763cecb7f5a9c5cbed0031" + integrity sha512-YvFCbvx9hWzi7BytYRBb/0tFdiibWT9CFz7vcHTrZiXjjSfZ1koh3DeXPErj091VR9X4q4nzRfCETA+0lINQbA== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" jquery-validation "^1.19.1" -"@abp/jquery@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-2.2.0.tgz#0e641b1109e78eff4c34331ca2b123b67cc30cbe" - integrity sha512-vEfRoFEAmDmRgSq98Y9EZExfQFSWtmjaHrodUu+MadTcRlnn+wHq8wwkKKxpj/eYtNc8aFORpyHMMH7uliAKxg== +"@abp/jquery@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-2.3.0.tgz#c17fcc3559a0285af3d6e534a5a076e99fc0ba37" + integrity sha512-376LnHco1kW6U094Tx3cbkM5y3ZAA02Lp3yrN/b0Qc1th84Xr2twix2YZG+GqcqlwdljH4ihdgpAM/ZO7REEaw== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" jquery "^3.4.1" -"@abp/lodash@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-2.2.0.tgz#af0a2ebcb28fd0a8c02da5026479d9370ed19719" - integrity sha512-wOMLqIpuq4a7ww7pB138G6YxBiTGBgxNW/IWGUiWbfgrr88cGPKIYYv/8O8mvr8PLNGjizNynuwQRj522yA3Dw== +"@abp/lodash@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-2.3.0.tgz#20219d872db7eba372cbaea168494fa54eb1cf12" + integrity sha512-I2KKEJaGwfpCKUox32lkllLRKgP25mszJuGpj571KTsvuT0Zo6BlNov4xoy8wbHC7vZF7dvkJpiCGg2yKnxc8Q== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" lodash "^4.17.15" -"@abp/luxon@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-2.2.0.tgz#0d0e78edc249853fa31eceecc00df2846a879aa9" - integrity sha512-WbOW0PcMks+WXRPWt/+H4pOa5waM331WkY0F+EJx8fpxemNGQNUEXLkuMXzN3MrN6LrplM9AZ9i+NRA9PWHbNw== +"@abp/luxon@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-2.3.0.tgz#5e08cdff00682f317707d9f34da6a1fb21402914" + integrity sha512-UAbh+HyVwr+ytJpJEddHp0aRpIKQIWknvrDmcyIOaTY6ZSJPZSxJlDmIC56d094JopeRf/+E/cTMMS5bM8nmrA== dependencies: luxon "^1.21.3" -"@abp/malihu-custom-scrollbar-plugin@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-2.2.0.tgz#e11fd46dccbb28d44fb199e880b91d27c94f1919" - integrity sha512-YDu/NLpIzMA96NDHxd27/+liTm3sow9M+oWH29+9JW8o/AEpXUH3T3AmoXXcTgsBlzLaewgHEFM8yxsAAFoj8Q== +"@abp/malihu-custom-scrollbar-plugin@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-2.3.0.tgz#1b2535ca6f30dd49ea5ec3de283f3ac4d1d5f6a0" + integrity sha512-dCeJMRn+zHhGi1Uwg0h0ET21+sZ/Zf2trwfVJrd8bXan5bMKPRd3UtXrJlxZg3NHqVJmUiwWe2dzEHt1fexCDQ== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-2.2.0.tgz#4639d4e5b72b1736fa4476bd9b6a78e036400421" - integrity sha512-tc87JyM0kvVF388kyGUjDby49Zrrb089jVRRipoIaxXeu4M1YxEFSKBEcUK1MohZWjVtWrNs8MoxPlfukaMpyw== +"@abp/select2@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-2.3.0.tgz#edc5ae4655ccdf6b9ec7546dd156cda33bf907d3" + integrity sha512-s7TMBe2zUndVkfDTD0cBX/F4Fm9alA1BUx7l0b2+CmbJkdIp3YkjA4Oqsi4RinpP6/vVSYpTiTGWX4cYogbcFw== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" select2 "^4.0.12" -"@abp/sweetalert@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-2.2.0.tgz#dfc60ba085522d8390e41b90bf5a3d474f4ae624" - integrity sha512-HS6TKOwP91UjzjZHaheurZ1AYUSMkQyCSmoX6g5LAK4eH8IIgpojVSp1AFCSPATrFsFWY/dzkDGcfu90FWsVBg== +"@abp/sweetalert@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-2.3.0.tgz#2120b1f98e2530afc65f6c11fb7ea8d087a98777" + integrity sha512-Kq7UAOwi2sH/lxIrwoEhUCt5n8OAv17SubLWE/Ud3gWgcSw5XSmAZb13S6e78yydlV89Ny3LeYeGjqfU6nnSug== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" sweetalert "^2.1.2" -"@abp/timeago@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-2.2.0.tgz#9a8297f36a46cdc4cc62f44d0fdc91b70def389c" - integrity sha512-8qjmKscsTvPznHKWEsddYxdSBiU+l+OgLG6vzMcSWqngYbDQGXqNA93BwJI2qiwd+FkNcfGgYg7CN7bcwzmaiw== +"@abp/timeago@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-2.3.0.tgz#79bb1019f135d3342916bb61f52f3be35914f11b" + integrity sha512-TogWr4bdFl/DsB3QLa1iOkRGmeWNPyR60buI3D+WSJGlEtbjU9L5I3cGDEWJGYOxPKU9WuqV4DiraBbq/xNGLw== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" timeago "^1.6.7" -"@abp/toastr@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-2.2.0.tgz#1cad83a89da244685b3c82adff64260b7ccf4742" - integrity sha512-HHfSaw4M/9zS+KgzxGvbHYiQ5qcJgpf21cRZEo16aUwnTeKr4SRaewAWryNn4dKcIO2YNrhzDLH+OYbEaJJlDQ== +"@abp/toastr@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-2.3.0.tgz#0c0201e00a8070b831a33fe9763e0fb3a1981523" + integrity sha512-MlS9KXPuo1vYW78QvJUR1CXGMq7qo2wGKRxZJEloxWTI8bg7zEZwa27LGJJmHLQacOqdhUP9c5t9D136eUhu6A== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" toastr "^2.1.4" "@fortawesome/fontawesome-free@^5.11.2": 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 6e36dde3bf..504aafc075 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": "^2.2.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "^2.3.0" } } \ 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 b3b0eb268b..3c0e460076 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@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-2.2.0.tgz#e7f4e57d2b17cc76388e9c56bc34d50c9658873b" - integrity sha512-S9GQ9YVg4DWrgjujwiXBER6KqdqW5nZ1Bmt+YEePn5gEoPvoVrh6ojthpHYRjBJtGFqBSzRAQ9eVZLebT22Ozg== +"@abp/aspnetcore.mvc.ui.theme.basic@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-2.3.0.tgz#482c236565268d305c0c86399e837bdddecf97ad" + integrity sha512-PJqGAHllBoZv/97DalfMFQr4oPA6PatObaj/+oxkjUjQcPD4z2sJO5Z+d8t6plo3ZvjzMvwm+VwzhZgdJhtwKw== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "^2.2.0" + "@abp/aspnetcore.mvc.ui.theme.shared" "^2.3.0" -"@abp/aspnetcore.mvc.ui.theme.shared@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-2.2.0.tgz#e0df953853be2a184d323931573f9f98aebbaa62" - integrity sha512-urxziaCdvfEqN5cjiiM5f5dx2Yr+AoGqCJVCo0Okjl2dosdaj5DH4SBzMvKAaLXzo3Ep1h4b3Wvws4BThL/6rA== - dependencies: - "@abp/aspnetcore.mvc.ui" "^2.2.0" - "@abp/bootstrap" "^2.2.0" - "@abp/bootstrap-datepicker" "^2.2.0" - "@abp/datatables.net-bs4" "^2.2.0" - "@abp/font-awesome" "^2.2.0" - "@abp/jquery-form" "^2.2.0" - "@abp/jquery-validation-unobtrusive" "^2.2.0" - "@abp/lodash" "^2.2.0" - "@abp/luxon" "^2.2.0" - "@abp/malihu-custom-scrollbar-plugin" "^2.2.0" - "@abp/select2" "^2.2.0" - "@abp/sweetalert" "^2.2.0" - "@abp/timeago" "^2.2.0" - "@abp/toastr" "^2.2.0" - -"@abp/aspnetcore.mvc.ui@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-2.2.0.tgz#b2cdd421eed09ec1d30ae85e14434b7efc094ade" - integrity sha512-IO/AjhJu+LUa9zOaT8JlEnV+Pcp9oQ3q9kTq8kmMakC35vTIyvBpB3nnykXIOytZSyjsBgFYB/uMxPgBOjWagg== +"@abp/aspnetcore.mvc.ui.theme.shared@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-2.3.0.tgz#553ba6983308a8da3336226b8c20f9191da8a5cc" + integrity sha512-LLf89lXILM0MiSv/Mk4GXXl+eu+J5obTMfA9obLNiXD5fpwlYxnTtMwxh+sfZe9KcsZTuYEcXJgVk/A8HKydeg== + dependencies: + "@abp/aspnetcore.mvc.ui" "^2.3.0" + "@abp/bootstrap" "^2.3.0" + "@abp/bootstrap-datepicker" "^2.3.0" + "@abp/datatables.net-bs4" "^2.3.0" + "@abp/font-awesome" "^2.3.0" + "@abp/jquery-form" "^2.3.0" + "@abp/jquery-validation-unobtrusive" "^2.3.0" + "@abp/lodash" "^2.3.0" + "@abp/luxon" "^2.3.0" + "@abp/malihu-custom-scrollbar-plugin" "^2.3.0" + "@abp/select2" "^2.3.0" + "@abp/sweetalert" "^2.3.0" + "@abp/timeago" "^2.3.0" + "@abp/toastr" "^2.3.0" + +"@abp/aspnetcore.mvc.ui@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-2.3.0.tgz#166a1235b70b460be0c84171c229c1c5543dcbb7" + integrity sha512-5vitUltSBEVf97tJwonMkL6YQ0acKF2JEtbkfer3GN63MuU4+8ayYT8bwlieV6iC20dm69dCLI3dIfezvFnAfA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,135 +41,135 @@ path "^0.12.7" rimraf "^3.0.0" -"@abp/bootstrap-datepicker@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-2.2.0.tgz#a2f50b422824f18ed4b7e80be6852e2979119f8e" - integrity sha512-X9jT5mU42QFfVhOZdun7aEJUf3bMko6NsG3NFQVjqTqKH+iYGKfHPFpXD0gP/6Nb4KgZUdId8hSyQTZyOK2JEA== +"@abp/bootstrap-datepicker@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-2.3.0.tgz#fc235d1fb47e44cd6950cd6179b045fbd19b2a12" + integrity sha512-X7iWvwo7QqOp35IBz8WELDVfuVK110vZCcfuXwo0MbnH0aXS3+2CEUxqZnYHNcDrf+eXaact/IPKVl5Z/mA70A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-2.2.0.tgz#16e41d3432117bbcd9012c6f735c49c543255879" - integrity sha512-aRmluu6SkIl+JgCzSSJZrDPkYr6WWaQdY0iJAOz6NHtffa7Aumh1IUOrLVKL0T1pQn6QKs0Z7JDGyYMdh1HPkQ== +"@abp/bootstrap@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-2.3.0.tgz#e53ead2fae02cef04e8d44c1fd38d3368d0db8df" + integrity sha512-PsmCRUEF82Co903JxdvvPaBaiP+BFpQvMhM0PMqZzJ4AKGq0qG4kdCTAhFYhusy1e/UqBaNwCp7URDN/I+Xr7A== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" bootstrap "^4.3.1" -"@abp/core@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-2.2.0.tgz#4eea0a06458c90acb8566a11eb841fe65d15d256" - integrity sha512-tBGHa5CUr0ewT31g689RAfQ6Su2p4uyn2PzmrW/8lahBrvqkoCb41fkCDLQJkTY5rKPrEKZd/s9OoyOnS20DLg== +"@abp/core@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-2.3.0.tgz#3bb600c6b3e77060561d90db06e0052e04fa59b6" + integrity sha512-LGtOSYZqINZuX6Hy9vDDxxLJpEfZYyzdTxFdQt9UBtE/AuypILG8lOQjd96OJpRTeqyOUHBYo8AXtYzEyR6ZiA== -"@abp/datatables.net-bs4@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-2.2.0.tgz#c7cc49e889b295ae10fb24ed62b154ef79ffc85a" - integrity sha512-zjJRPqOCWPfkHt1QztfFHKrsTE9o6Je2EpfA7hRMej2FlGbsMWUxOqx/btK1vjD6YIU8DtVDpIdj1WvPOITQ4Q== +"@abp/datatables.net-bs4@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-2.3.0.tgz#f7268173bd5070471999e3e694509b49e4fc2e87" + integrity sha512-nA913hyrZRl8gQlGAmg+n7Z4iav4U+XrPgC0CfTUkZda7ReHj50jFZPQREfnmGdM77FVA+3y4q4LZELGB65GMQ== dependencies: - "@abp/datatables.net" "^2.2.0" + "@abp/datatables.net" "^2.3.0" datatables.net-bs4 "^1.10.20" -"@abp/datatables.net@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-2.2.0.tgz#22f9c7ca90c2d4af264483b4f8286b0feb7c3d52" - integrity sha512-L4MnpdloSWr/px3mvV75sxsxL68MyALB2LKdzCFMQWILCZVkxMmQb9LARINYIrn461Wrc+zbYWNEBD0MAq7flg== +"@abp/datatables.net@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-2.3.0.tgz#420ab84c54ca6b81a555c8525a96de62c54aca75" + integrity sha512-CAIF/+eQzCPltfQsvojOE5ojbbOv0u9MqtAIjgCiQ0ccCLe0j+68ZJhizDK1e3JA1o9jZXcBZnEWIGPdhpcRcA== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" datatables.net "^1.10.20" -"@abp/font-awesome@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-2.2.0.tgz#2de39e3c6c3e8c30394d82861761a66c5b4032f0" - integrity sha512-RT06MYUGgaWBEpW5c7wUcfMXgxcOHWdX/C01LDO/j6iVoKBuBHOkkvcUoTWII068ECrLYOkj+RyT59dCKm8FFw== +"@abp/font-awesome@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-2.3.0.tgz#30988351f7ca7ccf84b414e95848016df701bafe" + integrity sha512-lco8ArQi1xeKqypmvCubXrwO0/a+uP33vqQy+d3JRcmAXJgc5+AeQrzEq9KRcD/BGeWQUi8aJobW0rGFTAZxxQ== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" "@fortawesome/fontawesome-free" "^5.11.2" -"@abp/jquery-form@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-2.2.0.tgz#951653fac4013a7bbec065b5101b86d575e0eca7" - integrity sha512-ji44E3Ud0S3LNXn1WJ/Aw44qAIG7EITEW1KOe46oz+/awPpbiiA4dDDNleTvO2jI2/s8mNyR0bNanP6BUsc7tw== +"@abp/jquery-form@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-2.3.0.tgz#91e088fd1861c2a6224ce127c0fe0071baec9eef" + integrity sha512-cVPFdKpgAPSsG4mxrREfmslkgVJEZI9LpHask/6vy5gE/eFKZ9t6BZg+gop7bj6co3NcjekjDxhM7c0Iq+auyA== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" jquery-form "^4.2.2" -"@abp/jquery-validation-unobtrusive@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-2.2.0.tgz#6d39ba9f7bf026d1380796bf5dff76c8d16b42ce" - integrity sha512-SuS/dRRVz7ZR4HK/h9x0jRRVLPqXN0CPRGPdJZ1LJraXVEJ9/eDEGf1rMlHmEGt1FXXFTD01/zjisbweDE786w== +"@abp/jquery-validation-unobtrusive@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-2.3.0.tgz#18dcd10ac0d6678716b42170fca1810b23cebaab" + integrity sha512-CAR3zZ4Oxbu5MK7VO2QhZjwYW81NCEqOViKPpPzk/K2qkgphHbDpRei3XMbi+476KMhrAgQE6KzlrafWBtsdRA== dependencies: - "@abp/jquery-validation" "^2.2.0" + "@abp/jquery-validation" "^2.3.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-2.2.0.tgz#02bb8ba883e72c1204867ee4d1c1094bd91c4c4c" - integrity sha512-ypITQloO4iEDgqlA6qb3taj+7HMX0Cf/ACA2OvtrvOgJejx6J4wfrPjwuFZu1WWJ0xtc9yTdbovdcSVcQbIGaA== +"@abp/jquery-validation@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-2.3.0.tgz#af723abf5950729ef2763cecb7f5a9c5cbed0031" + integrity sha512-YvFCbvx9hWzi7BytYRBb/0tFdiibWT9CFz7vcHTrZiXjjSfZ1koh3DeXPErj091VR9X4q4nzRfCETA+0lINQbA== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" jquery-validation "^1.19.1" -"@abp/jquery@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-2.2.0.tgz#0e641b1109e78eff4c34331ca2b123b67cc30cbe" - integrity sha512-vEfRoFEAmDmRgSq98Y9EZExfQFSWtmjaHrodUu+MadTcRlnn+wHq8wwkKKxpj/eYtNc8aFORpyHMMH7uliAKxg== +"@abp/jquery@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-2.3.0.tgz#c17fcc3559a0285af3d6e534a5a076e99fc0ba37" + integrity sha512-376LnHco1kW6U094Tx3cbkM5y3ZAA02Lp3yrN/b0Qc1th84Xr2twix2YZG+GqcqlwdljH4ihdgpAM/ZO7REEaw== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" jquery "^3.4.1" -"@abp/lodash@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-2.2.0.tgz#af0a2ebcb28fd0a8c02da5026479d9370ed19719" - integrity sha512-wOMLqIpuq4a7ww7pB138G6YxBiTGBgxNW/IWGUiWbfgrr88cGPKIYYv/8O8mvr8PLNGjizNynuwQRj522yA3Dw== +"@abp/lodash@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-2.3.0.tgz#20219d872db7eba372cbaea168494fa54eb1cf12" + integrity sha512-I2KKEJaGwfpCKUox32lkllLRKgP25mszJuGpj571KTsvuT0Zo6BlNov4xoy8wbHC7vZF7dvkJpiCGg2yKnxc8Q== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" lodash "^4.17.15" -"@abp/luxon@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-2.2.0.tgz#0d0e78edc249853fa31eceecc00df2846a879aa9" - integrity sha512-WbOW0PcMks+WXRPWt/+H4pOa5waM331WkY0F+EJx8fpxemNGQNUEXLkuMXzN3MrN6LrplM9AZ9i+NRA9PWHbNw== +"@abp/luxon@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-2.3.0.tgz#5e08cdff00682f317707d9f34da6a1fb21402914" + integrity sha512-UAbh+HyVwr+ytJpJEddHp0aRpIKQIWknvrDmcyIOaTY6ZSJPZSxJlDmIC56d094JopeRf/+E/cTMMS5bM8nmrA== dependencies: luxon "^1.21.3" -"@abp/malihu-custom-scrollbar-plugin@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-2.2.0.tgz#e11fd46dccbb28d44fb199e880b91d27c94f1919" - integrity sha512-YDu/NLpIzMA96NDHxd27/+liTm3sow9M+oWH29+9JW8o/AEpXUH3T3AmoXXcTgsBlzLaewgHEFM8yxsAAFoj8Q== +"@abp/malihu-custom-scrollbar-plugin@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-2.3.0.tgz#1b2535ca6f30dd49ea5ec3de283f3ac4d1d5f6a0" + integrity sha512-dCeJMRn+zHhGi1Uwg0h0ET21+sZ/Zf2trwfVJrd8bXan5bMKPRd3UtXrJlxZg3NHqVJmUiwWe2dzEHt1fexCDQ== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-2.2.0.tgz#4639d4e5b72b1736fa4476bd9b6a78e036400421" - integrity sha512-tc87JyM0kvVF388kyGUjDby49Zrrb089jVRRipoIaxXeu4M1YxEFSKBEcUK1MohZWjVtWrNs8MoxPlfukaMpyw== +"@abp/select2@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-2.3.0.tgz#edc5ae4655ccdf6b9ec7546dd156cda33bf907d3" + integrity sha512-s7TMBe2zUndVkfDTD0cBX/F4Fm9alA1BUx7l0b2+CmbJkdIp3YkjA4Oqsi4RinpP6/vVSYpTiTGWX4cYogbcFw== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" select2 "^4.0.12" -"@abp/sweetalert@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-2.2.0.tgz#dfc60ba085522d8390e41b90bf5a3d474f4ae624" - integrity sha512-HS6TKOwP91UjzjZHaheurZ1AYUSMkQyCSmoX6g5LAK4eH8IIgpojVSp1AFCSPATrFsFWY/dzkDGcfu90FWsVBg== +"@abp/sweetalert@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-2.3.0.tgz#2120b1f98e2530afc65f6c11fb7ea8d087a98777" + integrity sha512-Kq7UAOwi2sH/lxIrwoEhUCt5n8OAv17SubLWE/Ud3gWgcSw5XSmAZb13S6e78yydlV89Ny3LeYeGjqfU6nnSug== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" sweetalert "^2.1.2" -"@abp/timeago@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-2.2.0.tgz#9a8297f36a46cdc4cc62f44d0fdc91b70def389c" - integrity sha512-8qjmKscsTvPznHKWEsddYxdSBiU+l+OgLG6vzMcSWqngYbDQGXqNA93BwJI2qiwd+FkNcfGgYg7CN7bcwzmaiw== +"@abp/timeago@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-2.3.0.tgz#79bb1019f135d3342916bb61f52f3be35914f11b" + integrity sha512-TogWr4bdFl/DsB3QLa1iOkRGmeWNPyR60buI3D+WSJGlEtbjU9L5I3cGDEWJGYOxPKU9WuqV4DiraBbq/xNGLw== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" timeago "^1.6.7" -"@abp/toastr@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-2.2.0.tgz#1cad83a89da244685b3c82adff64260b7ccf4742" - integrity sha512-HHfSaw4M/9zS+KgzxGvbHYiQ5qcJgpf21cRZEo16aUwnTeKr4SRaewAWryNn4dKcIO2YNrhzDLH+OYbEaJJlDQ== +"@abp/toastr@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-2.3.0.tgz#0c0201e00a8070b831a33fe9763e0fb3a1981523" + integrity sha512-MlS9KXPuo1vYW78QvJUR1CXGMq7qo2wGKRxZJEloxWTI8bg7zEZwa27LGJJmHLQacOqdhUP9c5t9D136eUhu6A== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" toastr "^2.1.4" "@fortawesome/fontawesome-free@^5.11.2": 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 6e36dde3bf..504aafc075 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": "^2.2.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "^2.3.0" } } \ 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 157d0f2e34..a900560181 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@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-2.2.0.tgz#e7f4e57d2b17cc76388e9c56bc34d50c9658873b" - integrity sha512-S9GQ9YVg4DWrgjujwiXBER6KqdqW5nZ1Bmt+YEePn5gEoPvoVrh6ojthpHYRjBJtGFqBSzRAQ9eVZLebT22Ozg== +"@abp/aspnetcore.mvc.ui.theme.basic@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-2.3.0.tgz#482c236565268d305c0c86399e837bdddecf97ad" + integrity sha512-PJqGAHllBoZv/97DalfMFQr4oPA6PatObaj/+oxkjUjQcPD4z2sJO5Z+d8t6plo3ZvjzMvwm+VwzhZgdJhtwKw== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "^2.2.0" + "@abp/aspnetcore.mvc.ui.theme.shared" "^2.3.0" -"@abp/aspnetcore.mvc.ui.theme.shared@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-2.2.0.tgz#e0df953853be2a184d323931573f9f98aebbaa62" - integrity sha512-urxziaCdvfEqN5cjiiM5f5dx2Yr+AoGqCJVCo0Okjl2dosdaj5DH4SBzMvKAaLXzo3Ep1h4b3Wvws4BThL/6rA== - dependencies: - "@abp/aspnetcore.mvc.ui" "^2.2.0" - "@abp/bootstrap" "^2.2.0" - "@abp/bootstrap-datepicker" "^2.2.0" - "@abp/datatables.net-bs4" "^2.2.0" - "@abp/font-awesome" "^2.2.0" - "@abp/jquery-form" "^2.2.0" - "@abp/jquery-validation-unobtrusive" "^2.2.0" - "@abp/lodash" "^2.2.0" - "@abp/luxon" "^2.2.0" - "@abp/malihu-custom-scrollbar-plugin" "^2.2.0" - "@abp/select2" "^2.2.0" - "@abp/sweetalert" "^2.2.0" - "@abp/timeago" "^2.2.0" - "@abp/toastr" "^2.2.0" - -"@abp/aspnetcore.mvc.ui@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-2.2.0.tgz#b2cdd421eed09ec1d30ae85e14434b7efc094ade" - integrity sha512-IO/AjhJu+LUa9zOaT8JlEnV+Pcp9oQ3q9kTq8kmMakC35vTIyvBpB3nnykXIOytZSyjsBgFYB/uMxPgBOjWagg== +"@abp/aspnetcore.mvc.ui.theme.shared@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-2.3.0.tgz#553ba6983308a8da3336226b8c20f9191da8a5cc" + integrity sha512-LLf89lXILM0MiSv/Mk4GXXl+eu+J5obTMfA9obLNiXD5fpwlYxnTtMwxh+sfZe9KcsZTuYEcXJgVk/A8HKydeg== + dependencies: + "@abp/aspnetcore.mvc.ui" "^2.3.0" + "@abp/bootstrap" "^2.3.0" + "@abp/bootstrap-datepicker" "^2.3.0" + "@abp/datatables.net-bs4" "^2.3.0" + "@abp/font-awesome" "^2.3.0" + "@abp/jquery-form" "^2.3.0" + "@abp/jquery-validation-unobtrusive" "^2.3.0" + "@abp/lodash" "^2.3.0" + "@abp/luxon" "^2.3.0" + "@abp/malihu-custom-scrollbar-plugin" "^2.3.0" + "@abp/select2" "^2.3.0" + "@abp/sweetalert" "^2.3.0" + "@abp/timeago" "^2.3.0" + "@abp/toastr" "^2.3.0" + +"@abp/aspnetcore.mvc.ui@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-2.3.0.tgz#166a1235b70b460be0c84171c229c1c5543dcbb7" + integrity sha512-5vitUltSBEVf97tJwonMkL6YQ0acKF2JEtbkfer3GN63MuU4+8ayYT8bwlieV6iC20dm69dCLI3dIfezvFnAfA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,135 +41,135 @@ path "^0.12.7" rimraf "^3.0.0" -"@abp/bootstrap-datepicker@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-2.2.0.tgz#a2f50b422824f18ed4b7e80be6852e2979119f8e" - integrity sha512-X9jT5mU42QFfVhOZdun7aEJUf3bMko6NsG3NFQVjqTqKH+iYGKfHPFpXD0gP/6Nb4KgZUdId8hSyQTZyOK2JEA== +"@abp/bootstrap-datepicker@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-2.3.0.tgz#fc235d1fb47e44cd6950cd6179b045fbd19b2a12" + integrity sha512-X7iWvwo7QqOp35IBz8WELDVfuVK110vZCcfuXwo0MbnH0aXS3+2CEUxqZnYHNcDrf+eXaact/IPKVl5Z/mA70A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-2.2.0.tgz#16e41d3432117bbcd9012c6f735c49c543255879" - integrity sha512-aRmluu6SkIl+JgCzSSJZrDPkYr6WWaQdY0iJAOz6NHtffa7Aumh1IUOrLVKL0T1pQn6QKs0Z7JDGyYMdh1HPkQ== +"@abp/bootstrap@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-2.3.0.tgz#e53ead2fae02cef04e8d44c1fd38d3368d0db8df" + integrity sha512-PsmCRUEF82Co903JxdvvPaBaiP+BFpQvMhM0PMqZzJ4AKGq0qG4kdCTAhFYhusy1e/UqBaNwCp7URDN/I+Xr7A== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" bootstrap "^4.3.1" -"@abp/core@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-2.2.0.tgz#4eea0a06458c90acb8566a11eb841fe65d15d256" - integrity sha512-tBGHa5CUr0ewT31g689RAfQ6Su2p4uyn2PzmrW/8lahBrvqkoCb41fkCDLQJkTY5rKPrEKZd/s9OoyOnS20DLg== +"@abp/core@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-2.3.0.tgz#3bb600c6b3e77060561d90db06e0052e04fa59b6" + integrity sha512-LGtOSYZqINZuX6Hy9vDDxxLJpEfZYyzdTxFdQt9UBtE/AuypILG8lOQjd96OJpRTeqyOUHBYo8AXtYzEyR6ZiA== -"@abp/datatables.net-bs4@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-2.2.0.tgz#c7cc49e889b295ae10fb24ed62b154ef79ffc85a" - integrity sha512-zjJRPqOCWPfkHt1QztfFHKrsTE9o6Je2EpfA7hRMej2FlGbsMWUxOqx/btK1vjD6YIU8DtVDpIdj1WvPOITQ4Q== +"@abp/datatables.net-bs4@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-2.3.0.tgz#f7268173bd5070471999e3e694509b49e4fc2e87" + integrity sha512-nA913hyrZRl8gQlGAmg+n7Z4iav4U+XrPgC0CfTUkZda7ReHj50jFZPQREfnmGdM77FVA+3y4q4LZELGB65GMQ== dependencies: - "@abp/datatables.net" "^2.2.0" + "@abp/datatables.net" "^2.3.0" datatables.net-bs4 "^1.10.20" -"@abp/datatables.net@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-2.2.0.tgz#22f9c7ca90c2d4af264483b4f8286b0feb7c3d52" - integrity sha512-L4MnpdloSWr/px3mvV75sxsxL68MyALB2LKdzCFMQWILCZVkxMmQb9LARINYIrn461Wrc+zbYWNEBD0MAq7flg== +"@abp/datatables.net@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-2.3.0.tgz#420ab84c54ca6b81a555c8525a96de62c54aca75" + integrity sha512-CAIF/+eQzCPltfQsvojOE5ojbbOv0u9MqtAIjgCiQ0ccCLe0j+68ZJhizDK1e3JA1o9jZXcBZnEWIGPdhpcRcA== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" datatables.net "^1.10.20" -"@abp/font-awesome@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-2.2.0.tgz#2de39e3c6c3e8c30394d82861761a66c5b4032f0" - integrity sha512-RT06MYUGgaWBEpW5c7wUcfMXgxcOHWdX/C01LDO/j6iVoKBuBHOkkvcUoTWII068ECrLYOkj+RyT59dCKm8FFw== +"@abp/font-awesome@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-2.3.0.tgz#30988351f7ca7ccf84b414e95848016df701bafe" + integrity sha512-lco8ArQi1xeKqypmvCubXrwO0/a+uP33vqQy+d3JRcmAXJgc5+AeQrzEq9KRcD/BGeWQUi8aJobW0rGFTAZxxQ== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" "@fortawesome/fontawesome-free" "^5.11.2" -"@abp/jquery-form@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-2.2.0.tgz#951653fac4013a7bbec065b5101b86d575e0eca7" - integrity sha512-ji44E3Ud0S3LNXn1WJ/Aw44qAIG7EITEW1KOe46oz+/awPpbiiA4dDDNleTvO2jI2/s8mNyR0bNanP6BUsc7tw== +"@abp/jquery-form@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-2.3.0.tgz#91e088fd1861c2a6224ce127c0fe0071baec9eef" + integrity sha512-cVPFdKpgAPSsG4mxrREfmslkgVJEZI9LpHask/6vy5gE/eFKZ9t6BZg+gop7bj6co3NcjekjDxhM7c0Iq+auyA== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" jquery-form "^4.2.2" -"@abp/jquery-validation-unobtrusive@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-2.2.0.tgz#6d39ba9f7bf026d1380796bf5dff76c8d16b42ce" - integrity sha512-SuS/dRRVz7ZR4HK/h9x0jRRVLPqXN0CPRGPdJZ1LJraXVEJ9/eDEGf1rMlHmEGt1FXXFTD01/zjisbweDE786w== +"@abp/jquery-validation-unobtrusive@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-2.3.0.tgz#18dcd10ac0d6678716b42170fca1810b23cebaab" + integrity sha512-CAR3zZ4Oxbu5MK7VO2QhZjwYW81NCEqOViKPpPzk/K2qkgphHbDpRei3XMbi+476KMhrAgQE6KzlrafWBtsdRA== dependencies: - "@abp/jquery-validation" "^2.2.0" + "@abp/jquery-validation" "^2.3.0" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-2.2.0.tgz#02bb8ba883e72c1204867ee4d1c1094bd91c4c4c" - integrity sha512-ypITQloO4iEDgqlA6qb3taj+7HMX0Cf/ACA2OvtrvOgJejx6J4wfrPjwuFZu1WWJ0xtc9yTdbovdcSVcQbIGaA== +"@abp/jquery-validation@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-2.3.0.tgz#af723abf5950729ef2763cecb7f5a9c5cbed0031" + integrity sha512-YvFCbvx9hWzi7BytYRBb/0tFdiibWT9CFz7vcHTrZiXjjSfZ1koh3DeXPErj091VR9X4q4nzRfCETA+0lINQbA== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" jquery-validation "^1.19.1" -"@abp/jquery@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-2.2.0.tgz#0e641b1109e78eff4c34331ca2b123b67cc30cbe" - integrity sha512-vEfRoFEAmDmRgSq98Y9EZExfQFSWtmjaHrodUu+MadTcRlnn+wHq8wwkKKxpj/eYtNc8aFORpyHMMH7uliAKxg== +"@abp/jquery@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-2.3.0.tgz#c17fcc3559a0285af3d6e534a5a076e99fc0ba37" + integrity sha512-376LnHco1kW6U094Tx3cbkM5y3ZAA02Lp3yrN/b0Qc1th84Xr2twix2YZG+GqcqlwdljH4ihdgpAM/ZO7REEaw== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" jquery "^3.4.1" -"@abp/lodash@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-2.2.0.tgz#af0a2ebcb28fd0a8c02da5026479d9370ed19719" - integrity sha512-wOMLqIpuq4a7ww7pB138G6YxBiTGBgxNW/IWGUiWbfgrr88cGPKIYYv/8O8mvr8PLNGjizNynuwQRj522yA3Dw== +"@abp/lodash@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-2.3.0.tgz#20219d872db7eba372cbaea168494fa54eb1cf12" + integrity sha512-I2KKEJaGwfpCKUox32lkllLRKgP25mszJuGpj571KTsvuT0Zo6BlNov4xoy8wbHC7vZF7dvkJpiCGg2yKnxc8Q== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" lodash "^4.17.15" -"@abp/luxon@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-2.2.0.tgz#0d0e78edc249853fa31eceecc00df2846a879aa9" - integrity sha512-WbOW0PcMks+WXRPWt/+H4pOa5waM331WkY0F+EJx8fpxemNGQNUEXLkuMXzN3MrN6LrplM9AZ9i+NRA9PWHbNw== +"@abp/luxon@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-2.3.0.tgz#5e08cdff00682f317707d9f34da6a1fb21402914" + integrity sha512-UAbh+HyVwr+ytJpJEddHp0aRpIKQIWknvrDmcyIOaTY6ZSJPZSxJlDmIC56d094JopeRf/+E/cTMMS5bM8nmrA== dependencies: luxon "^1.21.3" -"@abp/malihu-custom-scrollbar-plugin@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-2.2.0.tgz#e11fd46dccbb28d44fb199e880b91d27c94f1919" - integrity sha512-YDu/NLpIzMA96NDHxd27/+liTm3sow9M+oWH29+9JW8o/AEpXUH3T3AmoXXcTgsBlzLaewgHEFM8yxsAAFoj8Q== +"@abp/malihu-custom-scrollbar-plugin@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-2.3.0.tgz#1b2535ca6f30dd49ea5ec3de283f3ac4d1d5f6a0" + integrity sha512-dCeJMRn+zHhGi1Uwg0h0ET21+sZ/Zf2trwfVJrd8bXan5bMKPRd3UtXrJlxZg3NHqVJmUiwWe2dzEHt1fexCDQ== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-2.2.0.tgz#4639d4e5b72b1736fa4476bd9b6a78e036400421" - integrity sha512-tc87JyM0kvVF388kyGUjDby49Zrrb089jVRRipoIaxXeu4M1YxEFSKBEcUK1MohZWjVtWrNs8MoxPlfukaMpyw== +"@abp/select2@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-2.3.0.tgz#edc5ae4655ccdf6b9ec7546dd156cda33bf907d3" + integrity sha512-s7TMBe2zUndVkfDTD0cBX/F4Fm9alA1BUx7l0b2+CmbJkdIp3YkjA4Oqsi4RinpP6/vVSYpTiTGWX4cYogbcFw== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" select2 "^4.0.12" -"@abp/sweetalert@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-2.2.0.tgz#dfc60ba085522d8390e41b90bf5a3d474f4ae624" - integrity sha512-HS6TKOwP91UjzjZHaheurZ1AYUSMkQyCSmoX6g5LAK4eH8IIgpojVSp1AFCSPATrFsFWY/dzkDGcfu90FWsVBg== +"@abp/sweetalert@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-2.3.0.tgz#2120b1f98e2530afc65f6c11fb7ea8d087a98777" + integrity sha512-Kq7UAOwi2sH/lxIrwoEhUCt5n8OAv17SubLWE/Ud3gWgcSw5XSmAZb13S6e78yydlV89Ny3LeYeGjqfU6nnSug== dependencies: - "@abp/core" "^2.2.0" + "@abp/core" "^2.3.0" sweetalert "^2.1.2" -"@abp/timeago@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-2.2.0.tgz#9a8297f36a46cdc4cc62f44d0fdc91b70def389c" - integrity sha512-8qjmKscsTvPznHKWEsddYxdSBiU+l+OgLG6vzMcSWqngYbDQGXqNA93BwJI2qiwd+FkNcfGgYg7CN7bcwzmaiw== +"@abp/timeago@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-2.3.0.tgz#79bb1019f135d3342916bb61f52f3be35914f11b" + integrity sha512-TogWr4bdFl/DsB3QLa1iOkRGmeWNPyR60buI3D+WSJGlEtbjU9L5I3cGDEWJGYOxPKU9WuqV4DiraBbq/xNGLw== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" timeago "^1.6.7" -"@abp/toastr@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-2.2.0.tgz#1cad83a89da244685b3c82adff64260b7ccf4742" - integrity sha512-HHfSaw4M/9zS+KgzxGvbHYiQ5qcJgpf21cRZEo16aUwnTeKr4SRaewAWryNn4dKcIO2YNrhzDLH+OYbEaJJlDQ== +"@abp/toastr@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-2.3.0.tgz#0c0201e00a8070b831a33fe9763e0fb3a1981523" + integrity sha512-MlS9KXPuo1vYW78QvJUR1CXGMq7qo2wGKRxZJEloxWTI8bg7zEZwa27LGJJmHLQacOqdhUP9c5t9D136eUhu6A== dependencies: - "@abp/jquery" "^2.2.0" + "@abp/jquery" "^2.3.0" toastr "^2.1.4" "@fortawesome/fontawesome-free@^5.11.2": diff --git a/templates/app/react-native/package.json b/templates/app/react-native/package.json index 09f9159570..14e799b900 100644 --- a/templates/app/react-native/package.json +++ b/templates/app/react-native/package.json @@ -24,7 +24,7 @@ "formik": "^2.1.2", "i18n-js": "^3.5.1", "lodash": "^4.17.15", - "native-base": "^2.13.8", + "native-base": "2.13.8", "prop-types": "^15.7.2", "react": "~16.9.0", "react-dom": "~16.9.0", diff --git a/templates/app/react-native/src/screens/CreateUpdateTenant/CreateUpdateTenantForm.js b/templates/app/react-native/src/screens/CreateUpdateTenant/CreateUpdateTenantForm.js index ff5801f914..45710eb594 100644 --- a/templates/app/react-native/src/screens/CreateUpdateTenant/CreateUpdateTenantForm.js +++ b/templates/app/react-native/src/screens/CreateUpdateTenant/CreateUpdateTenantForm.js @@ -1,8 +1,8 @@ import { Formik } from 'formik'; import i18n from 'i18n-js'; -import { Container, Content, Input, InputGroup, Label } from 'native-base'; +import { Container, Content, Input, InputGroup, Label, Item, Icon } from 'native-base'; import PropTypes from 'prop-types'; -import React, { useRef } from 'react'; +import React, { useRef, useState } from 'react'; import { StyleSheet } from 'react-native'; import * as Yup from 'yup'; import FormButtons from '../../components/FormButtons/FormButtons'; @@ -15,7 +15,10 @@ const validations = { function CreateUpdateTenantForm({ editingTenant = {}, submit, remove }) { const tenantNameRef = useRef(); + const adminEmailRef = useRef(); + const adminPasswordRef = useRef(); + const [showAdminPassword, setShowAdminPassword] = useState(false); const hasRemovePermission = usePermission('AbpTenantManagement.Tenants.Delete'); const onSubmit = values => { @@ -25,11 +28,25 @@ function CreateUpdateTenantForm({ editingTenant = {}, submit, remove }) { }); }; + const adminEmailAddressValidation = Yup.lazy(() => + Yup.string() + .required('AbpAccount::ThisFieldIsRequired.') + .email('AbpAccount::ThisFieldIsNotAValidEmailAddress.'), + ); + + const adminPasswordValidation = Yup.lazy(() => + Yup.string().required('AbpAccount::ThisFieldIsRequired.'), + ); + return ( + !editingTenant.id ? adminEmailRef.current._root.focus() : null + } + returnKeyType={!editingTenant.id ? 'next' : 'done'} onChangeText={handleChange('name')} onBlur={handleBlur('name')} value={values.name} /> {errors.name} + {!editingTenant.id ? ( + <> + + + adminPasswordRef.current._root.focus()} + returnKeyType="next" + onChangeText={handleChange('adminEmailAddress')} + onBlur={handleBlur('adminEmailAddress')} + value={values.adminEmailAddress} + /> + + {errors.adminEmailAddress} + + + + + setShowAdminPassword(!showAdminPassword)} + /> + + + {errors.adminPassword} + + ) : null}