Browse Source

Merge branch 'dev' into abp-prerelease-compatibility

pull/4782/head
Yunus Emre Kalkan 6 years ago
parent
commit
b570f4482f
  1. 73
      docs/en/Blob-Storing-Aliyun.md
  2. 2
      docs/en/Options.md
  3. 2
      docs/en/Tutorials/Part-1.md
  4. 4
      docs/en/docs-nav.json
  5. 72
      docs/zh-Hans/Blob-Storing-Aliyun.md
  6. 3
      docs/zh-Hans/Connection-Strings.md
  7. 4
      docs/zh-Hans/docs-nav.json
  8. 50
      framework/Volo.Abp.sln
  9. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteFooterTagHelper.cs
  10. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteParagraphTagHelper.cs
  11. 3
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteTagHelperService.cs
  12. 7
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs
  13. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupTagHelperService.cs
  14. 3
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonToolbarTagHelperService.cs
  15. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs
  16. 3
      framework/src/Volo.Abp.BlobStoring.Aliyun/FodyWeavers.xml
  17. 30
      framework/src/Volo.Abp.BlobStoring.Aliyun/FodyWeavers.xsd
  18. 27
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj
  19. 14
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AbpBlobStoringAliyunModule.cs
  20. 25
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobContainerConfigurationExtensions.cs
  21. 51
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobNamingNormalizer.cs
  22. 107
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProvider.cs
  23. 105
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProviderConfiguration.cs
  24. 16
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProviderConfigurationNames.cs
  25. 30
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AssumeRoleCredentialsCacheItem.cs
  26. 22
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/DefaultAliyunBlobNameCalculator.cs
  27. 68
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/DefaultOssClientFactory.cs
  28. 7
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/IAliyunBlobNameCalculator.cs
  29. 9
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/IOssClientFactory.cs
  30. 3
      framework/src/Volo.Abp.BlobStoring.Minio/FodyWeavers.xml
  31. 30
      framework/src/Volo.Abp.BlobStoring.Minio/FodyWeavers.xsd
  32. 21
      framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj
  33. 10
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioModule.cs
  34. 22
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/DefaultMinioBlobNameCalculator.cs
  35. 7
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/IMinioBlobNameCalculator.cs
  36. 24
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobContainerConfigurationExtensions.cs
  37. 52
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobNamingNormalizer.cs
  38. 145
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs
  39. 63
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProviderConfiguration.cs
  40. 12
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProviderConfigurationNames.cs
  41. 15
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ModuleInfoProvider.cs
  42. 2
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs
  43. 2
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/BasicRepositoryBase.cs
  44. 9
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/IReadOnlyBasicRepository.cs
  45. 16
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs
  46. 48
      framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs
  47. 15
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs
  48. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
  49. 284
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js
  50. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map
  51. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js
  52. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map
  53. 222
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
  54. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
  55. 284
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js
  56. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map
  57. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js
  58. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map
  59. 232
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
  60. 24
      framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo.Abp.BlobStoring.Aliyun.Tests.csproj
  61. 19
      framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo/Abp/BlobStoring/Aliyun/AbpBlobStoringAliyunTestBase.cs
  62. 84
      framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo/Abp/BlobStoring/Aliyun/AbpBlobStoringAliyunTestModule.cs
  63. 17
      framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo/Abp/BlobStoring/Aliyun/AliyunBlobContainer_Tests.cs
  64. 55
      framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo/Abp/BlobStoring/Aliyun/AliyunBlobNameCalculator_Tests.cs
  65. 58
      framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo/Abp/BlobStoring/Aliyun/DefaultAliyunBlobNamingNormalizerProvider_Tests.cs
  66. 17
      framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo.Abp.BlobStoring.Minio.Tests.csproj
  67. 20
      framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioTestBase.cs
  68. 81
      framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioTestModule.cs
  69. 57
      framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/DefaultMinioBlobNamingNormalizerProvider_Tests.cs
  70. 16
      framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/MinioBlobContainer_Tests.cs
  71. 56
      framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/MinioBlobNameCalculator_Tests.cs
  72. 6
      framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Repositories/RepositoryRegistration_Tests.cs
  73. 14
      framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/Repository_Basic_Tests.cs
  74. 5
      modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json
  75. 2
      modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs
  76. 9
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml
  77. 4
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs
  78. 7
      modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Volo.BloggingTestApp.EntityFrameworkCore.csproj
  79. 2
      modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj
  80. 4
      modules/blogging/app/Volo.BloggingTestApp/package.json
  81. 284
      modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.js
  82. 2
      modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.js.map
  83. 2
      modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js
  84. 2
      modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map
  85. 326
      modules/blogging/app/Volo.BloggingTestApp/yarn.lock
  86. 2
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
  87. 284
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js
  88. 2
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map
  89. 2
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js
  90. 2
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map
  91. 232
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
  92. 35
      modules/cms-kit/Volo.CmsKit.sln
  93. 4
      modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/appsettings.json
  94. 2
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/appsettings.json
  95. 284
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js
  96. 2
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map
  97. 2
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js
  98. 2
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map
  99. 232
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
  100. 2
      modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json

73
docs/en/Blob-Storing-Aliyun.md

@ -0,0 +1,73 @@
# BLOB Storing Aliyun Provider
BLOB Storing Aliyun Provider can store BLOBs in [Aliyun Blob storage](https://help.aliyun.com/product/31815.html).
> Read the [BLOB Storing document](Blob-Storing.md) to understand how to use the BLOB storing system. This document only covers how to configure containers to use a Aliyun BLOB as the storage provider.
## Installation
Use the ABP CLI to add [Volo.Abp.BlobStoring.Aliyun](https://www.nuget.org/packages/Volo.Abp.BlobStoring.Aliyun) NuGet package to your project:
* Install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) if you haven't installed before.
* Open a command line (terminal) in the directory of the `.csproj` file you want to add the `Volo.Abp.BlobStoring.Aliyun` package.
* Run `abp add-package Volo.Abp.BlobStoring.Aliyun` command.
If you want to do it manually, install the [Volo.Abp.BlobStoring.Aliyun](https://www.nuget.org/packages/Volo.Abp.BlobStoring.Aliyun) NuGet package to your project and add `[DependsOn(typeof(AbpBlobStoringAliyunModule))]` to the [ABP module](Module-Development-Basics.md) class inside your project.
## Configuration
Configuration is done in the `ConfigureServices` method of your [module](Module-Development-Basics.md) class, as explained in the [BLOB Storing document](Blob-Storing.md).
**Example: Configure to use the Aliyun storage provider by default**
````csharp
Configure<AbpBlobStoringOptions>(options =>
{
options.Containerscontainer.UseAliyun(aliyun =>
{
aliyun.AccessKeyId = "your aliyun access key id";
aliyun.AccessKeySecret = "your aliyun access key secret";
aliyun.Endpoint = "your oss endpoint";
aliyun.RegionId = "your sts region id";
aliyun.RoleArn = "the arn of ram role";
aliyun.RoleSessionName = "the name of the certificate";
aliyun.Policy = "policy";
aliyun.DurationSeconds = "expiration date";
aliyun.ContainerName = "your aliyun container name";
aliyun.CreateContainerIfNotExists = false;
});
});
````
> See the [BLOB Storing document](Blob-Storing.md) to learn how to configure this provider for a specific container.
### Options
* **AccessKeyId** ([NotNull]string): AccessKey is the key to access the Alibaba Cloud API. It has full permissions for the account. Please keep it safe! Recommend to follow [Alibaba Cloud security best practicess](https://help.aliyun.com/document_detail/102600.html),Use RAM sub-user AccessKey to call API.
* **AccessKeySecret** ([NotNull]string): Same as above.
* **Endpoint** ([NotNull]string): Endpoint is the external domain name of OSS. See the [document](https://help.aliyun.com/document_detail/31837.html) for details.
* **RegionId** (string): Access address of STS service. See the [document](https://help.aliyun.com/document_detail/66053.html) for details.
* **RoleArn** ([NotNull]string): STS required role ARN. See the [document](https://help.aliyun.com/document_detail/100624.html) for details.
* **RoleSessionName** ([NotNull]string): Used to identify the temporary access credentials, it is recommended to use different application users to distinguish.
* **Policy** (string): Additional permission restrictions. See the [document](https://help.aliyun.com/document_detail/100680.html) for details.
* **DurationSeconds** (int): Validity period(s) of a temporary access certificate,minimum is 900 and the maximum is 3600. **note**: Using subaccounts operated OSS,if the value is 0.
* **ContainerName** (string): You can specify the container name in Aliyun. If this is not specified, it uses the name of the BLOB container defined with the `BlogContainerName` attribute (see the [BLOB storing document](Blob-Storing.md)). Please note that Aliyun has some **rules for naming containers**. A container name must be a valid DNS name, conforming to the [following naming rules](https://help.aliyun.com/knowledge_detail/39668.html):
* Container names must start or end with a letter or number, and can contain only letters, numbers, and the dash (-) character.
* Container names Must start and end with lowercase letters and numbers.
* Container names must be from **3** through **63** characters long.
* **CreateContainerIfNotExists** (bool): Default value is `false`, If a container does not exist in Aliyun, `AliyunBlobProvider` will try to create it.
## Aliyun Blob Name Calculator
Aliyun Blob Provider organizes BLOB name and implements some conventions. The full name of a BLOB is determined by the following rules by default:
* Appends `host` string if [current tenant](Multi-Tenancy.md) is `null` (or multi-tenancy is disabled for the container - see the [BLOB Storing document](Blob-Storing.md) to learn how to disable multi-tenancy for a container).
* Appends `tenants/<tenant-id>` string if current tenant is not `null`.
* Appends the BLOB name.
## Other Services
* `AliyunBlobProvider` is the main service that implements the Aliyun BLOB storage provider, if you want to override/replace it via [dependency injection](Dependency-Injection.md) (don't replace `IBlobProvider` interface, but replace `AliyunBlobProvider` class).
* `IAliyunBlobNameCalculator` is used to calculate the full BLOB name (that is explained above). It is implemented by the `DefaultAliyunBlobNameCalculator` by default.
* `IOssClientFactory` is used create OSS client. It is implemented by the `DefaultOssClientFactory` by default. You can override/replace it,if you want customize.

2
docs/en/Options.md

@ -80,7 +80,7 @@ If you are developing a module, you may need to allow developers to set some opt
For such cases, ABP introduces the `PreConfigure<TOptions>` and the `ExecutePreConfiguredActions<TOptions>` extension methods for the `IServiceCollection`. The pattern works as explained below.
1. Define a plan option class in your module. Example:
Define a pre option class in your module. Example:
````csharp
public class MyPreOptions

2
docs/en/Tutorials/Part-1.md

@ -453,7 +453,7 @@ In a typical ASP.NET Core application, you create **API Controllers** to expose
ABP can [**automagically**](../API/Auto-API-Controllers.md) configures your application services as MVC API Controllers by convention.
#### Swagger UI
### Swagger UI
The startup template is configured to run the [Swagger UI](https://swagger.io/tools/swagger-ui/) using the [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) library. Run the application by pressing `CTRL+F5` and navigate to `https://localhost:<port>/swagger/` on your browser. (Replace `<port>` with your own port number.)

4
docs/en/docs-nav.json

@ -216,6 +216,10 @@
"text": "Azure Provider",
"path": "Blob-Storing-Azure.md"
},
{
"text": "Aliyun Provider",
"path": "Blob-Storing-Aliyun.md"
},
{
"text": "Create a Custom Provider",
"path": "Blob-Storing-Custom-Provider.md"

72
docs/zh-Hans/Blob-Storing-Aliyun.md

@ -0,0 +1,72 @@
# BLOB Storing Aliyun提供程序
BLOB存储Aliyun提供程序可以将BLOB存储在[Aliyun Blob storage](https://help.aliyun.com/product/31815.html)中.
> 阅读[BLOB存储文档](Blob-Storing.md)了解如何使用BLOB存储系统. 本文档仅介绍如何为容器配置Aliyun提供程序.
## 安装
使用ABP CLI添加[Volo.Abp.BlobStoring.Aliyun](https://www.nuget.org/packages/Volo.Abp.BlobStoring.Aliyun)NuGet包到你的项目:
* 安装 [ABP CLI](https://docs.abp.io/en/abp/latest/CLI), 如果你还没有安装.
* 在要添加 `Volo.Abp.BlobStoring.Aliyun` 包的 `.csproj` 文件目录打开命令行.
* 运行 `Volo.Abp.BlobStoring.Aliyun` 命令.
如果要手动安装,在你的项目中安装 `Volo.Abp.BlobStoring.Aliyun` NuGet包然后将`[DependsOn(typeof(AbpBlobStoringAliyunModule))]`添加到项目内的[ABP模块](Module-Development-Basics.md)类中.
## 配置
如同[BLOB存储文档](Blob-Storing.md)所述,配置是在[模块](Module-Development-Basics.md)类的 `ConfigureServices` 方法完成的.
**示例: 配置为默认使用Aliyun存储提供程序**
````csharp
Configure<AbpBlobStoringOptions>(options =>
{
options.Containerscontainer.UseAliyun(aliyun =>
{
aliyun.AccessKeyId = "your aliyun access key id";
aliyun.AccessKeySecret = "your aliyun access key secret";
aliyun.Endpoint = "your oss endpoint";
aliyun.RegionId = "your sts region id";
aliyun.RoleArn = "the arn of ram role";
aliyun.RoleSessionName = "the name of the certificate";
aliyun.Policy = "policy";
aliyun.DurationSeconds = "expiration date";
aliyun.ContainerName = "your aliyun container name";
aliyun.CreateContainerIfNotExists = false;
});
});
````
> 参阅[BLOB存储文档](Blob-Storing.md) 学习如何为指定容器配置提供程序.
### 选项
* **AccessKeyId** ([NotNull]string): 云账号AccessKey是访问阿里云API的密钥,具有该账户完全的权限,请你务必妥善保管!强烈建议遵循[阿里云安全最佳实践](https://help.aliyun.com/document_detail/102600.html),使用RAM子用户AccessKey来进行API调用.
* **AccessKeySecret** ([NotNull]string): 同上.
* **Endpoint** ([NotNull]string): Endpoint表示OSS对外服务的访问域名. [访问域名和数据中心](https://help.aliyun.com/document_detail/31837.html)
* **RegionId** (string): STS服务的接入地址,每个地址的功能都相同,请尽量在同地域进行调用. [接入地址](https://help.aliyun.com/document_detail/66053.html)
* **RoleArn** ([NotNull]string): STS所需角色ARN. [STS临时授权访问OSS](https://help.aliyun.com/document_detail/100624.html)
* **RoleSessionName** ([NotNull]string): 用来标识临时访问凭证的名称,建议使用不同的应用程序用户来区分.
* **Policy** (string): 在扮演角色的时候额外添加的权限限制. 请参见[基于RAM Policy的权限控制](https://help.aliyun.com/document_detail/100680.html).
* **DurationSeconds** (int): 设置临时访问凭证的有效期,单位是s,最小为900,最大为3600. **注**:为0则使用子账号操作OSS.
* **ContainerName** (string): 你可以在aliyun中指定容器名称. 如果没有指定它将使用 `BlogContainerName` 属性定义的BLOB容器的名称(请参阅[BLOB存储文档](Blob-Storing.md)). 请注意Aliyun有一些**命名容器的规则**,容器名称必须是有效的DNS名称,[符合以下命名规则](https://help.aliyun.com/knowledge_detail/39668.html):
* 只能包含小写字母,数字和短横线(-)
* 必须以小写字母和数字开头和结尾
* Bucket名称的长度限制在**3**到**63**个字符之间
* **CreateContainerIfNotExists** (bool): 默认值为 `false`, 如果aliyun中不存在容器, `AliyunBlobProvider` 将尝试创建它.
## Aliyun BLOB 名称计算器
Aliyun BLOB提供程序组织BLOB名称并实现一些约定. 默认情况下BLOB的全名由以下规则确定:
* 如果当前租户为 `null`(或容器禁用多租户 - 请参阅[BLOB存储文档](Blob-Storing.md) 了解如何禁用容器的多租户),则追加 `host` 字符串.
* 如果当前租户不为 `null`,则追加 `tenants/<tenant-id>` 字符串.
* 追加 BLOB 名称.
## 其他服务
* `AliyunBlobProvider` 是实现Aliyun BLOB存储提供程序的主要服务,如果你想要通过[依赖注入](Dependency-Injection.md)覆盖/替换它(不要替换 `IBlobProvider` 接口,而是替换 `AliyunBlobProvider` 类).
* `IAliyunBlobNameCalculator` 服务用于计算文件路径. 默认实现是 `DefaultAliyunBlobNameCalculator`. 如果你想自定义文件路径计算,可以替换/覆盖它.
* `IOssClientFactory` 服务用于生成OSS客户端. 默认实现是 `DefaultOssClientFactory` . 如果你想自定义OSS客户端生成,可以替换/覆盖它.

3
docs/zh-Hans/Connection-Strings.md

@ -84,7 +84,6 @@ public class IdentityServerDbContext
ABP定义了 `IConnectionStringResolver`,并在需要连接字符串时使用它. 有两个预构建的实现:
* `DefaultConnectionStringResolver` 根据上面"配置连接字符串"一节中定义的规则,使用 `AbpDbConnectionOptions` 选择连接字符串.
* `MultiTenantConnectionStringResolver` used for multi-tenant applications and tries to get the configured connection string for the current tenant if available. It uses the `ITenantStore` to find the connection strings. It inherits from the `DefaultConnectionStringResolver` and fallbacks to the base logic if no connection string specified for the current tenant.
* `MultiTenantConnectionStringResolver` 用于多租户应用程序,并尝试获取当前租户的已配置连接字符串(如果有). 它使用 `ITenantStore` 查找连接字符串. 它继承了 `DefaultConnectionStringResolver`, 如果没有为当前租户指定连接字符串则回退到基本逻辑.
如果需要自定义逻辑来确定连接字符串,可以实现 `IConnectionStringResolver` 接口(也可以从现有类派生)并使用[依赖注入](Dependency-Injection.md)系统替换现有实现.
如果需要自定义逻辑来确定连接字符串,可以实现 `IConnectionStringResolver` 接口(也可以从现有类派生)并使用[依赖注入](Dependency-Injection.md)系统替换现有实现.

4
docs/zh-Hans/docs-nav.json

@ -210,6 +210,10 @@
"text": "Azure提供程序",
"path": "Blob-Storing-Azure.md"
},
{
"text": "Aliyun提供程序",
"path": "Blob-Storing-Aliyun.md"
},
{
"text": "创建自定义提供程序",
"path": "Blob-Storing-Custom-Provider.md"

50
framework/Volo.Abp.sln

@ -289,27 +289,35 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.SignalR
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.SignalR.Tests", "test\Volo.Abp.AspNetCore.SignalR.Tests\Volo.Abp.AspNetCore.SignalR.Tests.csproj", "{8B758716-DCC9-4223-8421-5588D1597487}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests", "test\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests.csproj", "{79323211-E658-493E-9863-035AA4C3F913}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests", "test\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests.csproj", "{79323211-E658-493E-9863-035AA4C3F913}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring", "src\Volo.Abp.BlobStoring\Volo.Abp.BlobStoring.csproj", "{A0CFBDD6-A3CB-438C-83F1-5025F12E2D42}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring", "src\Volo.Abp.BlobStoring\Volo.Abp.BlobStoring.csproj", "{A0CFBDD6-A3CB-438C-83F1-5025F12E2D42}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Tests", "test\Volo.Abp.BlobStoring.Tests\Volo.Abp.BlobStoring.Tests.csproj", "{D53A17BB-4E23-451D-AD9B-E1F6AC3F7958}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Tests", "test\Volo.Abp.BlobStoring.Tests\Volo.Abp.BlobStoring.Tests.csproj", "{D53A17BB-4E23-451D-AD9B-E1F6AC3F7958}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.FileSystem", "src\Volo.Abp.BlobStoring.FileSystem\Volo.Abp.BlobStoring.FileSystem.csproj", "{02B1FBE2-850E-4612-ABC6-DD62BCF2DD6B}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.FileSystem", "src\Volo.Abp.BlobStoring.FileSystem\Volo.Abp.BlobStoring.FileSystem.csproj", "{02B1FBE2-850E-4612-ABC6-DD62BCF2DD6B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.FileSystem.Tests", "test\Volo.Abp.BlobStoring.FileSystem.Tests\Volo.Abp.BlobStoring.FileSystem.Tests.csproj", "{68443D4A-1608-4039-B995-7AF4CF82E9F8}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.FileSystem.Tests", "test\Volo.Abp.BlobStoring.FileSystem.Tests\Volo.Abp.BlobStoring.FileSystem.Tests.csproj", "{68443D4A-1608-4039-B995-7AF4CF82E9F8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EntityFrameworkCore.Oracle.Devart", "src\Volo.Abp.EntityFrameworkCore.Oracle.Devart\Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj", "{75E5C841-5F36-4C44-A532-57CB8E7FFE15}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.EntityFrameworkCore.Oracle.Devart", "src\Volo.Abp.EntityFrameworkCore.Oracle.Devart\Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj", "{75E5C841-5F36-4C44-A532-57CB8E7FFE15}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Azure", "src\Volo.Abp.BlobStoring.Azure\Volo.Abp.BlobStoring.Azure.csproj", "{C44242F7-D55D-4867-AAF4-A786E404312E}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Azure", "src\Volo.Abp.BlobStoring.Azure\Volo.Abp.BlobStoring.Azure.csproj", "{C44242F7-D55D-4867-AAF4-A786E404312E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Azure.Tests", "test\Volo.Abp.BlobStoring.Azure.Tests\Volo.Abp.BlobStoring.Azure.Tests.csproj", "{A80E9A0B-8932-4B5D-83FB-6751708FD484}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Azure.Tests", "test\Volo.Abp.BlobStoring.Azure.Tests\Volo.Abp.BlobStoring.Azure.Tests.csproj", "{A80E9A0B-8932-4B5D-83FB-6751708FD484}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EntityFrameworkCore.Oracle", "src\Volo.Abp.EntityFrameworkCore.Oracle\Volo.Abp.EntityFrameworkCore.Oracle.csproj", "{1738845A-5348-4EB8-B736-CD1D22A808B4}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Minio", "src\Volo.Abp.BlobStoring.Minio\Volo.Abp.BlobStoring.Minio.csproj", "{658D7EDE-A057-4256-96B6-083D3C2B9704}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Caching.StackExchangeRedis", "src\Volo.Abp.Caching.StackExchangeRedis\Volo.Abp.Caching.StackExchangeRedis.csproj", "{2B83DF1F-0FD2-4DEA-ABC5-E324B51401D4}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Minio.Tests", "test\Volo.Abp.BlobStoring.Minio.Tests\Volo.Abp.BlobStoring.Minio.Tests.csproj", "{36D4B268-FD3A-4655-A41B-D56D68476C83}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Caching.StackExchangeRedis.Tests", "test\Volo.Abp.Caching.StackExchangeRedis.Tests\Volo.Abp.Caching.StackExchangeRedis.Tests.csproj", "{60D0E384-965E-4F81-9D71-B28F419254FC}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.EntityFrameworkCore.Oracle", "src\Volo.Abp.EntityFrameworkCore.Oracle\Volo.Abp.EntityFrameworkCore.Oracle.csproj", "{1738845A-5348-4EB8-B736-CD1D22A808B4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Caching.StackExchangeRedis", "src\Volo.Abp.Caching.StackExchangeRedis\Volo.Abp.Caching.StackExchangeRedis.csproj", "{2B83DF1F-0FD2-4DEA-ABC5-E324B51401D4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Caching.StackExchangeRedis.Tests", "test\Volo.Abp.Caching.StackExchangeRedis.Tests\Volo.Abp.Caching.StackExchangeRedis.Tests.csproj", "{60D0E384-965E-4F81-9D71-B28F419254FC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Aliyun", "src\Volo.Abp.BlobStoring.Aliyun\Volo.Abp.BlobStoring.Aliyun.csproj", "{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Aliyun.Tests", "test\Volo.Abp.BlobStoring.Aliyun.Tests\Volo.Abp.BlobStoring.Aliyun.Tests.csproj", "{8E49687A-E69F-49F2-8DB0-428D0883A937}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -913,6 +921,14 @@ Global
{A80E9A0B-8932-4B5D-83FB-6751708FD484}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A80E9A0B-8932-4B5D-83FB-6751708FD484}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A80E9A0B-8932-4B5D-83FB-6751708FD484}.Release|Any CPU.Build.0 = Release|Any CPU
{658D7EDE-A057-4256-96B6-083D3C2B9704}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{658D7EDE-A057-4256-96B6-083D3C2B9704}.Debug|Any CPU.Build.0 = Debug|Any CPU
{658D7EDE-A057-4256-96B6-083D3C2B9704}.Release|Any CPU.ActiveCfg = Release|Any CPU
{658D7EDE-A057-4256-96B6-083D3C2B9704}.Release|Any CPU.Build.0 = Release|Any CPU
{36D4B268-FD3A-4655-A41B-D56D68476C83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{36D4B268-FD3A-4655-A41B-D56D68476C83}.Debug|Any CPU.Build.0 = Debug|Any CPU
{36D4B268-FD3A-4655-A41B-D56D68476C83}.Release|Any CPU.ActiveCfg = Release|Any CPU
{36D4B268-FD3A-4655-A41B-D56D68476C83}.Release|Any CPU.Build.0 = Release|Any CPU
{1738845A-5348-4EB8-B736-CD1D22A808B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1738845A-5348-4EB8-B736-CD1D22A808B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1738845A-5348-4EB8-B736-CD1D22A808B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -925,6 +941,14 @@ Global
{60D0E384-965E-4F81-9D71-B28F419254FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{60D0E384-965E-4F81-9D71-B28F419254FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60D0E384-965E-4F81-9D71-B28F419254FC}.Release|Any CPU.Build.0 = Release|Any CPU
{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7}.Release|Any CPU.Build.0 = Release|Any CPU
{8E49687A-E69F-49F2-8DB0-428D0883A937}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E49687A-E69F-49F2-8DB0-428D0883A937}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E49687A-E69F-49F2-8DB0-428D0883A937}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E49687A-E69F-49F2-8DB0-428D0883A937}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -1079,9 +1103,13 @@ Global
{75E5C841-5F36-4C44-A532-57CB8E7FFE15} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{C44242F7-D55D-4867-AAF4-A786E404312E} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{A80E9A0B-8932-4B5D-83FB-6751708FD484} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{658D7EDE-A057-4256-96B6-083D3C2B9704} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{36D4B268-FD3A-4655-A41B-D56D68476C83} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{1738845A-5348-4EB8-B736-CD1D22A808B4} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{2B83DF1F-0FD2-4DEA-ABC5-E324B51401D4} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{60D0E384-965E-4F81-9D71-B28F419254FC} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{8E49687A-E69F-49F2-8DB0-428D0883A937} = {447C8A77-E5F0-4538-8687-7383196D04EA}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteFooterTagHelper.cs

@ -2,7 +2,7 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote
{
[HtmlTargetElement("footer", ParentTag = "abp-blockquote")]
[HtmlTargetElement("footer", ParentTag = "blockquote")]
public class AbpBlockquoteFooterTagHelper : AbpTagHelper<AbpBlockquoteFooterTagHelper, AbpBlockquoteFooterTagHelperService>
{
public AbpBlockquoteFooterTagHelper(AbpBlockquoteFooterTagHelperService tagHelperService)

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteParagraphTagHelper.cs

@ -2,7 +2,7 @@
namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote
{
[HtmlTargetElement("p", ParentTag = "abp-blockquote")]
[HtmlTargetElement("p", ParentTag = "blockquote")]
public class AbpBlockquoteParagraphTagHelper : AbpTagHelper<AbpBlockquoteParagraphTagHelper, AbpBlockquoteParagraphTagHelperService>
{
public AbpBlockquoteParagraphTagHelper(AbpBlockquoteParagraphTagHelperService tagHelperService)

3
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteTagHelperService.cs

@ -8,6 +8,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.Attributes.AddClass("blockquote");
output.TagName = "blockquote";
}
}
}
}

7
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs

@ -13,9 +13,12 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb
var list = InitilizeFormGroupContentsContext(context, output);
await output.GetChildContentAsync();
SetInnerOlTag(context, output);
SetInnerList(context, output, list);
output.TagName = "nav";
output.Attributes.Add("aria-label", "breadcrumb");
}
protected virtual void SetInnerOlTag(TagHelperContext context, TagHelperOutput output)
@ -63,4 +66,4 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb
}
}
}
}

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupTagHelperService.cs

@ -11,6 +11,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button
AddButtonGroupClass(context, output);
AddSizeClass(context, output);
AddAttributes(context, output);
output.TagName = "div";
}
protected virtual void AddSizeClass(TagHelperContext context, TagHelperOutput output)
@ -52,4 +54,4 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button
output.Attributes.Add("role", "group");
}
}
}
}

3
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonToolbarTagHelperService.cs

@ -7,8 +7,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "div";
output.Attributes.AddClass("btn-toolbar");
output.Attributes.Add("role","toolbar");
}
}
}
}

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs

@ -23,8 +23,6 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse
output.SuppressOutput();
}
protected virtual string GetAccordionHeaderItem(TagHelperContext context, TagHelperOutput output)
{
return " <div class=\"card-header\" id=\"" + GetHeadingId() + "\">" + Environment.NewLine +
@ -64,4 +62,4 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse
}
}
}
}
}

3
framework/src/Volo.Abp.BlobStoring.Aliyun/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
framework/src/Volo.Abp.BlobStoring.Aliyun/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

27
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj

@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\configureawait.props" />
<Import Project="..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Volo.Abp.BlobStoring.Aliyun</AssemblyName>
<PackageId>Volo.Abp.BlobStoring.Aliyun</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="aliyun-net-sdk-sts" Version="3.0.4" />
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.10.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.BlobStoring\Volo.Abp.BlobStoring.csproj" />
<ProjectReference Include="..\Volo.Abp.Caching\Volo.Abp.Caching.csproj" />
</ItemGroup>
</Project>

14
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AbpBlobStoringAliyunModule.cs

@ -0,0 +1,14 @@
using Volo.Abp.Caching;
using Volo.Abp.Modularity;
namespace Volo.Abp.BlobStoring.Aliyun
{
[DependsOn(
typeof(AbpBlobStoringModule),
typeof(AbpCachingModule)
)]
public class AbpBlobStoringAliyunModule: AbpModule
{
}
}

25
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobContainerConfigurationExtensions.cs

@ -0,0 +1,25 @@
using System;
namespace Volo.Abp.BlobStoring.Aliyun
{
public static class AliyunBlobContainerConfigurationExtensions
{
public static AliyunBlobProviderConfiguration GetAliyunConfiguration(
this BlobContainerConfiguration containerConfiguration)
{
return new AliyunBlobProviderConfiguration(containerConfiguration);
}
public static BlobContainerConfiguration UseAliyun(
this BlobContainerConfiguration containerConfiguration,
Action<AliyunBlobProviderConfiguration> aliyunConfigureAction)
{
containerConfiguration.ProviderType = typeof(AliyunBlobProvider);
containerConfiguration.NamingNormalizers.TryAdd<AliyunBlobNamingNormalizer>();
aliyunConfigureAction(new AliyunBlobProviderConfiguration(containerConfiguration));
return containerConfiguration;
}
}
}

51
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobNamingNormalizer.cs

@ -0,0 +1,51 @@
using System.Text.RegularExpressions;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlobStoring.Aliyun
{
public class AliyunBlobNamingNormalizer : IBlobNamingNormalizer, ITransientDependency
{
/// <summary>
/// Container names can contain only letters, numbers, and the dash (-) character
/// they can't start or end with the dash (-) character
/// Container names must be from 3 through 63 characters long
/// </summary>
public virtual string NormalizeContainerName(string containerName)
{
// All letters in a container name must be lowercase.
containerName = containerName.ToLower();
// Container names can contain only letters, numbers, and the dash (-) character.
containerName = Regex.Replace(containerName, "[^a-z0-9-]", string.Empty);
// Every dash (-) character must be immediately preceded and followed by a letter or number;
// consecutive dashes are not permitted in container names.
// Container names must start or end with a letter or number
containerName = Regex.Replace(containerName, "-{2,}", "-");
containerName = Regex.Replace(containerName, "^-", string.Empty);
containerName = Regex.Replace(containerName, "-$", string.Empty);
// Container names must be from 3 through 63 characters long.
if (containerName.Length < 3)
{
var length = containerName.Length;
for (var i = 0; i < 3 - length; i++)
{
containerName += "0";
}
}
if (containerName.Length > 63)
{
containerName = containerName.Substring(0, 63);
}
return containerName;
}
public virtual string NormalizeBlobName(string blobName)
{
return blobName;
}
}
}

107
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProvider.cs

@ -0,0 +1,107 @@
using Aliyun.OSS;
using System;
using System.IO;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlobStoring.Aliyun
{
public class AliyunBlobProvider : BlobProviderBase, ITransientDependency
{
protected IOssClientFactory OssClientFactory { get; }
protected IAliyunBlobNameCalculator AliyunBlobNameCalculator { get; }
public AliyunBlobProvider(
IOssClientFactory ossClientFactory,
IAliyunBlobNameCalculator aliyunBlobNameCalculator)
{
OssClientFactory = ossClientFactory;
AliyunBlobNameCalculator = aliyunBlobNameCalculator;
}
protected virtual IOss GetOssClient(BlobContainerConfiguration blobContainerConfiguration)
{
var aliyunConfig = blobContainerConfiguration.GetAliyunConfiguration();
return OssClientFactory.Create(aliyunConfig);
}
protected virtual IOss GetOssClient(AliyunBlobProviderConfiguration aliyunConfig)
{
return OssClientFactory.Create(aliyunConfig);
}
public override Task SaveAsync(BlobProviderSaveArgs args)
{
var containerName = GetContainerName(args);
var blobName = AliyunBlobNameCalculator.Calculate(args);
var aliyunConfig = args.Configuration.GetAliyunConfiguration();
var ossClient = GetOssClient(aliyunConfig);
if (!args.OverrideExisting && BlobExistsAsync(ossClient, containerName, blobName))
{
throw new BlobAlreadyExistsException($"Saving BLOB '{args.BlobName}' does already exists in the container '{containerName}'! Set {nameof(args.OverrideExisting)} if it should be overwritten.");
}
if (aliyunConfig.CreateContainerIfNotExists)
{
if (!ossClient.DoesBucketExist(containerName))
{
ossClient.CreateBucket(containerName);
}
}
ossClient.PutObject(containerName, blobName, args.BlobStream);
return Task.CompletedTask;
}
public override Task<bool> DeleteAsync(BlobProviderDeleteArgs args)
{
var containerName = GetContainerName(args);
var blobName = AliyunBlobNameCalculator.Calculate(args);
var ossClient = GetOssClient(args.Configuration);
if(!BlobExistsAsync(ossClient, containerName, blobName))
{
return Task.FromResult(false);
}
ossClient.DeleteObject(containerName, blobName);
return Task.FromResult(true);
}
public override Task<bool> ExistsAsync(BlobProviderExistsArgs args)
{
var containerName = GetContainerName(args);
var blobName = AliyunBlobNameCalculator.Calculate(args);
var ossClient = GetOssClient(args.Configuration);
return Task.FromResult(BlobExistsAsync(ossClient, containerName, blobName));
}
public override async Task<Stream> GetOrNullAsync(BlobProviderGetArgs args)
{
var containerName = GetContainerName(args);
var blobName = AliyunBlobNameCalculator.Calculate(args);
var ossClient = GetOssClient(args.Configuration);
if (!BlobExistsAsync(ossClient, containerName, blobName))
{
return null;
}
var result = ossClient.GetObject(containerName, blobName);
var memoryStream = new MemoryStream();
await result.Content.CopyToAsync(memoryStream);
return memoryStream;
}
private static string GetContainerName(BlobProviderArgs args)
{
var configuration = args.Configuration.GetAliyunConfiguration();
return configuration.ContainerName.IsNullOrWhiteSpace()
? args.ContainerName
: configuration.ContainerName;
}
private bool BlobExistsAsync(IOss ossClient,string containerName, string blobName)
{
// Make sure Blob Container exists.
return ossClient.DoesBucketExist(containerName) &&
ossClient.DoesObjectExist(containerName, blobName);
}
}
}

105
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProviderConfiguration.cs

@ -0,0 +1,105 @@
using System;
namespace Volo.Abp.BlobStoring.Aliyun
{
/// <summary>
/// Sub-account access to OSS or STS temporary authorization to access OSS
/// </summary>
public class AliyunBlobProviderConfiguration
{
public string AccessKeyId
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.AccessKeyId);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.AccessKeyId, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
public string AccessKeySecret
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.AccessKeySecret);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.AccessKeySecret, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
public string Endpoint
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.Endpoint);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.Endpoint, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
public string RegionId
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.RegionId);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.RegionId, value);
}
/// <summary>
/// acs:ram::$accountID:role/$roleName
/// </summary>
public string RoleArn
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.RoleArn);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.RoleArn, value);
}
/// <summary>
/// The name used to identify the temporary access credentials, it is recommended to use different application users to distinguish.
/// </summary>
public string RoleSessionName
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.RoleSessionName);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.RoleSessionName, value);
}
/// <summary>
/// Set the validity period of the temporary access credential, the unit is s, the minimum is 900, and the maximum is 3600.
/// </summary>
public int DurationSeconds
{
get => _containerConfiguration.GetConfigurationOrDefault(AliyunBlobProviderConfigurationNames.DurationSeconds, 0);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.DurationSeconds, value);
}
/// <summary>
/// If policy is empty, the user will get all permissions under this role
/// </summary>
public string Policy
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.Policy);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.Policy, value);
}
/// <summary>
/// This name may only contain lowercase letters, numbers, and hyphens, and must begin with a letter or a number.
/// Each hyphen must be preceded and followed by a non-hyphen character.
/// The name must also be between 3 and 63 characters long.
/// If this parameter is not specified, the ContainerName of the <see cref="BlobProviderArgs"/> will be used.
/// </summary>
public string ContainerName
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.ContainerName);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.ContainerName, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
/// <summary>
/// Default value: false.
/// </summary>
public bool CreateContainerIfNotExists
{
get => _containerConfiguration.GetConfigurationOrDefault(AliyunBlobProviderConfigurationNames.CreateContainerIfNotExists, false);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.CreateContainerIfNotExists, value);
}
private readonly BlobContainerConfiguration _containerConfiguration;
public AliyunBlobProviderConfiguration(BlobContainerConfiguration containerConfiguration)
{
_containerConfiguration = containerConfiguration;
}
public string ToKeyString()
{
Uri uPoint = new Uri(Endpoint);
return $"blobstoring:aliyun:id:{AccessKeyId},sec:{AccessKeySecret},ept:{uPoint.Host.ToLower()},rid:{RegionId},ra:{RoleArn},rsn:{RoleSessionName},pl:{Policy}";
}
}
}

16
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProviderConfigurationNames.cs

@ -0,0 +1,16 @@
namespace Volo.Abp.BlobStoring.Aliyun
{
public class AliyunBlobProviderConfigurationNames
{
public const string AccessKeyId = "Aliyun.AccessKeyId";
public const string AccessKeySecret = "Aliyun.AccessKeySecret";
public const string Endpoint = "Aliyun.Endpoint";
public const string RegionId = "Aliyun.RegionId";
public const string RoleArn = "Aliyun.RoleArn";
public const string RoleSessionName = "Aliyun.RoleSessionName";
public const string DurationSeconds = "Aliyun.DurationSeconds";
public const string Policy = "Aliyun.Policy";
public const string ContainerName = "Aliyun:ContainerName";
public const string CreateContainerIfNotExists = "Aliyun.CreateContainerIfNotExists";
}
}

30
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AssumeRoleCredentialsCacheItem.cs

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Abp.Caching;
namespace Volo.Abp.BlobStoring.Aliyun
{
[Serializable]
[CacheName("AssumeRoleCredentials")]
public class AssumeRoleCredentialsCacheItem
{
public string AccessKeyId { get; set; }
public string AccessKeySecret { get; set; }
public string SecurityToken { get; set; }
public AssumeRoleCredentialsCacheItem()
{
}
public AssumeRoleCredentialsCacheItem(string accessKeyId,string accessKeySecret,string securityToken)
{
AccessKeyId = accessKeyId;
AccessKeySecret = accessKeySecret;
SecurityToken = securityToken;
}
}
}

22
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/DefaultAliyunBlobNameCalculator.cs

@ -0,0 +1,22 @@
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy;
namespace Volo.Abp.BlobStoring.Aliyun
{
public class DefaultAliyunBlobNameCalculator: IAliyunBlobNameCalculator, ITransientDependency
{
protected ICurrentTenant CurrentTenant { get; }
public DefaultAliyunBlobNameCalculator(ICurrentTenant currentTenant)
{
CurrentTenant = currentTenant;
}
public virtual string Calculate(BlobProviderArgs args)
{
return CurrentTenant.Id == null
? $"host/{args.BlobName}"
: $"tenants/{CurrentTenant.Id.Value:D}/{args.BlobName}";
}
}
}

68
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/DefaultOssClientFactory.cs

@ -0,0 +1,68 @@
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Auth.Sts;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using Aliyun.OSS;
using Microsoft.Extensions.Caching.Distributed;
using System;
using System.Collections.Generic;
using Volo.Abp.Caching;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlobStoring.Aliyun
{
/// <summary>
/// Sub-account access to OSS or STS temporary authorization to access OSS
/// </summary>
public class DefaultOssClientFactory : IOssClientFactory, ITransientDependency
{
protected IDistributedCache<AssumeRoleCredentialsCacheItem> Cache { get; }
public DefaultOssClientFactory(
IDistributedCache<AssumeRoleCredentialsCacheItem> cache)
{
Cache = cache;
}
public virtual IOss Create(AliyunBlobProviderConfiguration aliyunConfig)
{
//Sub-account
if (aliyunConfig.DurationSeconds <= 0)
{
return new OssClient(aliyunConfig.Endpoint, aliyunConfig.AccessKeyId, aliyunConfig.AccessKeySecret);
}
else
{
//STS temporary authorization to access OSS
var key = aliyunConfig.ToKeyString();
var cacheItem = Cache.Get(key);
if (cacheItem == null)
{
IClientProfile profile = DefaultProfile.GetProfile(
aliyunConfig.RegionId,
aliyunConfig.AccessKeyId,
aliyunConfig.AccessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(profile);
AssumeRoleRequest request = new AssumeRoleRequest
{
AcceptFormat = FormatType.JSON,
//eg:acs:ram::$accountID:role/$roleName
RoleArn = aliyunConfig.RoleArn,
RoleSessionName = aliyunConfig.RoleSessionName,
//Set the validity period of the temporary access credential, the unit is s, the minimum is 900, and the maximum is 3600. default 3600
DurationSeconds = aliyunConfig.DurationSeconds,
//Set additional permission policy of Token; when acquiring Token, further reduce the permission of Token by setting an additional permission policy
Policy = aliyunConfig.Policy.IsNullOrEmpty() ? null : aliyunConfig.Policy,
};
var response = client.GetAcsResponse(request);
cacheItem = new AssumeRoleCredentialsCacheItem(response.Credentials.AccessKeyId, response.Credentials.AccessKeySecret, response.Credentials.SecurityToken);
Cache.Set(key, cacheItem, new DistributedCacheEntryOptions()
{
//Subtract 10 seconds of network request time.
AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(aliyunConfig.DurationSeconds - 10)
});
}
return new OssClient(aliyunConfig.Endpoint, cacheItem.AccessKeyId, cacheItem.AccessKeySecret, cacheItem.SecurityToken);
}
}
}
}

7
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/IAliyunBlobNameCalculator.cs

@ -0,0 +1,7 @@
namespace Volo.Abp.BlobStoring.Aliyun
{
public interface IAliyunBlobNameCalculator
{
string Calculate(BlobProviderArgs args);
}
}

9
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/IOssClientFactory.cs

@ -0,0 +1,9 @@
using Aliyun.OSS;
namespace Volo.Abp.BlobStoring.Aliyun
{
public interface IOssClientFactory
{
IOss Create(AliyunBlobProviderConfiguration args);
}
}

3
framework/src/Volo.Abp.BlobStoring.Minio/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
framework/src/Volo.Abp.BlobStoring.Minio/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

21
framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\configureawait.props" />
<Import Project="..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Volo.Abp.BlobStoring.Minio</AssemblyName>
<PackageId>Volo.Abp.BlobStoring.Minio</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.BlobStoring\Volo.Abp.BlobStoring.csproj" />
<PackageReference Include="Minio" Version="3.1.13" />
</ItemGroup>
</Project>

10
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioModule.cs

@ -0,0 +1,10 @@
using Volo.Abp.Modularity;
namespace Volo.Abp.BlobStoring.Minio
{
[DependsOn(typeof(AbpBlobStoringModule))]
public class AbpBlobStoringMinioModule : AbpModule
{
}
}

22
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/DefaultMinioBlobNameCalculator.cs

@ -0,0 +1,22 @@
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy;
namespace Volo.Abp.BlobStoring.Minio
{
public class DefaultMinioBlobNameCalculator : IMinioBlobNameCalculator, ITransientDependency
{
protected ICurrentTenant CurrentTenant { get; }
public DefaultMinioBlobNameCalculator(ICurrentTenant currentTenant)
{
CurrentTenant = currentTenant;
}
public virtual string Calculate(BlobProviderArgs args)
{
return CurrentTenant.Id == null
? $"host/{args.BlobName}"
: $"tenants/{CurrentTenant.Id.Value.ToString("D")}/{args.BlobName}";
}
}
}

7
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/IMinioBlobNameCalculator.cs

@ -0,0 +1,7 @@
namespace Volo.Abp.BlobStoring.Minio
{
public interface IMinioBlobNameCalculator
{
string Calculate(BlobProviderArgs args);
}
}

24
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobContainerConfigurationExtensions.cs

@ -0,0 +1,24 @@
using System;
namespace Volo.Abp.BlobStoring.Minio
{
public static class MinioBlobContainerConfigurationExtensions
{
public static MinioBlobProviderConfiguration GetMinioConfiguration(
this BlobContainerConfiguration containerConfiguration)
{
return new MinioBlobProviderConfiguration(containerConfiguration);
}
public static BlobContainerConfiguration UseMinio(
this BlobContainerConfiguration containerConfiguration,
Action<MinioBlobProviderConfiguration> minioConfigureAction)
{
containerConfiguration.ProviderType = typeof(MinioBlobProvider);
minioConfigureAction(new MinioBlobProviderConfiguration(containerConfiguration));
return containerConfiguration;
}
}
}

52
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobNamingNormalizer.cs

@ -0,0 +1,52 @@
using System.Text.RegularExpressions;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlobStoring.Minio
{
public class MinioBlobNamingNormalizer : IBlobNamingNormalizer, ITransientDependency
{
/// <summary>
///https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html
/// </summary>
public virtual string NormalizeContainerName(string containerName)
{
// All letters in a container name must be lowercase.
containerName = containerName.ToLower();
// Container names can contain only letters, numbers, and the dash (-) character.
containerName = Regex.Replace(containerName, "[^a-z0-9-]", string.Empty);
// Every dash (-) character must be immediately preceded and followed by a letter or number;
// consecutive dashes are not permitted in container names.
// Container names must start or end with a letter or number
containerName = Regex.Replace(containerName, "-{2,}", "-");
containerName = Regex.Replace(containerName, "^-", string.Empty);
containerName = Regex.Replace(containerName, "-$", string.Empty);
// Container names must be from 3 through 63 characters long.
if (containerName.Length < 3)
{
var length = containerName.Length;
for (var i = 0; i < 3 - length; i++)
{
containerName += "0";
}
}
if (containerName.Length > 63)
{
containerName = containerName.Substring(0, 63);
}
return containerName;
}
/// <summary>
/// https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
/// </summary>
public virtual string NormalizeBlobName(string blobName)
{
return blobName;
}
}
}

145
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs

@ -0,0 +1,145 @@
using Minio;
using Minio.Exceptions;
using System;
using System.IO;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlobStoring.Minio
{
public class MinioBlobProvider : BlobProviderBase, ITransientDependency
{
protected IMinioBlobNameCalculator MinioBlobNameCalculator { get; }
public MinioBlobProvider(IMinioBlobNameCalculator minioBlobNameCalculator)
{
MinioBlobNameCalculator = minioBlobNameCalculator;
}
public override async Task SaveAsync(BlobProviderSaveArgs args)
{
var blobName = MinioBlobNameCalculator.Calculate(args);
var configuration = args.Configuration.GetMinioConfiguration();
var client = GetMinioClient(args);
var containerName = GetContainerName(args);
if (!args.OverrideExisting && await BlobExistsAsync(client, containerName, blobName))
{
throw new BlobAlreadyExistsException($"Saving BLOB '{args.BlobName}' does already exists in the container '{containerName}'! Set {nameof(args.OverrideExisting)} if it should be overwritten.");
}
if (configuration.CreateBucketIfNotExists)
{
await CreateBucketIfNotExists(client, containerName);
}
await client.PutObjectAsync(containerName, blobName, args.BlobStream, args.BlobStream.Length);
}
public override async Task<bool> DeleteAsync(BlobProviderDeleteArgs args)
{
var blobName = MinioBlobNameCalculator.Calculate(args);
var client = GetMinioClient(args);
var containerName = GetContainerName(args);
if (await BlobExistsAsync(client, containerName, blobName))
{
await client.RemoveObjectAsync(containerName, blobName);
return true;
}
return false;
}
public override async Task<bool> ExistsAsync(BlobProviderExistsArgs args)
{
var blobName = MinioBlobNameCalculator.Calculate(args);
var client = GetMinioClient(args);
var containerName = GetContainerName(args);
return await BlobExistsAsync(client, containerName, blobName);
}
public override async Task<Stream> GetOrNullAsync(BlobProviderGetArgs args)
{
var blobName = MinioBlobNameCalculator.Calculate(args);
var client = GetMinioClient(args);
var containerName = GetContainerName(args);
if (!await BlobExistsAsync(client, containerName, blobName))
{
return null;
}
var memoryStream = new MemoryStream();
await client.GetObjectAsync(containerName, blobName, stream =>
{
if (stream != null)
{
stream.CopyTo(memoryStream);
}
else
{
memoryStream = null;
}
});
return memoryStream;
}
protected virtual MinioClient GetMinioClient(BlobProviderArgs args)
{
var configuration = args.Configuration.GetMinioConfiguration();
var client = new MinioClient(configuration.EndPoint, configuration.AccessKey, configuration.SecretKey);
if (configuration.WithSSL)
{
client.WithSSL();
}
return client;
}
protected virtual async Task CreateBucketIfNotExists(MinioClient client,string containerName)
{
if (!await client.BucketExistsAsync(containerName))
{
await client.MakeBucketAsync(containerName);
}
}
private async Task<bool> BlobExistsAsync(MinioClient client, string containerName , string blobName)
{
// Make sure Blob Container exists.
if (await client.BucketExistsAsync(containerName))
{
try
{
await client.StatObjectAsync(containerName, blobName);
}
catch (Exception e)
{
if (e is ObjectNotFoundException)
{
return false;
}
throw;
}
return true;
}
return false;
}
private static string GetContainerName(BlobProviderArgs args)
{
var configuration = args.Configuration.GetMinioConfiguration();
return configuration.BucketName.IsNullOrWhiteSpace()
? args.ContainerName
: configuration.BucketName;
}
}
}

63
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProviderConfiguration.cs

@ -0,0 +1,63 @@
namespace Volo.Abp.BlobStoring.Minio
{
public class MinioBlobProviderConfiguration
{
public string BucketName
{
get => _containerConfiguration.GetConfiguration<string>(MinioBlobProviderConfigurationNames.BucketName);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.BucketName, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
/// <summary>
/// endPoint is an URL, domain name, IPv4 address or IPv6 address.
/// </summary>
public string EndPoint
{
get => _containerConfiguration.GetConfiguration<string>(MinioBlobProviderConfigurationNames.EndPoint);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.EndPoint, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
/// <summary>
/// accessKey is like user-id that uniquely identifies your account.This field is optional and can be omitted for anonymous access.
/// </summary>
public string AccessKey
{
get => _containerConfiguration.GetConfiguration<string>(MinioBlobProviderConfigurationNames.AccessKey);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.AccessKey, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
/// <summary>
/// secretKey is the password to your account.This field is optional and can be omitted for anonymous access.
/// </summary>
public string SecretKey
{
get => _containerConfiguration.GetConfiguration<string>(MinioBlobProviderConfigurationNames.SecretKey);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.SecretKey, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
/// <summary>
///connect to to MinIO Client object to use https instead of http
/// </summary>
public bool WithSSL
{
get => _containerConfiguration.GetConfigurationOrDefault(MinioBlobProviderConfigurationNames.WithSSL, false);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.WithSSL, value);
}
/// <summary>
///Default value: false.
/// </summary>
public bool CreateBucketIfNotExists
{
get => _containerConfiguration.GetConfigurationOrDefault(MinioBlobProviderConfigurationNames.CreateBucketIfNotExists, false);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.CreateBucketIfNotExists, value);
}
private readonly BlobContainerConfiguration _containerConfiguration;
public MinioBlobProviderConfiguration(BlobContainerConfiguration containerConfiguration)
{
_containerConfiguration = containerConfiguration;
}
}
}

12
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProviderConfigurationNames.cs

@ -0,0 +1,12 @@
namespace Volo.Abp.BlobStoring.Minio
{
public static class MinioBlobProviderConfigurationNames
{
public const string BucketName = "Minio.BucketName";
public const string EndPoint = "Minio.EndPoint";
public const string AccessKey = "Minio.AccessKey";
public const string SecretKey = "Minio.SecretKey";
public const string WithSSL = "Minio.WithSSL";
public const string CreateBucketIfNotExists = "Minio.CreateBucketIfNotExists";
}
}

15
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ModuleInfoProvider.cs

@ -49,15 +49,16 @@ namespace Volo.Abp.Cli.ProjectBuilding
{
using (var client = new CliHttpClient())
{
var responseMessage = await client.GetAsync(
using (var responseMessage = await client.GetAsync(
$"{CliUrls.WwwAbpIo}api/download/modules/",
CancellationTokenProvider.Token
);
await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);
var result = await responseMessage.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<List<ModuleInfo>>(result);
))
{
await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);
var result = await responseMessage.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<List<ModuleInfo>>(result);
}
}
}
}
}
}

2
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs

@ -263,7 +263,7 @@ namespace Volo.Abp.Domain.Entities.Events
{
try
{
await eventPublisher.PublishAsync(
await eventEntry.EventBus.PublishAsync(
eventEntry.EventType,
Activator.CreateInstance(eventEntry.EventType, eventEntry.EntityOrEto)
);

2
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/BasicRepositoryBase.cs

@ -35,6 +35,8 @@ namespace Volo.Abp.Domain.Repositories
public abstract Task<long> GetCountAsync(CancellationToken cancellationToken = default);
public abstract Task<List<TEntity>> GetPagedListAsync(int skipCount, int maxResultCount, string sorting, bool includeDetails = false, CancellationToken cancellationToken = default);
protected virtual CancellationToken GetCancellationToken(CancellationToken preferredValue = default)
{
return CancellationTokenProvider.FallbackToProvider(preferredValue);

9
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/IReadOnlyBasicRepository.cs

@ -21,6 +21,15 @@ namespace Volo.Abp.Domain.Repositories
/// Gets total count of all entities.
/// </summary>
Task<long> GetCountAsync(CancellationToken cancellationToken = default);
Task<List<TEntity>> GetPagedListAsync(
int skipCount,
int maxResultCount,
string sorting,
bool includeDetails = false,
CancellationToken cancellationToken = default);
}
public interface IReadOnlyBasicRepository<TEntity, TKey> : IReadOnlyBasicRepository<TEntity>

16
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
@ -88,6 +89,21 @@ namespace Volo.Abp.Domain.Repositories.EntityFrameworkCore
return await DbSet.LongCountAsync(GetCancellationToken(cancellationToken));
}
public override async Task<List<TEntity>> GetPagedListAsync(
int skipCount,
int maxResultCount,
string sorting,
bool includeDetails = false,
CancellationToken cancellationToken = default)
{
var queryable = includeDetails ? WithDetails() : DbSet;
return await queryable
.OrderBy(sorting)
.PageBy(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken));
}
protected override IQueryable<TEntity> GetQueryable()
{
return DbSet.AsQueryable();

48
framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
@ -25,21 +26,21 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
public virtual IMemoryDatabase Database => DatabaseProvider.GetDatabase();
protected IMemoryDatabaseProvider<TMemoryDbContext> DatabaseProvider { get; }
public ILocalEventBus LocalEventBus { get; set; }
public IDistributedEventBus DistributedEventBus { get; set; }
public IEntityChangeEventHelper EntityChangeEventHelper { get; set; }
public IAuditPropertySetter AuditPropertySetter { get; set; }
public IGuidGenerator GuidGenerator { get; set; }
public MemoryDbRepository(IMemoryDatabaseProvider<TMemoryDbContext> databaseProvider)
{
DatabaseProvider = databaseProvider;
LocalEventBus = NullLocalEventBus.Instance;
DistributedEventBus = NullDistributedEventBus.Instance;
EntityChangeEventHelper = NullEntityChangeEventHelper.Instance;
@ -49,7 +50,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
{
return ApplyDataFilters(Collection.AsQueryable());
}
protected virtual async Task TriggerDomainEventsAsync(object entity)
{
var generatesDomainEventsEntity = entity as IGeneratesDomainEvents;
@ -80,7 +81,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
generatesDomainEventsEntity.ClearDistributedEvents();
}
}
protected virtual bool IsHardDeleted(TEntity entity)
{
if (!(UnitOfWorkManager?.Current?.Items.GetOrDefault(UnitOfWorkItemNames.HardDeletedEntities) is HashSet<IEntity> hardDeletedEntities))
@ -90,7 +91,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
return hardDeletedEntities.Contains(entity);
}
protected virtual void CheckAndSetId(TEntity entity)
{
if (entity is IEntity<Guid> entityWithGuidId)
@ -117,12 +118,12 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
{
AuditPropertySetter.SetCreationProperties(entity);
}
protected virtual void SetModificationAuditProperties(TEntity entity)
{
AuditPropertySetter.SetModificationProperties(entity);
}
protected virtual void SetDeletionAuditProperties(TEntity entity)
{
AuditPropertySetter.SetDeletionProperties(entity);
@ -139,7 +140,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
await EntityChangeEventHelper.TriggerEntityUpdatedEventOnUowCompletedAsync(entity);
await EntityChangeEventHelper.TriggerEntityUpdatingEventAsync(entity);
}
protected virtual async Task TriggerEntityDeleteEventsAsync(TEntity entity)
{
await EntityChangeEventHelper.TriggerEntityDeletedEventOnUowCompletedAsync(entity);
@ -153,7 +154,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
await TriggerEntityCreateEvents(entity);
await TriggerDomainEventsAsync(entity);
}
protected virtual async Task ApplyAbpConceptsForDeletedEntityAsync(TEntity entity)
{
SetDeletionAuditProperties(entity);
@ -170,8 +171,8 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
}
public override async Task DeleteAsync(
Expression<Func<TEntity, bool>> predicate,
bool autoSave = false,
Expression<Func<TEntity, bool>> predicate,
bool autoSave = false,
CancellationToken cancellationToken = default)
{
var entities = GetQueryable().Where(predicate).ToList();
@ -189,10 +190,10 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
await ApplyAbpConceptsForAddedEntityAsync(entity);
Collection.Add(entity);
return entity;
}
public override async Task<TEntity> UpdateAsync(
TEntity entity,
bool autoSave = false,
@ -216,7 +217,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
return entity;
}
public override async Task DeleteAsync(
TEntity entity,
bool autoSave = false,
@ -244,6 +245,19 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
{
return Task.FromResult(GetQueryable().LongCount());
}
public override Task<List<TEntity>> GetPagedListAsync(
int skipCount,
int maxResultCount,
string sorting,
bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return Task.FromResult(GetQueryable()
.OrderBy(sorting)
.PageBy(skipCount, maxResultCount)
.ToList());
}
}
public class MemoryDbRepository<TMemoryDbContext, TEntity, TKey> : MemoryDbRepository<TMemoryDbContext, TEntity>, IMemoryDbRepository<TEntity, TKey>
@ -296,4 +310,4 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
await DeleteAsync(x => x.Id.Equals(id), autoSave, cancellationToken);
}
}
}
}

15
framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs

@ -3,6 +3,7 @@ using MongoDB.Driver.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
@ -147,6 +148,20 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
return await GetMongoQueryable().LongCountAsync(GetCancellationToken(cancellationToken));
}
public override async Task<List<TEntity>> GetPagedListAsync(
int skipCount,
int maxResultCount,
string sorting,
bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetMongoQueryable()
.OrderBy(sorting)
.As<IMongoQueryable<TEntity>>()
.PageBy<TEntity, IMongoQueryable<TEntity>>(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken));
}
public override async Task DeleteAsync(
Expression<Func<TEntity, bool>> predicate,
bool autoSave = false,

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json

@ -3,7 +3,7 @@
"name": "asp.net",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.shared": "^3.0.3",
"@abp/aspnetcore.mvc.ui.theme.shared": "^3.0.4",
"highlight.js": "^9.13.1"
},
"devDependencies": {}

284
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js

@ -7,49 +7,50 @@
compare = compare && Object.prototype.hasOwnProperty.call(compare, 'default') ? compare['default'] : compare;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
Copyright (c) Microsoft Corporation.
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
function (d, b) { for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
var __assign = function () {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __rest(s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
@ -57,161 +58,247 @@
}
return t;
}
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __param(paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
return function (target, key) { decorator(target, key, paramIndex); };
}
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function fulfilled(value) { try {
step(generator.next(value));
}
catch (e) {
reject(e);
} }
function rejected(value) { try {
step(generator["throw"](value));
}
catch (e) {
reject(e);
} }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
var _ = { label: 0, sent: function () { if (t[0] & 1)
throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
if (f)
throw new TypeError("Generator is already executing.");
while (_)
try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
return t;
if (y = 0, t)
op = [op[0] & 2, t.value];
switch (op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return { value: op[1], done: false };
case 5:
_.label++;
y = op[1];
op = [0];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2])
_.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
}
catch (e) {
op = [6, e];
y = 0;
}
finally {
f = t = 0;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
if (op[0] & 5)
throw op[1];
return { value: op[0] ? op[1] : void 0, done: true };
}
}
var __createBinding = Object.create ? (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
}) : (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
function __exportStar(m, exports) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
for (var p in m)
if (p !== "default" && !exports.hasOwnProperty(p))
__createBinding(exports, m, p);
}
function __values(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
if (m)
return m.call(o);
if (o && typeof o.length === "number")
return {
next: function () {
if (o && i >= o.length)
o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) {
e = { error: error };
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally {
if (e)
throw e.error;
}
finally { if (e) throw e.error; }
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
}
;
function __await(v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
}
function __asyncGenerator(thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
function verb(n) { if (g[n])
i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try {
step(g[n](v));
}
catch (e) {
settle(q[0][3], e);
} }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
function settle(f, v) { if (f(v), q.shift(), q.length)
resume(q[0][0], q[0][1]); }
}
function __asyncDelegator(o) {
var i, p;
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
}
function __asyncValues(o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
}
function __makeTemplateObject(cooked, raw) {
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
if (Object.defineProperty) {
Object.defineProperty(cooked, "raw", { value: raw });
}
else {
cooked.raw = raw;
}
return cooked;
}
;
var __setModuleDefault = Object.create ? (function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function (o, v) {
o["default"] = v;
};
function __importStar(mod) {
if (mod && mod.__esModule) return mod;
if (mod && mod.__esModule)
return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result.default = mod;
if (mod != null)
for (var k in mod)
if (Object.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
}
function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { default: mod };
}
function __classPrivateFieldGet(receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
}
function __classPrivateFieldSet(receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
@ -220,7 +307,6 @@
return value;
}
/* tslint:disable:no-non-null-assertion */
var ListNode = /** @class */ (function () {
function ListNode(value) {
this.value = value;
@ -235,21 +321,21 @@
get: function () {
return this.first;
},
enumerable: true,
enumerable: false,
configurable: true
});
Object.defineProperty(LinkedList.prototype, "tail", {
get: function () {
return this.last;
},
enumerable: true,
enumerable: false,
configurable: true
});
Object.defineProperty(LinkedList.prototype, "length", {
get: function () {
return this.size;
},
enumerable: true,
enumerable: false,
configurable: true
});
LinkedList.prototype.attach = function (value, previousNode, nextNode) {
@ -591,6 +677,14 @@
return LinkedList;
}());
/*
* Public API Surface of utils
*/
/**
* Generated bundle index. Do not edit.
*/
exports.LinkedList = LinkedList;
exports.ListNode = ListNode;

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map

File diff suppressed because one or more lines are too long

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js

File diff suppressed because one or more lines are too long

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map

File diff suppressed because one or more lines are too long

222
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock

@ -2,30 +2,30 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.shared@^3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.3.tgz#fcea3dcea6a85dd88aa370578dca6e77fc80891c"
integrity sha512-ZuBBpH4Rlvr2Y6FpYt7FIiJwZLBmrnB8xJmP993AQtx+s39sLK3enb+poipkUBnq1N3yxmct06j7wsIlsstKXw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~3.0.3"
"@abp/bootstrap" "~3.0.3"
"@abp/bootstrap-datepicker" "~3.0.3"
"@abp/datatables.net-bs4" "~3.0.3"
"@abp/font-awesome" "~3.0.3"
"@abp/jquery-form" "~3.0.3"
"@abp/jquery-validation-unobtrusive" "~3.0.3"
"@abp/lodash" "~3.0.3"
"@abp/luxon" "~3.0.3"
"@abp/malihu-custom-scrollbar-plugin" "~3.0.3"
"@abp/select2" "~3.0.3"
"@abp/sweetalert" "~3.0.3"
"@abp/timeago" "~3.0.3"
"@abp/toastr" "~3.0.3"
"@abp/aspnetcore.mvc.ui@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.3.tgz#88e3350a839434cee38f9497d160e5f23ef5ac28"
integrity sha512-C4cSlnhGYNGQul/0WD9HP87knBQ/bj2q45Jt73ugn9RygEJVjhXPv30+H4sl1GZXmEg+kLgdAoNjM/Iipe+egQ==
"@abp/aspnetcore.mvc.ui.theme.shared@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.4.tgz#50db612b6492d36c63dd9042000a9fb00fecec54"
integrity sha512-imd2T5XXkNvGQyXV/A9hA80qSeurKaUcW6HDkte8Y2fs4QfvkjgzWXi7neqF6F+HVbYYPg3rIBWC6QF1OXGn2w==
dependencies:
"@abp/aspnetcore.mvc.ui" "~3.0.4"
"@abp/bootstrap" "~3.0.4"
"@abp/bootstrap-datepicker" "~3.0.4"
"@abp/datatables.net-bs4" "~3.0.4"
"@abp/font-awesome" "~3.0.4"
"@abp/jquery-form" "~3.0.4"
"@abp/jquery-validation-unobtrusive" "~3.0.4"
"@abp/lodash" "~3.0.4"
"@abp/luxon" "~3.0.4"
"@abp/malihu-custom-scrollbar-plugin" "~3.0.4"
"@abp/select2" "~3.0.4"
"@abp/sweetalert" "~3.0.4"
"@abp/timeago" "~3.0.4"
"@abp/toastr" "~3.0.4"
"@abp/aspnetcore.mvc.ui@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.4.tgz#4e4344d95a98a60c53037b351cb915d8ff7a7dcb"
integrity sha512-p7KI5CKkpD4EYzG4fCtygrtZhwMu7Z+IZFGbdqXelLbI5ACkbJyrn+N+9trPfS9papymeXY4p1E3v6xOH7rSHQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -34,144 +34,144 @@
path "^0.12.7"
rimraf "^3.0.2"
"@abp/bootstrap-datepicker@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.3.tgz#866d4b3b83bb548e7d71066408c5ab344ce33473"
integrity sha512-nnzm9rxu/vKIUdQQMlN/kGqL+DbOg8FmN81KyWJ23KmisViLVqDeTEJBHPOJ3WuzRN+SacoreiL4f3C+7YiiXQ==
"@abp/bootstrap-datepicker@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.4.tgz#d21963f158a4d348a0acdc46209e67378aae8e55"
integrity sha512-25e9qm39dj9AijIchQIdLlBiBM5/fhASkEuLKNt6M8S/e3qwKLwbRhX90DKMFvOyKdxxcK1gX7tDuGHyG9A8mA==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.3.tgz#1d0ce60eff1dc67642147f0f2897eb13f6353d09"
integrity sha512-Vd/bdyh4bnp3vz4QsPjlc8Wi1qfaRSBDekWbHWkNq568BLXSMkK6ucugGAvC7kshBj3bbSpHd9xWUImim0+Q/w==
"@abp/bootstrap@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.4.tgz#3b0e2b74dc174a04ce669de1b140df833eee6031"
integrity sha512-DwxL1fGYOwChPwmMpwUxCKiIdzTfRf/YDkOLUiwI8eRrpABBeuE2sSHKfks6Rqh9Wqo/nlWXvfccgDRqweqhsA==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2"
"@abp/core@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.3.tgz#05e45a5533f5a6f9014b4a4a87c73d96b7c071dc"
integrity sha512-lNrG0cYbHQHH6i2B5yfBL7iU3rl3TL66H+tDVCBqXNlnGAFOS48RG/jE2mMw54U8xgtwNczwBpgGVWAqU3uKig==
"@abp/core@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.4.tgz#281940525e280e9e3a1aa4cb4e8f64548ea026a3"
integrity sha512-ZPEH1fa5bf/f1ek9ZLQHx7u78iF6kRZ8Z2NBI36cNL13RyQbx485qJF+KXyqNlJoJAh0CAs0NsAJADU3utcDNA==
dependencies:
"@abp/utils" "~2.9.0"
"@abp/utils" "^3.0.4"
"@abp/datatables.net-bs4@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.3.tgz#627a64f4fdc8c7fb7f4e51232c4147b5f2cfe041"
integrity sha512-seZR/yu8p0SJMafVCwYA5YAi7F2IMMo6cBJsF+phTBrPGBaXd63arNK7ZiXYp3RfwnafglotKNgswO0lYRMXKw==
"@abp/datatables.net-bs4@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.4.tgz#e488336bd2c199146ea60464e0ba75aeb134957e"
integrity sha512-ID1XWKPxG9pv6mxBkku7JWvgXjTxJ1uShxmYv5kFYVuwOGMSvj8QVZInTHFcMdECopV56yjGPNOIFLeQj4Mw8Q==
dependencies:
"@abp/datatables.net" "~3.0.3"
"@abp/datatables.net" "~3.0.4"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.3.tgz#2a8eed257f943cc9d477eabe2501ead9fcc37d76"
integrity sha512-ULmYJZ3RU1kisMDCtB1Wq8tBmIn09QKW+asB33y9bT4td/cEDqULyJXbwNZYIzqA6VPzHenxiJbciFkFwPwkaQ==
"@abp/datatables.net@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.4.tgz#7ef143b83143ad8d769be25296411a812a17b255"
integrity sha512-gdQwRuxO5fQWhG/DiUaf40DQ8dWIVGhOCyt6SZ8LQzq4uSaQqa0qrtTTTW2/aiee4MgJu2vJWYF5YCszIR/HhA==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
datatables.net "^1.10.21"
"@abp/font-awesome@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.3.tgz#e0fb803c04c2f3f36017aa8a065a7f20245a2b50"
integrity sha512-UY9i35H+3EMqBszLdLyM72TRVp+hDe8CFs8q2PBNzoIsrMGqx4mKFSTxUsts03USqQ+4v6D08M056D3a0oS+DQ==
"@abp/font-awesome@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.4.tgz#98f83d0bf8b5a2a4d988cb07f5cceda2e1bc1a09"
integrity sha512-AKhKCUXx8vdHIgyXUfbSLitfYor5dJbo4qMRRGqIJVSj+cyMkpgYbGjqr24GGijgZxdmOGL+s1b9iCUbIPgLNQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.3.tgz#bcb6ca18c5671914fd87bb9651feef57142f9ae3"
integrity sha512-VokAc7jgBQAEcu15FSJPWLJcL+/mrFFwia/DdpkPyU+SrXHgD35Gu7Kb+/knQcVKNCM80mCH5gZXDbaA5Hrt3w==
"@abp/jquery-form@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.4.tgz#022eebbfe58b55e328984c0f119884c9464bc767"
integrity sha512-xDkk4rY0AmXBJE4qztzr2hZz+OVucVNWeagOEgeQHXJSKU/T+0kj0a1RxEHpyI24xBvEXAbe8PbByTbu0QXYew==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.3.tgz#e4247a56149306aa69a8df1017f7da9a07abce26"
integrity sha512-Ig3UyfPj5qyP2BCLYeaihMzzj2p4Hkh1uJX6Bm2qShRKDW3Br5D0z3JIEXiGvzukGTdCnTG+mwGQowZfdxgdUQ==
"@abp/jquery-validation-unobtrusive@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.4.tgz#6cc942aadcdde33893e7a45c84aa022e033e4e8b"
integrity sha512-N9sza91HCyPvJo+d0RAfq4skae3TgAYg7KXhlwzRE2hqUQS+EICVARURWyxJW7s7Zu6+gxDTkXhBZRTW56deZA==
dependencies:
"@abp/jquery-validation" "~3.0.3"
"@abp/jquery-validation" "~3.0.4"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.3.tgz#c95f5b9fa5d6ec973bffb0e98d08317707a95b83"
integrity sha512-Ss38QtC4IrDbICNJT9fTNWka6ekmhrfCrArOeVR8O47BIx9FRl2IBX8TBjuC3ZXv9c1oNxTICmmSCgQYfdQ02A==
"@abp/jquery-validation@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.4.tgz#3f96d1f83c75a7fc47e5e5e12c51dbc8da7582b1"
integrity sha512-2ljqas4YKU0PcwB0wQW2qhXejDHjW+N1XCxZDyCZ2wF9UxGlKBR8rFt76TJByXSotKE7n2hJRZaOh9ICZUow2g==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
jquery-validation "^1.19.2"
"@abp/jquery@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.3.tgz#b9b6b5c110c116d484b090a485503eb1e5f7f8fb"
integrity sha512-EVkCdy8bGHZ1Za/H7Iw5e/maiihx3Hn8VvU//D6U3FlC3D/Fo7hYEPOVvlVtpco6J1e0wMe9dUnCQxjPDBfQGw==
"@abp/jquery@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.4.tgz#5f236d95cfae7f65012cd8778fd74490b7542442"
integrity sha512-g8N8Te5vf+8djdksfZoZ3tXaqlBC4Ra39pAWU/XerlLl64u+XmAX1s6yKRfC2kS8lf292GgiFYuNOkb77J6k4A==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
jquery "~3.5.1"
"@abp/lodash@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.3.tgz#4289cc71d83ed3ec29beacd784ee68b6ac575274"
integrity sha512-7UIagvq204xsyNQq7yucSHRj3BPE/yvTUELLEDWmjBQPkjB9GukeoeYqUxderEbVboCLIPYgGCwAWz9IyBtvFQ==
"@abp/lodash@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.4.tgz#ee60bc99f98b59fd9fc5ff4bbcf914a13faf209d"
integrity sha512-jxvv74Sm/fUKDBMylK4Ne/8GKm7GuHAdcLFtkoJQptdO+RjZpKJ86ULT+X5vbKskZaTj2fEmOR6l4hmfnBULTA==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
lodash "^4.17.15"
"@abp/luxon@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.3.tgz#e2eb7db08c07efbd877a7216bf4f6aca18e24473"
integrity sha512-L7rzo7LLV9Kn92Fdk8g0+CqVsxedRs1cLmDA2QDn4idJ728kYJjSZpRWPjLW087dkSBen0Gtr7gxUn6HiXizpA==
"@abp/luxon@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.4.tgz#aa1bf6a93d6254433101e50a205b276759969414"
integrity sha512-gX9dQJt9C6M1wmCSUIBoNr8CAt0jkUZFQ7LKKO/BoADGM/XFvY5vDbhL7zcwbwitgCOzmucoCxs/6rIxSOVlrg==
dependencies:
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.3.tgz#77d45ac9044ebbe5a80a5764f4a55f1943c813f1"
integrity sha512-cJfdJexrZjJfoz+mMWXCFgi6gDa0fq9OAcpxZGz5aVeIrNOnWdEvjT02beowU9Rhl6vL6jWxpqaWt3H4jiGOSw==
"@abp/malihu-custom-scrollbar-plugin@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.4.tgz#c54824b98363f4190cc6a37fcd421c2bfdc1e201"
integrity sha512-6LdSGctOr4ACtdohdSlb19vrFNJ5C0hy1VdbBEafHOBspXckvRVx4uJl2KfHmAC+bMg9apoK/wcHjVNdBHThYQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.3.tgz#5545502067f12bd9e502133dc9c0f7b73adf0d18"
integrity sha512-tmQN1TfO3szU6iw/K+YjoIqKeD6hnCVNIedg0l2YqTyZfo9QREEzY8CRqQELphhGkHmsMOl5tjXeD9BJVMna2g==
"@abp/select2@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.4.tgz#49db0cfbc9b08f6ae4949b2cb8bdef92d7d308dd"
integrity sha512-zKEgkWBFdGU2KiAMUKhucHqBfzDy2KNSefyqxpOiUd1L3PEKu+9o23HZRWzDupYltop+SO1Jw33CNoVAkKm4+A==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
select2 "^4.0.13"
"@abp/sweetalert@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.3.tgz#a167d49303833d0821d63e47e3882b9dcb5a66f4"
integrity sha512-RMBkZ4Tmm2qcW88noswsrnD1cik0R3q2GCDV1Ngm2V+u2KbbSbtLN2B+YQEU1SwDop0Miml8eNk2GeRLYT6kbA==
"@abp/sweetalert@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.4.tgz#f85d11c5aabc6ceb509af1b8fd8d75bc3c74bd27"
integrity sha512-hO0qXUWxeMy/lfy3sb+5HvOmIPst6UvYJJGy3ZQR6DKEdkOktBX9sEDb7m6ij6xAIHqWIx1xLveul0oGteOG0Q==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
sweetalert "^2.1.2"
"@abp/timeago@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.3.tgz#1fa2f4814babc965a2a95149b432f1fc466ad18a"
integrity sha512-iUG9RfV8vSernjMoojlnManZ+QTaRlMOvikeHQR8MaPYH/XC2sRLNoLN0sYTC5F/xzLQU4MSQFXZ54dobUyYfA==
"@abp/timeago@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.4.tgz#82d90a04f703a7db9c0acedcd2f3cea684e7ae18"
integrity sha512-7SbbqScTKCix25xWy5oLT0slJqUQsW6YgJgI0N41C3AsByRBXZeh5Gcep033gprTPmpgNY8JOWcEcCXySnYvfA==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
timeago "^1.6.7"
"@abp/toastr@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.3.tgz#1f4421f03c6c69bd4ca93123953cdc4ac3abfd99"
integrity sha512-phMAFhJcLbti09da3WdDx5YZ2zzkh/Xgag2iJWunnnt5G+dH/4WTN1sLdIo06WwDLjArz19c2ZHqV52uwb2vXA==
"@abp/toastr@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.4.tgz#884ab2343ddd59981c291c632e3b0630532f7e9c"
integrity sha512-NG0pVD8bdIXGpjPW9cozCzmyuAdnSLE4vDYLUReP1pZFp9B8SMJqpgPk9eFg0Y06aaHTVMKYBKRoq9xXS4w9Xg==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
toastr "^2.1.4"
"@abp/utils@~2.9.0":
version "2.9.0"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-2.9.0.tgz#8a66b7e1d422eae5898d32af7810d6bd625276f2"
integrity sha512-0gvWUH3jT7YE4ym2C45uKDzHs/oOdMW5lPq9ncCZ58wMxTrgPvxXNuMmRW0P259OcXYiRwmsNtb09/WlTQQbKA==
"@abp/utils@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.4.tgz#38068fa8f735e1889cf2f226128366825948814d"
integrity sha512-TnXRZIZcxv5+EctEPsZEi2cyRXbpl3A679wzQa6BACv+pM45cjGO1JR8P0VswKN4TVL0aQRMv26N6U/uie8sEQ==
dependencies:
just-compare "^1.3.0"

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json

@ -3,7 +3,7 @@
"name": "asp.net",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.3"
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.4"
},
"devDependencies": {}
}

284
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js

@ -7,49 +7,50 @@
compare = compare && Object.prototype.hasOwnProperty.call(compare, 'default') ? compare['default'] : compare;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
Copyright (c) Microsoft Corporation.
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
function (d, b) { for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
var __assign = function () {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __rest(s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
@ -57,161 +58,247 @@
}
return t;
}
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __param(paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
return function (target, key) { decorator(target, key, paramIndex); };
}
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function fulfilled(value) { try {
step(generator.next(value));
}
catch (e) {
reject(e);
} }
function rejected(value) { try {
step(generator["throw"](value));
}
catch (e) {
reject(e);
} }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
var _ = { label: 0, sent: function () { if (t[0] & 1)
throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
if (f)
throw new TypeError("Generator is already executing.");
while (_)
try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
return t;
if (y = 0, t)
op = [op[0] & 2, t.value];
switch (op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return { value: op[1], done: false };
case 5:
_.label++;
y = op[1];
op = [0];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2])
_.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
}
catch (e) {
op = [6, e];
y = 0;
}
finally {
f = t = 0;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
if (op[0] & 5)
throw op[1];
return { value: op[0] ? op[1] : void 0, done: true };
}
}
var __createBinding = Object.create ? (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
}) : (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
function __exportStar(m, exports) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
for (var p in m)
if (p !== "default" && !exports.hasOwnProperty(p))
__createBinding(exports, m, p);
}
function __values(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
if (m)
return m.call(o);
if (o && typeof o.length === "number")
return {
next: function () {
if (o && i >= o.length)
o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) {
e = { error: error };
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally {
if (e)
throw e.error;
}
finally { if (e) throw e.error; }
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
}
;
function __await(v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
}
function __asyncGenerator(thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
function verb(n) { if (g[n])
i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try {
step(g[n](v));
}
catch (e) {
settle(q[0][3], e);
} }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
function settle(f, v) { if (f(v), q.shift(), q.length)
resume(q[0][0], q[0][1]); }
}
function __asyncDelegator(o) {
var i, p;
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
}
function __asyncValues(o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
}
function __makeTemplateObject(cooked, raw) {
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
if (Object.defineProperty) {
Object.defineProperty(cooked, "raw", { value: raw });
}
else {
cooked.raw = raw;
}
return cooked;
}
;
var __setModuleDefault = Object.create ? (function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function (o, v) {
o["default"] = v;
};
function __importStar(mod) {
if (mod && mod.__esModule) return mod;
if (mod && mod.__esModule)
return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result.default = mod;
if (mod != null)
for (var k in mod)
if (Object.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
}
function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { default: mod };
}
function __classPrivateFieldGet(receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
}
function __classPrivateFieldSet(receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
@ -220,7 +307,6 @@
return value;
}
/* tslint:disable:no-non-null-assertion */
var ListNode = /** @class */ (function () {
function ListNode(value) {
this.value = value;
@ -235,21 +321,21 @@
get: function () {
return this.first;
},
enumerable: true,
enumerable: false,
configurable: true
});
Object.defineProperty(LinkedList.prototype, "tail", {
get: function () {
return this.last;
},
enumerable: true,
enumerable: false,
configurable: true
});
Object.defineProperty(LinkedList.prototype, "length", {
get: function () {
return this.size;
},
enumerable: true,
enumerable: false,
configurable: true
});
LinkedList.prototype.attach = function (value, previousNode, nextNode) {
@ -591,6 +677,14 @@
return LinkedList;
}());
/*
* Public API Surface of utils
*/
/**
* Generated bundle index. Do not edit.
*/
exports.LinkedList = LinkedList;
exports.ListNode = ListNode;

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map

File diff suppressed because one or more lines are too long

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js

File diff suppressed because one or more lines are too long

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map

File diff suppressed because one or more lines are too long

232
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.3.tgz#d891bcff681544f759ee715f6423130bffd1a05c"
integrity sha512-iXbK+wnPqTrkyzs0MfXxOjqEptJSZC/TdCukfeOI4ozJET1Y+g+r4SOcHCagLCSljIcO7E1Y79z6LPP0/x9fJw==
"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.4.tgz#c58e3e06ba78279875cf2b5f96d34b83ce09f6df"
integrity sha512-tKKqVRKpwN7P4Mn+he3bcz4Qbt8bkZ++wk6iOujd6HLTkBNa0uKyM4L6+iCn1Hi62S6HeK2Xytx+b+IYeIlsuw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.3"
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.3.tgz#fcea3dcea6a85dd88aa370578dca6e77fc80891c"
integrity sha512-ZuBBpH4Rlvr2Y6FpYt7FIiJwZLBmrnB8xJmP993AQtx+s39sLK3enb+poipkUBnq1N3yxmct06j7wsIlsstKXw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~3.0.3"
"@abp/bootstrap" "~3.0.3"
"@abp/bootstrap-datepicker" "~3.0.3"
"@abp/datatables.net-bs4" "~3.0.3"
"@abp/font-awesome" "~3.0.3"
"@abp/jquery-form" "~3.0.3"
"@abp/jquery-validation-unobtrusive" "~3.0.3"
"@abp/lodash" "~3.0.3"
"@abp/luxon" "~3.0.3"
"@abp/malihu-custom-scrollbar-plugin" "~3.0.3"
"@abp/select2" "~3.0.3"
"@abp/sweetalert" "~3.0.3"
"@abp/timeago" "~3.0.3"
"@abp/toastr" "~3.0.3"
"@abp/aspnetcore.mvc.ui@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.3.tgz#88e3350a839434cee38f9497d160e5f23ef5ac28"
integrity sha512-C4cSlnhGYNGQul/0WD9HP87knBQ/bj2q45Jt73ugn9RygEJVjhXPv30+H4sl1GZXmEg+kLgdAoNjM/Iipe+egQ==
"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.4.tgz#50db612b6492d36c63dd9042000a9fb00fecec54"
integrity sha512-imd2T5XXkNvGQyXV/A9hA80qSeurKaUcW6HDkte8Y2fs4QfvkjgzWXi7neqF6F+HVbYYPg3rIBWC6QF1OXGn2w==
dependencies:
"@abp/aspnetcore.mvc.ui" "~3.0.4"
"@abp/bootstrap" "~3.0.4"
"@abp/bootstrap-datepicker" "~3.0.4"
"@abp/datatables.net-bs4" "~3.0.4"
"@abp/font-awesome" "~3.0.4"
"@abp/jquery-form" "~3.0.4"
"@abp/jquery-validation-unobtrusive" "~3.0.4"
"@abp/lodash" "~3.0.4"
"@abp/luxon" "~3.0.4"
"@abp/malihu-custom-scrollbar-plugin" "~3.0.4"
"@abp/select2" "~3.0.4"
"@abp/sweetalert" "~3.0.4"
"@abp/timeago" "~3.0.4"
"@abp/toastr" "~3.0.4"
"@abp/aspnetcore.mvc.ui@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.4.tgz#4e4344d95a98a60c53037b351cb915d8ff7a7dcb"
integrity sha512-p7KI5CKkpD4EYzG4fCtygrtZhwMu7Z+IZFGbdqXelLbI5ACkbJyrn+N+9trPfS9papymeXY4p1E3v6xOH7rSHQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,144 +41,144 @@
path "^0.12.7"
rimraf "^3.0.2"
"@abp/bootstrap-datepicker@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.3.tgz#866d4b3b83bb548e7d71066408c5ab344ce33473"
integrity sha512-nnzm9rxu/vKIUdQQMlN/kGqL+DbOg8FmN81KyWJ23KmisViLVqDeTEJBHPOJ3WuzRN+SacoreiL4f3C+7YiiXQ==
"@abp/bootstrap-datepicker@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.4.tgz#d21963f158a4d348a0acdc46209e67378aae8e55"
integrity sha512-25e9qm39dj9AijIchQIdLlBiBM5/fhASkEuLKNt6M8S/e3qwKLwbRhX90DKMFvOyKdxxcK1gX7tDuGHyG9A8mA==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.3.tgz#1d0ce60eff1dc67642147f0f2897eb13f6353d09"
integrity sha512-Vd/bdyh4bnp3vz4QsPjlc8Wi1qfaRSBDekWbHWkNq568BLXSMkK6ucugGAvC7kshBj3bbSpHd9xWUImim0+Q/w==
"@abp/bootstrap@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.4.tgz#3b0e2b74dc174a04ce669de1b140df833eee6031"
integrity sha512-DwxL1fGYOwChPwmMpwUxCKiIdzTfRf/YDkOLUiwI8eRrpABBeuE2sSHKfks6Rqh9Wqo/nlWXvfccgDRqweqhsA==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2"
"@abp/core@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.3.tgz#05e45a5533f5a6f9014b4a4a87c73d96b7c071dc"
integrity sha512-lNrG0cYbHQHH6i2B5yfBL7iU3rl3TL66H+tDVCBqXNlnGAFOS48RG/jE2mMw54U8xgtwNczwBpgGVWAqU3uKig==
"@abp/core@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.4.tgz#281940525e280e9e3a1aa4cb4e8f64548ea026a3"
integrity sha512-ZPEH1fa5bf/f1ek9ZLQHx7u78iF6kRZ8Z2NBI36cNL13RyQbx485qJF+KXyqNlJoJAh0CAs0NsAJADU3utcDNA==
dependencies:
"@abp/utils" "~2.9.0"
"@abp/utils" "^3.0.4"
"@abp/datatables.net-bs4@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.3.tgz#627a64f4fdc8c7fb7f4e51232c4147b5f2cfe041"
integrity sha512-seZR/yu8p0SJMafVCwYA5YAi7F2IMMo6cBJsF+phTBrPGBaXd63arNK7ZiXYp3RfwnafglotKNgswO0lYRMXKw==
"@abp/datatables.net-bs4@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.4.tgz#e488336bd2c199146ea60464e0ba75aeb134957e"
integrity sha512-ID1XWKPxG9pv6mxBkku7JWvgXjTxJ1uShxmYv5kFYVuwOGMSvj8QVZInTHFcMdECopV56yjGPNOIFLeQj4Mw8Q==
dependencies:
"@abp/datatables.net" "~3.0.3"
"@abp/datatables.net" "~3.0.4"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.3.tgz#2a8eed257f943cc9d477eabe2501ead9fcc37d76"
integrity sha512-ULmYJZ3RU1kisMDCtB1Wq8tBmIn09QKW+asB33y9bT4td/cEDqULyJXbwNZYIzqA6VPzHenxiJbciFkFwPwkaQ==
"@abp/datatables.net@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.4.tgz#7ef143b83143ad8d769be25296411a812a17b255"
integrity sha512-gdQwRuxO5fQWhG/DiUaf40DQ8dWIVGhOCyt6SZ8LQzq4uSaQqa0qrtTTTW2/aiee4MgJu2vJWYF5YCszIR/HhA==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
datatables.net "^1.10.21"
"@abp/font-awesome@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.3.tgz#e0fb803c04c2f3f36017aa8a065a7f20245a2b50"
integrity sha512-UY9i35H+3EMqBszLdLyM72TRVp+hDe8CFs8q2PBNzoIsrMGqx4mKFSTxUsts03USqQ+4v6D08M056D3a0oS+DQ==
"@abp/font-awesome@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.4.tgz#98f83d0bf8b5a2a4d988cb07f5cceda2e1bc1a09"
integrity sha512-AKhKCUXx8vdHIgyXUfbSLitfYor5dJbo4qMRRGqIJVSj+cyMkpgYbGjqr24GGijgZxdmOGL+s1b9iCUbIPgLNQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.3.tgz#bcb6ca18c5671914fd87bb9651feef57142f9ae3"
integrity sha512-VokAc7jgBQAEcu15FSJPWLJcL+/mrFFwia/DdpkPyU+SrXHgD35Gu7Kb+/knQcVKNCM80mCH5gZXDbaA5Hrt3w==
"@abp/jquery-form@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.4.tgz#022eebbfe58b55e328984c0f119884c9464bc767"
integrity sha512-xDkk4rY0AmXBJE4qztzr2hZz+OVucVNWeagOEgeQHXJSKU/T+0kj0a1RxEHpyI24xBvEXAbe8PbByTbu0QXYew==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.3.tgz#e4247a56149306aa69a8df1017f7da9a07abce26"
integrity sha512-Ig3UyfPj5qyP2BCLYeaihMzzj2p4Hkh1uJX6Bm2qShRKDW3Br5D0z3JIEXiGvzukGTdCnTG+mwGQowZfdxgdUQ==
"@abp/jquery-validation-unobtrusive@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.4.tgz#6cc942aadcdde33893e7a45c84aa022e033e4e8b"
integrity sha512-N9sza91HCyPvJo+d0RAfq4skae3TgAYg7KXhlwzRE2hqUQS+EICVARURWyxJW7s7Zu6+gxDTkXhBZRTW56deZA==
dependencies:
"@abp/jquery-validation" "~3.0.3"
"@abp/jquery-validation" "~3.0.4"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.3.tgz#c95f5b9fa5d6ec973bffb0e98d08317707a95b83"
integrity sha512-Ss38QtC4IrDbICNJT9fTNWka6ekmhrfCrArOeVR8O47BIx9FRl2IBX8TBjuC3ZXv9c1oNxTICmmSCgQYfdQ02A==
"@abp/jquery-validation@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.4.tgz#3f96d1f83c75a7fc47e5e5e12c51dbc8da7582b1"
integrity sha512-2ljqas4YKU0PcwB0wQW2qhXejDHjW+N1XCxZDyCZ2wF9UxGlKBR8rFt76TJByXSotKE7n2hJRZaOh9ICZUow2g==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
jquery-validation "^1.19.2"
"@abp/jquery@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.3.tgz#b9b6b5c110c116d484b090a485503eb1e5f7f8fb"
integrity sha512-EVkCdy8bGHZ1Za/H7Iw5e/maiihx3Hn8VvU//D6U3FlC3D/Fo7hYEPOVvlVtpco6J1e0wMe9dUnCQxjPDBfQGw==
"@abp/jquery@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.4.tgz#5f236d95cfae7f65012cd8778fd74490b7542442"
integrity sha512-g8N8Te5vf+8djdksfZoZ3tXaqlBC4Ra39pAWU/XerlLl64u+XmAX1s6yKRfC2kS8lf292GgiFYuNOkb77J6k4A==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
jquery "~3.5.1"
"@abp/lodash@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.3.tgz#4289cc71d83ed3ec29beacd784ee68b6ac575274"
integrity sha512-7UIagvq204xsyNQq7yucSHRj3BPE/yvTUELLEDWmjBQPkjB9GukeoeYqUxderEbVboCLIPYgGCwAWz9IyBtvFQ==
"@abp/lodash@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.4.tgz#ee60bc99f98b59fd9fc5ff4bbcf914a13faf209d"
integrity sha512-jxvv74Sm/fUKDBMylK4Ne/8GKm7GuHAdcLFtkoJQptdO+RjZpKJ86ULT+X5vbKskZaTj2fEmOR6l4hmfnBULTA==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
lodash "^4.17.15"
"@abp/luxon@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.3.tgz#e2eb7db08c07efbd877a7216bf4f6aca18e24473"
integrity sha512-L7rzo7LLV9Kn92Fdk8g0+CqVsxedRs1cLmDA2QDn4idJ728kYJjSZpRWPjLW087dkSBen0Gtr7gxUn6HiXizpA==
"@abp/luxon@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.4.tgz#aa1bf6a93d6254433101e50a205b276759969414"
integrity sha512-gX9dQJt9C6M1wmCSUIBoNr8CAt0jkUZFQ7LKKO/BoADGM/XFvY5vDbhL7zcwbwitgCOzmucoCxs/6rIxSOVlrg==
dependencies:
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.3.tgz#77d45ac9044ebbe5a80a5764f4a55f1943c813f1"
integrity sha512-cJfdJexrZjJfoz+mMWXCFgi6gDa0fq9OAcpxZGz5aVeIrNOnWdEvjT02beowU9Rhl6vL6jWxpqaWt3H4jiGOSw==
"@abp/malihu-custom-scrollbar-plugin@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.4.tgz#c54824b98363f4190cc6a37fcd421c2bfdc1e201"
integrity sha512-6LdSGctOr4ACtdohdSlb19vrFNJ5C0hy1VdbBEafHOBspXckvRVx4uJl2KfHmAC+bMg9apoK/wcHjVNdBHThYQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.3.tgz#5545502067f12bd9e502133dc9c0f7b73adf0d18"
integrity sha512-tmQN1TfO3szU6iw/K+YjoIqKeD6hnCVNIedg0l2YqTyZfo9QREEzY8CRqQELphhGkHmsMOl5tjXeD9BJVMna2g==
"@abp/select2@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.4.tgz#49db0cfbc9b08f6ae4949b2cb8bdef92d7d308dd"
integrity sha512-zKEgkWBFdGU2KiAMUKhucHqBfzDy2KNSefyqxpOiUd1L3PEKu+9o23HZRWzDupYltop+SO1Jw33CNoVAkKm4+A==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
select2 "^4.0.13"
"@abp/sweetalert@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.3.tgz#a167d49303833d0821d63e47e3882b9dcb5a66f4"
integrity sha512-RMBkZ4Tmm2qcW88noswsrnD1cik0R3q2GCDV1Ngm2V+u2KbbSbtLN2B+YQEU1SwDop0Miml8eNk2GeRLYT6kbA==
"@abp/sweetalert@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.4.tgz#f85d11c5aabc6ceb509af1b8fd8d75bc3c74bd27"
integrity sha512-hO0qXUWxeMy/lfy3sb+5HvOmIPst6UvYJJGy3ZQR6DKEdkOktBX9sEDb7m6ij6xAIHqWIx1xLveul0oGteOG0Q==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
sweetalert "^2.1.2"
"@abp/timeago@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.3.tgz#1fa2f4814babc965a2a95149b432f1fc466ad18a"
integrity sha512-iUG9RfV8vSernjMoojlnManZ+QTaRlMOvikeHQR8MaPYH/XC2sRLNoLN0sYTC5F/xzLQU4MSQFXZ54dobUyYfA==
"@abp/timeago@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.4.tgz#82d90a04f703a7db9c0acedcd2f3cea684e7ae18"
integrity sha512-7SbbqScTKCix25xWy5oLT0slJqUQsW6YgJgI0N41C3AsByRBXZeh5Gcep033gprTPmpgNY8JOWcEcCXySnYvfA==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
timeago "^1.6.7"
"@abp/toastr@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.3.tgz#1f4421f03c6c69bd4ca93123953cdc4ac3abfd99"
integrity sha512-phMAFhJcLbti09da3WdDx5YZ2zzkh/Xgag2iJWunnnt5G+dH/4WTN1sLdIo06WwDLjArz19c2ZHqV52uwb2vXA==
"@abp/toastr@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.4.tgz#884ab2343ddd59981c291c632e3b0630532f7e9c"
integrity sha512-NG0pVD8bdIXGpjPW9cozCzmyuAdnSLE4vDYLUReP1pZFp9B8SMJqpgPk9eFg0Y06aaHTVMKYBKRoq9xXS4w9Xg==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
toastr "^2.1.4"
"@abp/utils@~2.9.0":
version "2.9.0"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-2.9.0.tgz#8a66b7e1d422eae5898d32af7810d6bd625276f2"
integrity sha512-0gvWUH3jT7YE4ym2C45uKDzHs/oOdMW5lPq9ncCZ58wMxTrgPvxXNuMmRW0P259OcXYiRwmsNtb09/WlTQQbKA==
"@abp/utils@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.4.tgz#38068fa8f735e1889cf2f226128366825948814d"
integrity sha512-TnXRZIZcxv5+EctEPsZEi2cyRXbpl3A679wzQa6BACv+pM45cjGO1JR8P0VswKN4TVL0aQRMv26N6U/uie8sEQ==
dependencies:
just-compare "^1.3.0"

24
framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo.Abp.BlobStoring.Aliyun.Tests.csproj

@ -0,0 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\common.test.props" />
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace />
<UserSecretsId>9f0d2c00-80c1-435b-bfab-2c39c8249091</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Volo.Abp.BlobStoring.Aliyun\Volo.Abp.BlobStoring.Aliyun.csproj" />
<ProjectReference Include="..\..\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\AbpTestBase\AbpTestBase.csproj" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="3.1.5" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
<ProjectReference Include="..\Volo.Abp.BlobStoring.Tests\Volo.Abp.BlobStoring.Tests.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
</Project>

19
framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo/Abp/BlobStoring/Aliyun/AbpBlobStoringAliyunTestBase.cs

@ -0,0 +1,19 @@
using Volo.Abp.Testing;
namespace Volo.Abp.BlobStoring.Aliyun
{
public class AbpBlobStoringAliyunTestCommonBase : AbpIntegratedTest<AbpBlobStoringAliyunTestCommonModule>
{
protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
{
options.UseAutofac();
}
}
public class AbpBlobStoringAliyunTestBase : AbpIntegratedTest<AbpBlobStoringAliyunTestModule>
{
protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
{
options.UseAutofac();
}
}
}

84
framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo/Abp/BlobStoring/Aliyun/AbpBlobStoringAliyunTestModule.cs

@ -0,0 +1,84 @@
using Aliyun.OSS;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Linq;
using Volo.Abp.Modularity;
namespace Volo.Abp.BlobStoring.Aliyun
{
[DependsOn(
typeof(AbpBlobStoringAliyunModule),
typeof(AbpBlobStoringTestModule)
)]
public class AbpBlobStoringAliyunTestCommonModule : AbpModule
{
}
[DependsOn(
typeof(AbpBlobStoringAliyunTestCommonModule)
)]
public class AbpBlobStoringAliyunTestModule : AbpModule
{
private const string UserSecretsId = "9f0d2c00-80c1-435b-bfab-2c39c8249091";
private AliyunBlobProviderConfiguration _configuration;
private readonly string _randomContainerName = "abp-aliyun-test-container-" + Guid.NewGuid().ToString("N");
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.ReplaceConfiguration(ConfigurationHelper.BuildConfiguration(builderAction: builder =>
{
builder.AddUserSecrets(UserSecretsId);
}));
var configuration = context.Services.GetConfiguration();
var accessKeyId = configuration["Aliyun:AccessKeyId"];
var accessKeySecret = configuration["Aliyun:AccessKeySecret"];
var endpoint = configuration["Aliyun:Endpoint"];
var regionId = configuration["Aliyun:RegionId"];
var roleArn = configuration["Aliyun:RoleArn"];
Configure<AbpBlobStoringOptions>(options =>
{
options.Containers.ConfigureAll((containerName, containerConfiguration) =>
{
containerConfiguration.UseAliyun(aliyun =>
{
aliyun.AccessKeyId = accessKeyId;
aliyun.AccessKeySecret = accessKeySecret;
aliyun.Endpoint = endpoint;
//STS
aliyun.RegionId = regionId;
aliyun.RoleArn = roleArn;
aliyun.RoleSessionName = Guid.NewGuid().ToString("N");
aliyun.DurationSeconds = 0;
aliyun.Policy = String.Empty;
//Other
aliyun.CreateContainerIfNotExists = true;
aliyun.ContainerName = _randomContainerName;
_configuration = aliyun;
});
});
});
}
public override void OnApplicationShutdown(ApplicationShutdownContext context)
{
var ossClientFactory = context.ServiceProvider.GetService<IOssClientFactory>();
var ossClient = ossClientFactory.Create(_configuration);
if(ossClient.DoesBucketExist(_randomContainerName))
{
var objects = ossClient.ListObjects(_randomContainerName);
if (objects.ObjectSummaries.Any())
{
ossClient.DeleteObjects(new DeleteObjectsRequest(_randomContainerName,
objects.ObjectSummaries.Select(o => o.Key).ToList()));
}
ossClient.DeleteBucket(_randomContainerName);
}
}
}
}

17
framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo/Abp/BlobStoring/Aliyun/AliyunBlobContainer_Tests.cs

@ -0,0 +1,17 @@
using Shouldly;
using System.IO;
using System.Text;
using Xunit;
namespace Volo.Abp.BlobStoring.Aliyun
{
/*
//Please set the correct connection string in secrets.json and continue the test.
public class AliyunBlobContainer_Tests : BlobContainer_Tests<AbpBlobStoringAliyunTestModule>
{
public AliyunBlobContainer_Tests()
{
}
}
*/
}

55
framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo/Abp/BlobStoring/Aliyun/AliyunBlobNameCalculator_Tests.cs

@ -0,0 +1,55 @@
using Shouldly;
using System;
using Volo.Abp.MultiTenancy;
using Xunit;
namespace Volo.Abp.BlobStoring.Aliyun
{
public class AliyunBlobNameCalculator_Tests: AbpBlobStoringAliyunTestCommonBase
{
private readonly IAliyunBlobNameCalculator _calculator;
private readonly ICurrentTenant _currentTenant;
private const string AliyunSeparator = "/";
public AliyunBlobNameCalculator_Tests()
{
_calculator = GetRequiredService<IAliyunBlobNameCalculator>();
_currentTenant = GetRequiredService<ICurrentTenant>();
}
[Fact]
public void Default_Settings()
{
_calculator.Calculate(
GetArgs("my-container", "my-blob")
).ShouldBe($"host{AliyunSeparator}my-blob");
}
[Fact]
public void Default_Settings_With_TenantId()
{
var tenantId = Guid.NewGuid();
using (_currentTenant.Change(tenantId))
{
_calculator.Calculate(
GetArgs("my-container", "my-blob")
).ShouldBe($"tenants{AliyunSeparator}{tenantId:D}{AliyunSeparator}my-blob");
}
}
private static BlobProviderArgs GetArgs(
string containerName,
string blobName)
{
return new BlobProviderGetArgs(
containerName,
new BlobContainerConfiguration().UseAliyun(x =>
{
}),
blobName
);
}
}
}

58
framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo/Abp/BlobStoring/Aliyun/DefaultAliyunBlobNamingNormalizerProvider_Tests.cs

@ -0,0 +1,58 @@
using Shouldly;
using Xunit;
namespace Volo.Abp.BlobStoring.Aliyun
{
public class DefaultAliyunBlobNamingNormalizerProvider_Tests: AbpBlobStoringAliyunTestCommonBase
{
private readonly IBlobNamingNormalizer _blobNamingNormalizer;
public DefaultAliyunBlobNamingNormalizerProvider_Tests()
{
_blobNamingNormalizer = GetRequiredService<IBlobNamingNormalizer>();
}
[Fact]
public void NormalizeContainerName_Lowercase()
{
var filename = "ThisIsMyContainerName";
filename = _blobNamingNormalizer.NormalizeContainerName(filename);
filename.ShouldBe("thisismycontainername");
}
[Fact]
public void NormalizeContainerName_Only_Letters_Numbers_Dash()
{
var filename = ",./this-i,./s-my-c,./ont,./ai+*/.=!@#$n^&*er-name.+/";
filename = _blobNamingNormalizer.NormalizeContainerName(filename);
filename.ShouldBe("this-is-my-container-name");
}
[Fact]
public void NormalizeContainerName_Dash()
{
var filename = "-this--is----my-container----name-";
filename = _blobNamingNormalizer.NormalizeContainerName(filename);
filename.ShouldBe("this-is-my-container-name");
}
[Fact]
public void NormalizeContainerName_Min_Length()
{
var filename = "a";
filename = _blobNamingNormalizer.NormalizeContainerName(filename);
filename.Length.ShouldBeGreaterThanOrEqualTo(3);
}
[Fact]
public void NormalizeContainerName_Max_Length()
{
var filename = "abpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabp";
filename = _blobNamingNormalizer.NormalizeContainerName(filename);
filename.Length.ShouldBeLessThanOrEqualTo(63);
}
}
}

17
framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo.Abp.BlobStoring.Minio.Tests.csproj

@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\common.test.props" />
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace />
<UserSecretsId>9f0d2c00-80c1-435b-bfab-2c39c8249091</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Volo.Abp.BlobStoring.Minio\Volo.Abp.BlobStoring.Minio.csproj" />
<ProjectReference Include="..\..\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\AbpTestBase\AbpTestBase.csproj" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
<ProjectReference Include="..\Volo.Abp.BlobStoring.Tests\Volo.Abp.BlobStoring.Tests.csproj" />
</ItemGroup>
</Project>

20
framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioTestBase.cs

@ -0,0 +1,20 @@
using Volo.Abp.Testing;
namespace Volo.Abp.BlobStoring.Minio
{
public class AbpBlobStoringMinioTestCommonBase : AbpIntegratedTest<AbpBlobStoringMinioTestCommonModule>
{
protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
{
options.UseAutofac();
}
}
public class AbpBlobStoringMinioTestBase : AbpIntegratedTest<AbpBlobStoringMinioTestModule>
{
protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
{
options.UseAutofac();
}
}
}

81
framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioTestModule.cs

@ -0,0 +1,81 @@
using System;
using System.Collections.Generic;
using System.Reactive.Linq;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Minio;
using Volo.Abp.Modularity;
namespace Volo.Abp.BlobStoring.Minio
{
[DependsOn(
typeof(AbpBlobStoringMinioModule),
typeof(AbpBlobStoringTestModule)
)]
public class AbpBlobStoringMinioTestCommonModule : AbpModule
{
}
[DependsOn(
typeof(AbpBlobStoringMinioTestCommonModule)
)]
public class AbpBlobStoringMinioTestModule : AbpModule
{
private const string UserSecretsId = "9f0d2c00-80c1-435b-bfab-2c39c8249091";
private string _endPoint;
private string _accessKey;
private string _secretKey;
private readonly string _randomContainerName = "abp-minio-test-container-" + Guid.NewGuid().ToString("N");
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.ReplaceConfiguration(ConfigurationHelper.BuildConfiguration(builderAction: builder =>
{
builder.AddUserSecrets(UserSecretsId);
}));
var configuration = context.Services.GetConfiguration();
_endPoint = configuration["Minio:EndPoint"];
_accessKey = configuration["Minio:AccessKey"];
_secretKey = configuration["Minio:SecretKey"];
Configure<AbpBlobStoringOptions>(options =>
{
options.Containers.ConfigureAll((containerName, containerConfiguration) =>
{
containerConfiguration.UseMinio(minio =>
{
minio.EndPoint = _endPoint;
minio.AccessKey = _accessKey;
minio.SecretKey = _secretKey;
minio.WithSSL = false;
minio.BucketName = _randomContainerName;
minio.CreateBucketIfNotExists = true;
});
});
});
}
public override async void OnApplicationShutdown(ApplicationShutdownContext context)
{
var minioClient = new MinioClient(_endPoint, _accessKey, _secretKey);
if (await minioClient.BucketExistsAsync(_randomContainerName))
{
var objects = await minioClient.ListObjectsAsync(_randomContainerName, null, true).ToList();
foreach (var item in objects)
{
await minioClient.RemoveObjectAsync(_randomContainerName, item.Key);
}
await minioClient.RemoveBucketAsync(_randomContainerName);
}
}
}
}

57
framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/DefaultMinioBlobNamingNormalizerProvider_Tests.cs

@ -0,0 +1,57 @@
using Shouldly;
using Xunit;
namespace Volo.Abp.BlobStoring.Minio
{
public class DefaultMinioBlobNamingNormalizerProvider_Tests : AbpBlobStoringMinioTestCommonBase
{
private readonly IBlobNamingNormalizer _blobNamingNormalizer;
public DefaultMinioBlobNamingNormalizerProvider_Tests()
{
_blobNamingNormalizer = GetRequiredService<IBlobNamingNormalizer>();
}
[Fact]
public void NormalizeContainerName_Lowercase()
{
var filename = "ThisIsMyContainerName";
filename = _blobNamingNormalizer.NormalizeContainerName(filename);
filename.ShouldBe("thisismycontainername");
}
[Fact]
public void NormalizeContainerName_Only_Letters_Numbers_Dash()
{
var filename = ",./this-i,./s-my-c,./ont,./ai+*/.=!@#$n^&*er-name.+/";
filename = _blobNamingNormalizer.NormalizeContainerName(filename);
filename.ShouldBe("this-is-my-container-name");
}
[Fact]
public void NormalizeContainerName_Dash()
{
var filename = "-this--is----my-container----name-";
filename = _blobNamingNormalizer.NormalizeContainerName(filename);
filename.ShouldBe("this-is-my-container-name");
}
[Fact]
public void NormalizeContainerName_Min_Length()
{
var filename = "a";
filename = _blobNamingNormalizer.NormalizeContainerName(filename);
filename.Length.ShouldBeGreaterThanOrEqualTo(3);
}
[Fact]
public void NormalizeContainerName_Max_Length()
{
var filename = "abpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabp";
filename = _blobNamingNormalizer.NormalizeContainerName(filename);
filename.Length.ShouldBeLessThanOrEqualTo(63);
}
}
}

16
framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/MinioBlobContainer_Tests.cs

@ -0,0 +1,16 @@
using Xunit;
namespace Volo.Abp.BlobStoring.Minio
{
/*
//Please set the correct connection string in secrets.json and continue the test.
public class MinioBlobContainer_Tests : BlobContainer_Tests<AbpBlobStoringMinioTestModule>
{
public MinioBlobContainer_Tests()
{
}
}
*/
}

56
framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/MinioBlobNameCalculator_Tests.cs

@ -0,0 +1,56 @@
using System;
using Shouldly;
using Volo.Abp.MultiTenancy;
using Xunit;
namespace Volo.Abp.BlobStoring.Minio
{
public class MinioBlobNameCalculator_Tests : AbpBlobStoringMinioTestCommonBase
{
private readonly IMinioBlobNameCalculator _calculator;
private readonly ICurrentTenant _currentTenant;
private const string MinioSeparator = "/";
public MinioBlobNameCalculator_Tests()
{
_calculator = GetRequiredService<IMinioBlobNameCalculator>();
_currentTenant = GetRequiredService<ICurrentTenant>();
}
[Fact]
public void Default_Settings()
{
_calculator.Calculate(
GetArgs("my-container", "my-blob")
).ShouldBe($"host{MinioSeparator}my-blob");
}
[Fact]
public void Default_Settings_With_TenantId()
{
var tenantId = Guid.NewGuid();
using (_currentTenant.Change(tenantId))
{
_calculator.Calculate(
GetArgs("my-container", "my-blob")
).ShouldBe($"tenants{MinioSeparator}{tenantId:D}{MinioSeparator}my-blob");
}
}
private static BlobProviderArgs GetArgs(
string containerName,
string blobName)
{
return new BlobProviderGetArgs(
containerName,
new BlobContainerConfiguration().UseMinio(x =>
{
x.BucketName = containerName;
}),
blobName
);
}
}
}

6
framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Repositories/RepositoryRegistration_Tests.cs

@ -280,6 +280,12 @@ namespace Volo.Abp.Domain.Repositories
{
throw new NotImplementedException();
}
public override Task<List<TEntity>> GetPagedListAsync(int skipCount, int maxResultCount, string sorting, bool includeDetails = false,
CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
}
}
public class MyTestDefaultRepository<TEntity, TKey> : MyTestDefaultRepository<TEntity>, IRepository<TEntity, TKey>

14
framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/Repository_Basic_Tests.cs

@ -35,6 +35,20 @@ namespace Volo.Abp.TestApp.Testing
persons.Count.ShouldBeGreaterThan(0);
}
[Fact]
public async Task GetPagedListAsync()
{
var persons = await PersonRepository.GetPagedListAsync(0, 10, "name");
persons.Count.ShouldBeGreaterThan(0);
}
[Fact]
public async Task GetPagedListAsync_Should_Return_Empty()
{
var persons = await PersonRepository.GetPagedListAsync(1, 10, "name");
persons.Count.ShouldBe(0);
}
[Fact]
public async Task GetAsync_With_Predicate()
{

5
modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json

@ -40,6 +40,9 @@
"DisplayName:Abp.Account.IsSelfRegistrationEnabled": "启用自行注册",
"Description:Abp.Account.IsSelfRegistrationEnabled": "是否允许用户自行注册帐户.",
"DisplayName:Abp.Account.EnableLocalLogin": "使用本地帐户进行身份验证",
"Description:Abp.Account.EnableLocalLogin": "服务器是否将允许用户使用本地帐户进行身份验证。"
"Description:Abp.Account.EnableLocalLogin": "服务器是否将允许用户使用本地帐户进行身份验证。",
"LoggedOutTitle": "注销",
"LoggedOutText": "你已成功注销并将马上返回.",
"ReturnToText": "点击此处返回到 {0}"
}
}

2
modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs

@ -50,6 +50,8 @@ namespace Volo.Abp.Account.Web.Pages.Account
if (context != null)
{
ShowCancelButton = true;
LoginInput.UserNameOrEmailAddress = context.LoginHint;
//TODO: Reference AspNetCore MultiTenancy module and use options to get the tenant key!

9
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml

@ -41,9 +41,12 @@
</form>
</div>
<div class="card-footer text-center border-0">
<abp-button type="button" button-type="Link" name="Action" value="Cancel" class="px-2 py-0">@L["Cancel"]</abp-button> @* TODO: Only show if identity server is used *@
</div>
@if (Model.ShowCancelButton)
{
<div class="card-footer text-center border-0">
<abp-button type="button" button-type="Link" name="Action" value="Cancel" class="px-2 py-0">@L["Cancel"]</abp-button>
</div>
}
</div>
}

4
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs

@ -51,6 +51,8 @@ namespace Volo.Abp.Account.Web.Pages.Account
protected IAuthenticationSchemeProvider SchemeProvider { get; }
protected AbpAccountOptions AccountOptions { get; }
public bool ShowCancelButton { get; set; }
public LoginModel(
IAuthenticationSchemeProvider schemeProvider,
IOptions<AbpAccountOptions> accountOptions)
@ -83,7 +85,7 @@ namespace Volo.Abp.Account.Web.Pages.Account
ValidateModel();
ExternalProviders = await GetExternalProviders();
EnableLocalLogin = await SettingProvider.IsTrueAsync(AccountSettingNames.EnableLocalLogin);
await ReplaceEmailToUsernameOfInputIfNeeds();

7
modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Volo.BloggingTestApp.EntityFrameworkCore.csproj

@ -3,7 +3,7 @@
<Import Project="..\..\..\..\configureawait.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
@ -14,4 +14,9 @@
<ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.Identity.EntityFrameworkCore\Volo.Abp.Identity.EntityFrameworkCore.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.5" />
</ItemGroup>
</Project>

2
modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj

@ -18,8 +18,6 @@
<PackageReference Include="Serilog.AspNetCore" Version="3.2.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.3.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.5" />
</ItemGroup>
<ItemGroup>

4
modules/blogging/app/Volo.BloggingTestApp/package.json

@ -3,7 +3,7 @@
"name": "volo.blogtestapp",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.3",
"@abp/blogging": "^3.0.3"
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.4",
"@abp/blogging": "^3.0.4"
}
}

284
modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.js

@ -7,49 +7,50 @@
compare = compare && Object.prototype.hasOwnProperty.call(compare, 'default') ? compare['default'] : compare;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
Copyright (c) Microsoft Corporation.
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
function (d, b) { for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
var __assign = function () {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __rest(s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
@ -57,161 +58,247 @@
}
return t;
}
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __param(paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
return function (target, key) { decorator(target, key, paramIndex); };
}
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function fulfilled(value) { try {
step(generator.next(value));
}
catch (e) {
reject(e);
} }
function rejected(value) { try {
step(generator["throw"](value));
}
catch (e) {
reject(e);
} }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
var _ = { label: 0, sent: function () { if (t[0] & 1)
throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
if (f)
throw new TypeError("Generator is already executing.");
while (_)
try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
return t;
if (y = 0, t)
op = [op[0] & 2, t.value];
switch (op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return { value: op[1], done: false };
case 5:
_.label++;
y = op[1];
op = [0];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2])
_.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
}
catch (e) {
op = [6, e];
y = 0;
}
finally {
f = t = 0;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
if (op[0] & 5)
throw op[1];
return { value: op[0] ? op[1] : void 0, done: true };
}
}
var __createBinding = Object.create ? (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
}) : (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
function __exportStar(m, exports) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
for (var p in m)
if (p !== "default" && !exports.hasOwnProperty(p))
__createBinding(exports, m, p);
}
function __values(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
if (m)
return m.call(o);
if (o && typeof o.length === "number")
return {
next: function () {
if (o && i >= o.length)
o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) {
e = { error: error };
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally {
if (e)
throw e.error;
}
finally { if (e) throw e.error; }
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
}
;
function __await(v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
}
function __asyncGenerator(thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
function verb(n) { if (g[n])
i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try {
step(g[n](v));
}
catch (e) {
settle(q[0][3], e);
} }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
function settle(f, v) { if (f(v), q.shift(), q.length)
resume(q[0][0], q[0][1]); }
}
function __asyncDelegator(o) {
var i, p;
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
}
function __asyncValues(o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
}
function __makeTemplateObject(cooked, raw) {
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
if (Object.defineProperty) {
Object.defineProperty(cooked, "raw", { value: raw });
}
else {
cooked.raw = raw;
}
return cooked;
}
;
var __setModuleDefault = Object.create ? (function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function (o, v) {
o["default"] = v;
};
function __importStar(mod) {
if (mod && mod.__esModule) return mod;
if (mod && mod.__esModule)
return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result.default = mod;
if (mod != null)
for (var k in mod)
if (Object.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
}
function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { default: mod };
}
function __classPrivateFieldGet(receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
}
function __classPrivateFieldSet(receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
@ -220,7 +307,6 @@
return value;
}
/* tslint:disable:no-non-null-assertion */
var ListNode = /** @class */ (function () {
function ListNode(value) {
this.value = value;
@ -235,21 +321,21 @@
get: function () {
return this.first;
},
enumerable: true,
enumerable: false,
configurable: true
});
Object.defineProperty(LinkedList.prototype, "tail", {
get: function () {
return this.last;
},
enumerable: true,
enumerable: false,
configurable: true
});
Object.defineProperty(LinkedList.prototype, "length", {
get: function () {
return this.size;
},
enumerable: true,
enumerable: false,
configurable: true
});
LinkedList.prototype.attach = function (value, previousNode, nextNode) {
@ -591,6 +677,14 @@
return LinkedList;
}());
/*
* Public API Surface of utils
*/
/**
* Generated bundle index. Do not edit.
*/
exports.LinkedList = LinkedList;
exports.ListNode = ListNode;

2
modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.js.map

File diff suppressed because one or more lines are too long

2
modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js

File diff suppressed because one or more lines are too long

2
modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map

File diff suppressed because one or more lines are too long

326
modules/blogging/app/Volo.BloggingTestApp/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.3.tgz#d891bcff681544f759ee715f6423130bffd1a05c"
integrity sha512-iXbK+wnPqTrkyzs0MfXxOjqEptJSZC/TdCukfeOI4ozJET1Y+g+r4SOcHCagLCSljIcO7E1Y79z6LPP0/x9fJw==
"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.4.tgz#c58e3e06ba78279875cf2b5f96d34b83ce09f6df"
integrity sha512-tKKqVRKpwN7P4Mn+he3bcz4Qbt8bkZ++wk6iOujd6HLTkBNa0uKyM4L6+iCn1Hi62S6HeK2Xytx+b+IYeIlsuw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.3"
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.3.tgz#fcea3dcea6a85dd88aa370578dca6e77fc80891c"
integrity sha512-ZuBBpH4Rlvr2Y6FpYt7FIiJwZLBmrnB8xJmP993AQtx+s39sLK3enb+poipkUBnq1N3yxmct06j7wsIlsstKXw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~3.0.3"
"@abp/bootstrap" "~3.0.3"
"@abp/bootstrap-datepicker" "~3.0.3"
"@abp/datatables.net-bs4" "~3.0.3"
"@abp/font-awesome" "~3.0.3"
"@abp/jquery-form" "~3.0.3"
"@abp/jquery-validation-unobtrusive" "~3.0.3"
"@abp/lodash" "~3.0.3"
"@abp/luxon" "~3.0.3"
"@abp/malihu-custom-scrollbar-plugin" "~3.0.3"
"@abp/select2" "~3.0.3"
"@abp/sweetalert" "~3.0.3"
"@abp/timeago" "~3.0.3"
"@abp/toastr" "~3.0.3"
"@abp/aspnetcore.mvc.ui@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.3.tgz#88e3350a839434cee38f9497d160e5f23ef5ac28"
integrity sha512-C4cSlnhGYNGQul/0WD9HP87knBQ/bj2q45Jt73ugn9RygEJVjhXPv30+H4sl1GZXmEg+kLgdAoNjM/Iipe+egQ==
"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.4.tgz#50db612b6492d36c63dd9042000a9fb00fecec54"
integrity sha512-imd2T5XXkNvGQyXV/A9hA80qSeurKaUcW6HDkte8Y2fs4QfvkjgzWXi7neqF6F+HVbYYPg3rIBWC6QF1OXGn2w==
dependencies:
"@abp/aspnetcore.mvc.ui" "~3.0.4"
"@abp/bootstrap" "~3.0.4"
"@abp/bootstrap-datepicker" "~3.0.4"
"@abp/datatables.net-bs4" "~3.0.4"
"@abp/font-awesome" "~3.0.4"
"@abp/jquery-form" "~3.0.4"
"@abp/jquery-validation-unobtrusive" "~3.0.4"
"@abp/lodash" "~3.0.4"
"@abp/luxon" "~3.0.4"
"@abp/malihu-custom-scrollbar-plugin" "~3.0.4"
"@abp/select2" "~3.0.4"
"@abp/sweetalert" "~3.0.4"
"@abp/timeago" "~3.0.4"
"@abp/toastr" "~3.0.4"
"@abp/aspnetcore.mvc.ui@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.4.tgz#4e4344d95a98a60c53037b351cb915d8ff7a7dcb"
integrity sha512-p7KI5CKkpD4EYzG4fCtygrtZhwMu7Z+IZFGbdqXelLbI5ACkbJyrn+N+9trPfS9papymeXY4p1E3v6xOH7rSHQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,213 +41,213 @@
path "^0.12.7"
rimraf "^3.0.2"
"@abp/blogging@^3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.0.3.tgz#9d956d241a163848559b7b518fd0722d3ee56238"
integrity sha512-vr2/BFqwRP1t7gud4oegB8V0txZ4lK3EHpAKoEAZCPyfE0+SczZX0Ypbns8Jt7OaWGHXMG0hcfGyZqAdxiOUGw==
"@abp/blogging@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.0.4.tgz#d309b18a410d047346c39ab3063cd95429ca693a"
integrity sha512-HjPmNgFuAI1PPB4Rn8q+CYZq77kTqdRByIbYHvM9NsLyjb4CKruJxwHIFQUEs2oaB1V0/1CtfQWOcJ8r6ciGfA==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.3"
"@abp/owl.carousel" "~3.0.3"
"@abp/prismjs" "~3.0.3"
"@abp/tui-editor" "~3.0.3"
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.4"
"@abp/owl.carousel" "~3.0.4"
"@abp/prismjs" "~3.0.4"
"@abp/tui-editor" "~3.0.4"
"@abp/bootstrap-datepicker@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.3.tgz#866d4b3b83bb548e7d71066408c5ab344ce33473"
integrity sha512-nnzm9rxu/vKIUdQQMlN/kGqL+DbOg8FmN81KyWJ23KmisViLVqDeTEJBHPOJ3WuzRN+SacoreiL4f3C+7YiiXQ==
"@abp/bootstrap-datepicker@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.4.tgz#d21963f158a4d348a0acdc46209e67378aae8e55"
integrity sha512-25e9qm39dj9AijIchQIdLlBiBM5/fhASkEuLKNt6M8S/e3qwKLwbRhX90DKMFvOyKdxxcK1gX7tDuGHyG9A8mA==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.3.tgz#1d0ce60eff1dc67642147f0f2897eb13f6353d09"
integrity sha512-Vd/bdyh4bnp3vz4QsPjlc8Wi1qfaRSBDekWbHWkNq568BLXSMkK6ucugGAvC7kshBj3bbSpHd9xWUImim0+Q/w==
"@abp/bootstrap@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.4.tgz#3b0e2b74dc174a04ce669de1b140df833eee6031"
integrity sha512-DwxL1fGYOwChPwmMpwUxCKiIdzTfRf/YDkOLUiwI8eRrpABBeuE2sSHKfks6Rqh9Wqo/nlWXvfccgDRqweqhsA==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2"
"@abp/clipboard@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.0.3.tgz#a726cec0ba743a946e479215bfbba550a8ea2f35"
integrity sha512-NcpkfrkEnGuJJ61e1O07VtNc+UHsYV4065nS6rVl4vJULB+7Hgw/bbLi01ycplYVUMJEPvNgffwwk64g+pNw2g==
"@abp/clipboard@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.0.4.tgz#17ff40e398de3c0ab5214e564d443ed52ac10630"
integrity sha512-vjjupRau7fgBxvQwaDrBHApP4Ce1x9XM7L64/c+A+oBny0SzuiSBGBYsjlFrJGmTHT/PhjoB1XQiBHrYYPXQfQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
clipboard "^2.0.6"
"@abp/codemirror@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.0.3.tgz#e2473b5abefda72e59eee981936d6e735218c56f"
integrity sha512-ouWemy+XEewV7oirpNJuKvntcjLu1O8mLDrI7BTQwyU/JOfk2MoRSJHxQTGkC3PQ2Pg5iiYcv7IhIsgJ/FtoBQ==
"@abp/codemirror@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.0.4.tgz#d223b9e44719844948025f1c47bd404923d9e40d"
integrity sha512-shv8bqnATrEg9K9P0m14eqlJCCSfSO57SCxYmF0DUH0wuykkWjFJ8gok2GijVZtA9FQDJbNbNXh2oSm4MCgRsA==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
codemirror "^5.54.0"
"@abp/core@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.3.tgz#05e45a5533f5a6f9014b4a4a87c73d96b7c071dc"
integrity sha512-lNrG0cYbHQHH6i2B5yfBL7iU3rl3TL66H+tDVCBqXNlnGAFOS48RG/jE2mMw54U8xgtwNczwBpgGVWAqU3uKig==
"@abp/core@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.4.tgz#281940525e280e9e3a1aa4cb4e8f64548ea026a3"
integrity sha512-ZPEH1fa5bf/f1ek9ZLQHx7u78iF6kRZ8Z2NBI36cNL13RyQbx485qJF+KXyqNlJoJAh0CAs0NsAJADU3utcDNA==
dependencies:
"@abp/utils" "~2.9.0"
"@abp/utils" "^3.0.4"
"@abp/datatables.net-bs4@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.3.tgz#627a64f4fdc8c7fb7f4e51232c4147b5f2cfe041"
integrity sha512-seZR/yu8p0SJMafVCwYA5YAi7F2IMMo6cBJsF+phTBrPGBaXd63arNK7ZiXYp3RfwnafglotKNgswO0lYRMXKw==
"@abp/datatables.net-bs4@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.4.tgz#e488336bd2c199146ea60464e0ba75aeb134957e"
integrity sha512-ID1XWKPxG9pv6mxBkku7JWvgXjTxJ1uShxmYv5kFYVuwOGMSvj8QVZInTHFcMdECopV56yjGPNOIFLeQj4Mw8Q==
dependencies:
"@abp/datatables.net" "~3.0.3"
"@abp/datatables.net" "~3.0.4"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.3.tgz#2a8eed257f943cc9d477eabe2501ead9fcc37d76"
integrity sha512-ULmYJZ3RU1kisMDCtB1Wq8tBmIn09QKW+asB33y9bT4td/cEDqULyJXbwNZYIzqA6VPzHenxiJbciFkFwPwkaQ==
"@abp/datatables.net@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.4.tgz#7ef143b83143ad8d769be25296411a812a17b255"
integrity sha512-gdQwRuxO5fQWhG/DiUaf40DQ8dWIVGhOCyt6SZ8LQzq4uSaQqa0qrtTTTW2/aiee4MgJu2vJWYF5YCszIR/HhA==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
datatables.net "^1.10.21"
"@abp/font-awesome@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.3.tgz#e0fb803c04c2f3f36017aa8a065a7f20245a2b50"
integrity sha512-UY9i35H+3EMqBszLdLyM72TRVp+hDe8CFs8q2PBNzoIsrMGqx4mKFSTxUsts03USqQ+4v6D08M056D3a0oS+DQ==
"@abp/font-awesome@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.4.tgz#98f83d0bf8b5a2a4d988cb07f5cceda2e1bc1a09"
integrity sha512-AKhKCUXx8vdHIgyXUfbSLitfYor5dJbo4qMRRGqIJVSj+cyMkpgYbGjqr24GGijgZxdmOGL+s1b9iCUbIPgLNQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/highlight.js@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.0.3.tgz#f32249977fefc7631c7e27c9464eed9f0146de40"
integrity sha512-V2Jm3Qb/db0HTvC2ESecaT1Ryi6YUHYpdXQeVlgRGsBIfcKuNs5FrD7mwPv+OkGCWpWDn1RIvTygck8UtgDpug==
"@abp/highlight.js@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.0.4.tgz#2f4cb60b7b621fd73f3eb92f70c3d8611ce07c2b"
integrity sha512-7iTDFgBBHn3w5MlhRylkV5to0+8cl0akVspe358zvIy9bdBv+t8Xgc8IomxKqA5EfjBFhR+Q/g0+DfoWLpL7xw==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
"@abp/jquery-form@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.3.tgz#bcb6ca18c5671914fd87bb9651feef57142f9ae3"
integrity sha512-VokAc7jgBQAEcu15FSJPWLJcL+/mrFFwia/DdpkPyU+SrXHgD35Gu7Kb+/knQcVKNCM80mCH5gZXDbaA5Hrt3w==
"@abp/jquery-form@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.4.tgz#022eebbfe58b55e328984c0f119884c9464bc767"
integrity sha512-xDkk4rY0AmXBJE4qztzr2hZz+OVucVNWeagOEgeQHXJSKU/T+0kj0a1RxEHpyI24xBvEXAbe8PbByTbu0QXYew==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.3.tgz#e4247a56149306aa69a8df1017f7da9a07abce26"
integrity sha512-Ig3UyfPj5qyP2BCLYeaihMzzj2p4Hkh1uJX6Bm2qShRKDW3Br5D0z3JIEXiGvzukGTdCnTG+mwGQowZfdxgdUQ==
"@abp/jquery-validation-unobtrusive@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.4.tgz#6cc942aadcdde33893e7a45c84aa022e033e4e8b"
integrity sha512-N9sza91HCyPvJo+d0RAfq4skae3TgAYg7KXhlwzRE2hqUQS+EICVARURWyxJW7s7Zu6+gxDTkXhBZRTW56deZA==
dependencies:
"@abp/jquery-validation" "~3.0.3"
"@abp/jquery-validation" "~3.0.4"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.3.tgz#c95f5b9fa5d6ec973bffb0e98d08317707a95b83"
integrity sha512-Ss38QtC4IrDbICNJT9fTNWka6ekmhrfCrArOeVR8O47BIx9FRl2IBX8TBjuC3ZXv9c1oNxTICmmSCgQYfdQ02A==
"@abp/jquery-validation@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.4.tgz#3f96d1f83c75a7fc47e5e5e12c51dbc8da7582b1"
integrity sha512-2ljqas4YKU0PcwB0wQW2qhXejDHjW+N1XCxZDyCZ2wF9UxGlKBR8rFt76TJByXSotKE7n2hJRZaOh9ICZUow2g==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
jquery-validation "^1.19.2"
"@abp/jquery@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.3.tgz#b9b6b5c110c116d484b090a485503eb1e5f7f8fb"
integrity sha512-EVkCdy8bGHZ1Za/H7Iw5e/maiihx3Hn8VvU//D6U3FlC3D/Fo7hYEPOVvlVtpco6J1e0wMe9dUnCQxjPDBfQGw==
"@abp/jquery@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.4.tgz#5f236d95cfae7f65012cd8778fd74490b7542442"
integrity sha512-g8N8Te5vf+8djdksfZoZ3tXaqlBC4Ra39pAWU/XerlLl64u+XmAX1s6yKRfC2kS8lf292GgiFYuNOkb77J6k4A==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
jquery "~3.5.1"
"@abp/lodash@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.3.tgz#4289cc71d83ed3ec29beacd784ee68b6ac575274"
integrity sha512-7UIagvq204xsyNQq7yucSHRj3BPE/yvTUELLEDWmjBQPkjB9GukeoeYqUxderEbVboCLIPYgGCwAWz9IyBtvFQ==
"@abp/lodash@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.4.tgz#ee60bc99f98b59fd9fc5ff4bbcf914a13faf209d"
integrity sha512-jxvv74Sm/fUKDBMylK4Ne/8GKm7GuHAdcLFtkoJQptdO+RjZpKJ86ULT+X5vbKskZaTj2fEmOR6l4hmfnBULTA==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
lodash "^4.17.15"
"@abp/luxon@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.3.tgz#e2eb7db08c07efbd877a7216bf4f6aca18e24473"
integrity sha512-L7rzo7LLV9Kn92Fdk8g0+CqVsxedRs1cLmDA2QDn4idJ728kYJjSZpRWPjLW087dkSBen0Gtr7gxUn6HiXizpA==
"@abp/luxon@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.4.tgz#aa1bf6a93d6254433101e50a205b276759969414"
integrity sha512-gX9dQJt9C6M1wmCSUIBoNr8CAt0jkUZFQ7LKKO/BoADGM/XFvY5vDbhL7zcwbwitgCOzmucoCxs/6rIxSOVlrg==
dependencies:
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.3.tgz#77d45ac9044ebbe5a80a5764f4a55f1943c813f1"
integrity sha512-cJfdJexrZjJfoz+mMWXCFgi6gDa0fq9OAcpxZGz5aVeIrNOnWdEvjT02beowU9Rhl6vL6jWxpqaWt3H4jiGOSw==
"@abp/malihu-custom-scrollbar-plugin@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.4.tgz#c54824b98363f4190cc6a37fcd421c2bfdc1e201"
integrity sha512-6LdSGctOr4ACtdohdSlb19vrFNJ5C0hy1VdbBEafHOBspXckvRVx4uJl2KfHmAC+bMg9apoK/wcHjVNdBHThYQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/markdown-it@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.0.3.tgz#df4585635eed287113bfc2cb4cb3d5d03cd4b071"
integrity sha512-NVKy+lKH2eGoswpETnjR0GKW72LpTNKYgOn4XCrBle2e5puIB/KaV0DuM63yi0ikz2yAmsFoxqZeII70it62LA==
"@abp/markdown-it@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.0.4.tgz#8be97cc1a48add764c76049c6303291252c56b12"
integrity sha512-94HjUbRQ+/RZoG0/h0nYA8Kk6IqJUtVzwM8/rUWGi45kwkSk6N/mCv537QD4hivHS0sLDx2KgEve9Ka8WnIKbQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
markdown-it "^11.0.0"
"@abp/owl.carousel@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.0.3.tgz#2decd9bdba9449cc69d5c22a7edec0c3e98a9e38"
integrity sha512-5ibiUhQxDGnjDOVBHyMERK6e72WzVXLHGDvzwhK5l6SDfzPAmQ7PSJVGIjfPHptSYTbXX48jYOoQPcwdSOoP4w==
"@abp/owl.carousel@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.0.4.tgz#18b4f93d06ad3b0f22f9fa4073b757f54e559c93"
integrity sha512-yZjlZ28JCuYSJPtnfoXssn1PdinbLbB4/Rixi43b2RbE0pI3U6ZnUOd0TAOwZyS7sO0OLdlGp2F/MKbln8u53A==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
owl.carousel "^2.3.4"
"@abp/prismjs@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.0.3.tgz#168eedc5d89ae793430a6bd6a092fd064f2ec3e3"
integrity sha512-+IN0Iz35UyckvN4sEEwcDqT1HNfukBChsSsuCQ7C3M7BVhgj652rDJlqOH2xBoH/WP7EjSLO7u0SvmbykRcxVw==
"@abp/prismjs@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.0.4.tgz#9cd8113b33dfd1b349b12740a2f7462f88bf3841"
integrity sha512-D+RNAhUhOCXnBNZVOq9EQg883eRbPKlIpFsxeMW065XOm5g7iO0eJACvyqGC8mt5reHmtxApnfiGNlhT1dK+Eg==
dependencies:
"@abp/clipboard" "~3.0.3"
"@abp/core" "~3.0.3"
"@abp/clipboard" "~3.0.4"
"@abp/core" "~3.0.4"
prismjs "^1.20.0"
"@abp/select2@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.3.tgz#5545502067f12bd9e502133dc9c0f7b73adf0d18"
integrity sha512-tmQN1TfO3szU6iw/K+YjoIqKeD6hnCVNIedg0l2YqTyZfo9QREEzY8CRqQELphhGkHmsMOl5tjXeD9BJVMna2g==
"@abp/select2@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.4.tgz#49db0cfbc9b08f6ae4949b2cb8bdef92d7d308dd"
integrity sha512-zKEgkWBFdGU2KiAMUKhucHqBfzDy2KNSefyqxpOiUd1L3PEKu+9o23HZRWzDupYltop+SO1Jw33CNoVAkKm4+A==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
select2 "^4.0.13"
"@abp/sweetalert@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.3.tgz#a167d49303833d0821d63e47e3882b9dcb5a66f4"
integrity sha512-RMBkZ4Tmm2qcW88noswsrnD1cik0R3q2GCDV1Ngm2V+u2KbbSbtLN2B+YQEU1SwDop0Miml8eNk2GeRLYT6kbA==
"@abp/sweetalert@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.4.tgz#f85d11c5aabc6ceb509af1b8fd8d75bc3c74bd27"
integrity sha512-hO0qXUWxeMy/lfy3sb+5HvOmIPst6UvYJJGy3ZQR6DKEdkOktBX9sEDb7m6ij6xAIHqWIx1xLveul0oGteOG0Q==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
sweetalert "^2.1.2"
"@abp/timeago@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.3.tgz#1fa2f4814babc965a2a95149b432f1fc466ad18a"
integrity sha512-iUG9RfV8vSernjMoojlnManZ+QTaRlMOvikeHQR8MaPYH/XC2sRLNoLN0sYTC5F/xzLQU4MSQFXZ54dobUyYfA==
"@abp/timeago@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.4.tgz#82d90a04f703a7db9c0acedcd2f3cea684e7ae18"
integrity sha512-7SbbqScTKCix25xWy5oLT0slJqUQsW6YgJgI0N41C3AsByRBXZeh5Gcep033gprTPmpgNY8JOWcEcCXySnYvfA==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
timeago "^1.6.7"
"@abp/toastr@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.3.tgz#1f4421f03c6c69bd4ca93123953cdc4ac3abfd99"
integrity sha512-phMAFhJcLbti09da3WdDx5YZ2zzkh/Xgag2iJWunnnt5G+dH/4WTN1sLdIo06WwDLjArz19c2ZHqV52uwb2vXA==
"@abp/toastr@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.4.tgz#884ab2343ddd59981c291c632e3b0630532f7e9c"
integrity sha512-NG0pVD8bdIXGpjPW9cozCzmyuAdnSLE4vDYLUReP1pZFp9B8SMJqpgPk9eFg0Y06aaHTVMKYBKRoq9xXS4w9Xg==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
toastr "^2.1.4"
"@abp/tui-editor@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.0.3.tgz#78793596df0376a302a0b9b0f0e75d39f68bfb79"
integrity sha512-H8SyBhlERxMu5MR7t0dLje5NIkL4m2H8hMv96VqF4puxwzr2hCCKvNZaiifDAwdHAzbIP60mUuqOQ2psghwsww==
"@abp/tui-editor@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.0.4.tgz#fe44e7e28bd9d3902fe2e77b4e78eb2aa2959846"
integrity sha512-+H03yYEtPbX+THnzdsW1j+XXSYMrKl8oLPIrrl71QkUW7mif+c2s6YHauJ2mqJ1Uc/7fEL/i1/nBkqU3XjQXPw==
dependencies:
"@abp/codemirror" "~3.0.3"
"@abp/highlight.js" "~3.0.3"
"@abp/jquery" "~3.0.3"
"@abp/markdown-it" "~3.0.3"
"@abp/codemirror" "~3.0.4"
"@abp/highlight.js" "~3.0.4"
"@abp/jquery" "~3.0.4"
"@abp/markdown-it" "~3.0.4"
tui-editor "^1.4.10"
"@abp/utils@~2.9.0":
version "2.9.0"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-2.9.0.tgz#8a66b7e1d422eae5898d32af7810d6bd625276f2"
integrity sha512-0gvWUH3jT7YE4ym2C45uKDzHs/oOdMW5lPq9ncCZ58wMxTrgPvxXNuMmRW0P259OcXYiRwmsNtb09/WlTQQbKA==
"@abp/utils@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.4.tgz#38068fa8f735e1889cf2f226128366825948814d"
integrity sha512-TnXRZIZcxv5+EctEPsZEi2cyRXbpl3A679wzQa6BACv+pM45cjGO1JR8P0VswKN4TVL0aQRMv26N6U/uie8sEQ==
dependencies:
just-compare "^1.3.0"

2
modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json

@ -3,6 +3,6 @@
"name": "client-simulation-web",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.3"
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.4"
}
}

284
modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js

@ -7,49 +7,50 @@
compare = compare && Object.prototype.hasOwnProperty.call(compare, 'default') ? compare['default'] : compare;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
Copyright (c) Microsoft Corporation.
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
function (d, b) { for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
var __assign = function () {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __rest(s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
@ -57,161 +58,247 @@
}
return t;
}
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __param(paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
return function (target, key) { decorator(target, key, paramIndex); };
}
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function fulfilled(value) { try {
step(generator.next(value));
}
catch (e) {
reject(e);
} }
function rejected(value) { try {
step(generator["throw"](value));
}
catch (e) {
reject(e);
} }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
var _ = { label: 0, sent: function () { if (t[0] & 1)
throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
if (f)
throw new TypeError("Generator is already executing.");
while (_)
try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
return t;
if (y = 0, t)
op = [op[0] & 2, t.value];
switch (op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return { value: op[1], done: false };
case 5:
_.label++;
y = op[1];
op = [0];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2])
_.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
}
catch (e) {
op = [6, e];
y = 0;
}
finally {
f = t = 0;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
if (op[0] & 5)
throw op[1];
return { value: op[0] ? op[1] : void 0, done: true };
}
}
var __createBinding = Object.create ? (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
}) : (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
function __exportStar(m, exports) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
for (var p in m)
if (p !== "default" && !exports.hasOwnProperty(p))
__createBinding(exports, m, p);
}
function __values(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
if (m)
return m.call(o);
if (o && typeof o.length === "number")
return {
next: function () {
if (o && i >= o.length)
o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) {
e = { error: error };
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally {
if (e)
throw e.error;
}
finally { if (e) throw e.error; }
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
}
;
function __await(v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
}
function __asyncGenerator(thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
function verb(n) { if (g[n])
i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try {
step(g[n](v));
}
catch (e) {
settle(q[0][3], e);
} }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
function settle(f, v) { if (f(v), q.shift(), q.length)
resume(q[0][0], q[0][1]); }
}
function __asyncDelegator(o) {
var i, p;
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
}
function __asyncValues(o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
}
function __makeTemplateObject(cooked, raw) {
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
if (Object.defineProperty) {
Object.defineProperty(cooked, "raw", { value: raw });
}
else {
cooked.raw = raw;
}
return cooked;
}
;
var __setModuleDefault = Object.create ? (function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function (o, v) {
o["default"] = v;
};
function __importStar(mod) {
if (mod && mod.__esModule) return mod;
if (mod && mod.__esModule)
return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result.default = mod;
if (mod != null)
for (var k in mod)
if (Object.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
}
function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { default: mod };
}
function __classPrivateFieldGet(receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
}
function __classPrivateFieldSet(receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
@ -220,7 +307,6 @@
return value;
}
/* tslint:disable:no-non-null-assertion */
var ListNode = /** @class */ (function () {
function ListNode(value) {
this.value = value;
@ -235,21 +321,21 @@
get: function () {
return this.first;
},
enumerable: true,
enumerable: false,
configurable: true
});
Object.defineProperty(LinkedList.prototype, "tail", {
get: function () {
return this.last;
},
enumerable: true,
enumerable: false,
configurable: true
});
Object.defineProperty(LinkedList.prototype, "length", {
get: function () {
return this.size;
},
enumerable: true,
enumerable: false,
configurable: true
});
LinkedList.prototype.attach = function (value, previousNode, nextNode) {
@ -591,6 +677,14 @@
return LinkedList;
}());
/*
* Public API Surface of utils
*/
/**
* Generated bundle index. Do not edit.
*/
exports.LinkedList = LinkedList;
exports.ListNode = ListNode;

2
modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map

File diff suppressed because one or more lines are too long

2
modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js

File diff suppressed because one or more lines are too long

2
modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map

File diff suppressed because one or more lines are too long

232
modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.3.tgz#d891bcff681544f759ee715f6423130bffd1a05c"
integrity sha512-iXbK+wnPqTrkyzs0MfXxOjqEptJSZC/TdCukfeOI4ozJET1Y+g+r4SOcHCagLCSljIcO7E1Y79z6LPP0/x9fJw==
"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.4.tgz#c58e3e06ba78279875cf2b5f96d34b83ce09f6df"
integrity sha512-tKKqVRKpwN7P4Mn+he3bcz4Qbt8bkZ++wk6iOujd6HLTkBNa0uKyM4L6+iCn1Hi62S6HeK2Xytx+b+IYeIlsuw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.3"
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.3.tgz#fcea3dcea6a85dd88aa370578dca6e77fc80891c"
integrity sha512-ZuBBpH4Rlvr2Y6FpYt7FIiJwZLBmrnB8xJmP993AQtx+s39sLK3enb+poipkUBnq1N3yxmct06j7wsIlsstKXw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~3.0.3"
"@abp/bootstrap" "~3.0.3"
"@abp/bootstrap-datepicker" "~3.0.3"
"@abp/datatables.net-bs4" "~3.0.3"
"@abp/font-awesome" "~3.0.3"
"@abp/jquery-form" "~3.0.3"
"@abp/jquery-validation-unobtrusive" "~3.0.3"
"@abp/lodash" "~3.0.3"
"@abp/luxon" "~3.0.3"
"@abp/malihu-custom-scrollbar-plugin" "~3.0.3"
"@abp/select2" "~3.0.3"
"@abp/sweetalert" "~3.0.3"
"@abp/timeago" "~3.0.3"
"@abp/toastr" "~3.0.3"
"@abp/aspnetcore.mvc.ui@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.3.tgz#88e3350a839434cee38f9497d160e5f23ef5ac28"
integrity sha512-C4cSlnhGYNGQul/0WD9HP87knBQ/bj2q45Jt73ugn9RygEJVjhXPv30+H4sl1GZXmEg+kLgdAoNjM/Iipe+egQ==
"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.4.tgz#50db612b6492d36c63dd9042000a9fb00fecec54"
integrity sha512-imd2T5XXkNvGQyXV/A9hA80qSeurKaUcW6HDkte8Y2fs4QfvkjgzWXi7neqF6F+HVbYYPg3rIBWC6QF1OXGn2w==
dependencies:
"@abp/aspnetcore.mvc.ui" "~3.0.4"
"@abp/bootstrap" "~3.0.4"
"@abp/bootstrap-datepicker" "~3.0.4"
"@abp/datatables.net-bs4" "~3.0.4"
"@abp/font-awesome" "~3.0.4"
"@abp/jquery-form" "~3.0.4"
"@abp/jquery-validation-unobtrusive" "~3.0.4"
"@abp/lodash" "~3.0.4"
"@abp/luxon" "~3.0.4"
"@abp/malihu-custom-scrollbar-plugin" "~3.0.4"
"@abp/select2" "~3.0.4"
"@abp/sweetalert" "~3.0.4"
"@abp/timeago" "~3.0.4"
"@abp/toastr" "~3.0.4"
"@abp/aspnetcore.mvc.ui@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.4.tgz#4e4344d95a98a60c53037b351cb915d8ff7a7dcb"
integrity sha512-p7KI5CKkpD4EYzG4fCtygrtZhwMu7Z+IZFGbdqXelLbI5ACkbJyrn+N+9trPfS9papymeXY4p1E3v6xOH7rSHQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,144 +41,144 @@
path "^0.12.7"
rimraf "^3.0.2"
"@abp/bootstrap-datepicker@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.3.tgz#866d4b3b83bb548e7d71066408c5ab344ce33473"
integrity sha512-nnzm9rxu/vKIUdQQMlN/kGqL+DbOg8FmN81KyWJ23KmisViLVqDeTEJBHPOJ3WuzRN+SacoreiL4f3C+7YiiXQ==
"@abp/bootstrap-datepicker@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.4.tgz#d21963f158a4d348a0acdc46209e67378aae8e55"
integrity sha512-25e9qm39dj9AijIchQIdLlBiBM5/fhASkEuLKNt6M8S/e3qwKLwbRhX90DKMFvOyKdxxcK1gX7tDuGHyG9A8mA==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.3.tgz#1d0ce60eff1dc67642147f0f2897eb13f6353d09"
integrity sha512-Vd/bdyh4bnp3vz4QsPjlc8Wi1qfaRSBDekWbHWkNq568BLXSMkK6ucugGAvC7kshBj3bbSpHd9xWUImim0+Q/w==
"@abp/bootstrap@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.4.tgz#3b0e2b74dc174a04ce669de1b140df833eee6031"
integrity sha512-DwxL1fGYOwChPwmMpwUxCKiIdzTfRf/YDkOLUiwI8eRrpABBeuE2sSHKfks6Rqh9Wqo/nlWXvfccgDRqweqhsA==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2"
"@abp/core@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.3.tgz#05e45a5533f5a6f9014b4a4a87c73d96b7c071dc"
integrity sha512-lNrG0cYbHQHH6i2B5yfBL7iU3rl3TL66H+tDVCBqXNlnGAFOS48RG/jE2mMw54U8xgtwNczwBpgGVWAqU3uKig==
"@abp/core@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.4.tgz#281940525e280e9e3a1aa4cb4e8f64548ea026a3"
integrity sha512-ZPEH1fa5bf/f1ek9ZLQHx7u78iF6kRZ8Z2NBI36cNL13RyQbx485qJF+KXyqNlJoJAh0CAs0NsAJADU3utcDNA==
dependencies:
"@abp/utils" "~2.9.0"
"@abp/utils" "^3.0.4"
"@abp/datatables.net-bs4@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.3.tgz#627a64f4fdc8c7fb7f4e51232c4147b5f2cfe041"
integrity sha512-seZR/yu8p0SJMafVCwYA5YAi7F2IMMo6cBJsF+phTBrPGBaXd63arNK7ZiXYp3RfwnafglotKNgswO0lYRMXKw==
"@abp/datatables.net-bs4@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.4.tgz#e488336bd2c199146ea60464e0ba75aeb134957e"
integrity sha512-ID1XWKPxG9pv6mxBkku7JWvgXjTxJ1uShxmYv5kFYVuwOGMSvj8QVZInTHFcMdECopV56yjGPNOIFLeQj4Mw8Q==
dependencies:
"@abp/datatables.net" "~3.0.3"
"@abp/datatables.net" "~3.0.4"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.3.tgz#2a8eed257f943cc9d477eabe2501ead9fcc37d76"
integrity sha512-ULmYJZ3RU1kisMDCtB1Wq8tBmIn09QKW+asB33y9bT4td/cEDqULyJXbwNZYIzqA6VPzHenxiJbciFkFwPwkaQ==
"@abp/datatables.net@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.4.tgz#7ef143b83143ad8d769be25296411a812a17b255"
integrity sha512-gdQwRuxO5fQWhG/DiUaf40DQ8dWIVGhOCyt6SZ8LQzq4uSaQqa0qrtTTTW2/aiee4MgJu2vJWYF5YCszIR/HhA==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
datatables.net "^1.10.21"
"@abp/font-awesome@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.3.tgz#e0fb803c04c2f3f36017aa8a065a7f20245a2b50"
integrity sha512-UY9i35H+3EMqBszLdLyM72TRVp+hDe8CFs8q2PBNzoIsrMGqx4mKFSTxUsts03USqQ+4v6D08M056D3a0oS+DQ==
"@abp/font-awesome@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.4.tgz#98f83d0bf8b5a2a4d988cb07f5cceda2e1bc1a09"
integrity sha512-AKhKCUXx8vdHIgyXUfbSLitfYor5dJbo4qMRRGqIJVSj+cyMkpgYbGjqr24GGijgZxdmOGL+s1b9iCUbIPgLNQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.3.tgz#bcb6ca18c5671914fd87bb9651feef57142f9ae3"
integrity sha512-VokAc7jgBQAEcu15FSJPWLJcL+/mrFFwia/DdpkPyU+SrXHgD35Gu7Kb+/knQcVKNCM80mCH5gZXDbaA5Hrt3w==
"@abp/jquery-form@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.4.tgz#022eebbfe58b55e328984c0f119884c9464bc767"
integrity sha512-xDkk4rY0AmXBJE4qztzr2hZz+OVucVNWeagOEgeQHXJSKU/T+0kj0a1RxEHpyI24xBvEXAbe8PbByTbu0QXYew==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.3.tgz#e4247a56149306aa69a8df1017f7da9a07abce26"
integrity sha512-Ig3UyfPj5qyP2BCLYeaihMzzj2p4Hkh1uJX6Bm2qShRKDW3Br5D0z3JIEXiGvzukGTdCnTG+mwGQowZfdxgdUQ==
"@abp/jquery-validation-unobtrusive@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.4.tgz#6cc942aadcdde33893e7a45c84aa022e033e4e8b"
integrity sha512-N9sza91HCyPvJo+d0RAfq4skae3TgAYg7KXhlwzRE2hqUQS+EICVARURWyxJW7s7Zu6+gxDTkXhBZRTW56deZA==
dependencies:
"@abp/jquery-validation" "~3.0.3"
"@abp/jquery-validation" "~3.0.4"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.3.tgz#c95f5b9fa5d6ec973bffb0e98d08317707a95b83"
integrity sha512-Ss38QtC4IrDbICNJT9fTNWka6ekmhrfCrArOeVR8O47BIx9FRl2IBX8TBjuC3ZXv9c1oNxTICmmSCgQYfdQ02A==
"@abp/jquery-validation@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.4.tgz#3f96d1f83c75a7fc47e5e5e12c51dbc8da7582b1"
integrity sha512-2ljqas4YKU0PcwB0wQW2qhXejDHjW+N1XCxZDyCZ2wF9UxGlKBR8rFt76TJByXSotKE7n2hJRZaOh9ICZUow2g==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
jquery-validation "^1.19.2"
"@abp/jquery@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.3.tgz#b9b6b5c110c116d484b090a485503eb1e5f7f8fb"
integrity sha512-EVkCdy8bGHZ1Za/H7Iw5e/maiihx3Hn8VvU//D6U3FlC3D/Fo7hYEPOVvlVtpco6J1e0wMe9dUnCQxjPDBfQGw==
"@abp/jquery@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.4.tgz#5f236d95cfae7f65012cd8778fd74490b7542442"
integrity sha512-g8N8Te5vf+8djdksfZoZ3tXaqlBC4Ra39pAWU/XerlLl64u+XmAX1s6yKRfC2kS8lf292GgiFYuNOkb77J6k4A==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
jquery "~3.5.1"
"@abp/lodash@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.3.tgz#4289cc71d83ed3ec29beacd784ee68b6ac575274"
integrity sha512-7UIagvq204xsyNQq7yucSHRj3BPE/yvTUELLEDWmjBQPkjB9GukeoeYqUxderEbVboCLIPYgGCwAWz9IyBtvFQ==
"@abp/lodash@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.4.tgz#ee60bc99f98b59fd9fc5ff4bbcf914a13faf209d"
integrity sha512-jxvv74Sm/fUKDBMylK4Ne/8GKm7GuHAdcLFtkoJQptdO+RjZpKJ86ULT+X5vbKskZaTj2fEmOR6l4hmfnBULTA==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
lodash "^4.17.15"
"@abp/luxon@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.3.tgz#e2eb7db08c07efbd877a7216bf4f6aca18e24473"
integrity sha512-L7rzo7LLV9Kn92Fdk8g0+CqVsxedRs1cLmDA2QDn4idJ728kYJjSZpRWPjLW087dkSBen0Gtr7gxUn6HiXizpA==
"@abp/luxon@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.4.tgz#aa1bf6a93d6254433101e50a205b276759969414"
integrity sha512-gX9dQJt9C6M1wmCSUIBoNr8CAt0jkUZFQ7LKKO/BoADGM/XFvY5vDbhL7zcwbwitgCOzmucoCxs/6rIxSOVlrg==
dependencies:
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.3.tgz#77d45ac9044ebbe5a80a5764f4a55f1943c813f1"
integrity sha512-cJfdJexrZjJfoz+mMWXCFgi6gDa0fq9OAcpxZGz5aVeIrNOnWdEvjT02beowU9Rhl6vL6jWxpqaWt3H4jiGOSw==
"@abp/malihu-custom-scrollbar-plugin@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.4.tgz#c54824b98363f4190cc6a37fcd421c2bfdc1e201"
integrity sha512-6LdSGctOr4ACtdohdSlb19vrFNJ5C0hy1VdbBEafHOBspXckvRVx4uJl2KfHmAC+bMg9apoK/wcHjVNdBHThYQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.3.tgz#5545502067f12bd9e502133dc9c0f7b73adf0d18"
integrity sha512-tmQN1TfO3szU6iw/K+YjoIqKeD6hnCVNIedg0l2YqTyZfo9QREEzY8CRqQELphhGkHmsMOl5tjXeD9BJVMna2g==
"@abp/select2@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.4.tgz#49db0cfbc9b08f6ae4949b2cb8bdef92d7d308dd"
integrity sha512-zKEgkWBFdGU2KiAMUKhucHqBfzDy2KNSefyqxpOiUd1L3PEKu+9o23HZRWzDupYltop+SO1Jw33CNoVAkKm4+A==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
select2 "^4.0.13"
"@abp/sweetalert@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.3.tgz#a167d49303833d0821d63e47e3882b9dcb5a66f4"
integrity sha512-RMBkZ4Tmm2qcW88noswsrnD1cik0R3q2GCDV1Ngm2V+u2KbbSbtLN2B+YQEU1SwDop0Miml8eNk2GeRLYT6kbA==
"@abp/sweetalert@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.4.tgz#f85d11c5aabc6ceb509af1b8fd8d75bc3c74bd27"
integrity sha512-hO0qXUWxeMy/lfy3sb+5HvOmIPst6UvYJJGy3ZQR6DKEdkOktBX9sEDb7m6ij6xAIHqWIx1xLveul0oGteOG0Q==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
sweetalert "^2.1.2"
"@abp/timeago@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.3.tgz#1fa2f4814babc965a2a95149b432f1fc466ad18a"
integrity sha512-iUG9RfV8vSernjMoojlnManZ+QTaRlMOvikeHQR8MaPYH/XC2sRLNoLN0sYTC5F/xzLQU4MSQFXZ54dobUyYfA==
"@abp/timeago@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.4.tgz#82d90a04f703a7db9c0acedcd2f3cea684e7ae18"
integrity sha512-7SbbqScTKCix25xWy5oLT0slJqUQsW6YgJgI0N41C3AsByRBXZeh5Gcep033gprTPmpgNY8JOWcEcCXySnYvfA==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
timeago "^1.6.7"
"@abp/toastr@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.3.tgz#1f4421f03c6c69bd4ca93123953cdc4ac3abfd99"
integrity sha512-phMAFhJcLbti09da3WdDx5YZ2zzkh/Xgag2iJWunnnt5G+dH/4WTN1sLdIo06WwDLjArz19c2ZHqV52uwb2vXA==
"@abp/toastr@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.4.tgz#884ab2343ddd59981c291c632e3b0630532f7e9c"
integrity sha512-NG0pVD8bdIXGpjPW9cozCzmyuAdnSLE4vDYLUReP1pZFp9B8SMJqpgPk9eFg0Y06aaHTVMKYBKRoq9xXS4w9Xg==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
toastr "^2.1.4"
"@abp/utils@~2.9.0":
version "2.9.0"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-2.9.0.tgz#8a66b7e1d422eae5898d32af7810d6bd625276f2"
integrity sha512-0gvWUH3jT7YE4ym2C45uKDzHs/oOdMW5lPq9ncCZ58wMxTrgPvxXNuMmRW0P259OcXYiRwmsNtb09/WlTQQbKA==
"@abp/utils@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.4.tgz#38068fa8f735e1889cf2f226128366825948814d"
integrity sha512-TnXRZIZcxv5+EctEPsZEi2cyRXbpl3A679wzQa6BACv+pM45cjGO1JR8P0VswKN4TVL0aQRMv26N6U/uie8sEQ==
dependencies:
just-compare "^1.3.0"

35
modules/cms-kit/Volo.CmsKit.sln

@ -77,6 +77,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Public.HttpApi.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Public.Web", "src\Volo.CmsKit.Public.Web\Volo.CmsKit.Public.Web.csproj", "{BE2572ED-F505-435D-9A90-30DBC6C2DC1D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.Web", "src\Volo.CmsKit.Common.Web\Volo.CmsKit.Common.Web.csproj", "{4B2C2431-7351-41F0-B5E1-F8A9859FA838}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.Application.Contracts", "src\Volo.CmsKit.Common.Application.Contracts\Volo.CmsKit.Common.Application.Contracts.csproj", "{A0D38C5B-047F-49C1-9A6D-B41E4FB9B323}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.Application", "src\Volo.CmsKit.Common.Application\Volo.CmsKit.Common.Application.csproj", "{5D9BD65D-353E-4618-BE49-E1DF4CFF2393}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.HttpApi", "src\Volo.CmsKit.Common.HttpApi\Volo.CmsKit.Common.HttpApi.csproj", "{E8CC280A-D049-4564-9C71-2F5657C17937}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.HttpApi.Client", "src\Volo.CmsKit.Common.HttpApi.Client\Volo.CmsKit.Common.HttpApi.Client.csproj", "{EC98F006-2002-4CE2-AA62-5EBB589ACD79}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -203,6 +213,26 @@ Global
{BE2572ED-F505-435D-9A90-30DBC6C2DC1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BE2572ED-F505-435D-9A90-30DBC6C2DC1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BE2572ED-F505-435D-9A90-30DBC6C2DC1D}.Release|Any CPU.Build.0 = Release|Any CPU
{4B2C2431-7351-41F0-B5E1-F8A9859FA838}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B2C2431-7351-41F0-B5E1-F8A9859FA838}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4B2C2431-7351-41F0-B5E1-F8A9859FA838}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B2C2431-7351-41F0-B5E1-F8A9859FA838}.Release|Any CPU.Build.0 = Release|Any CPU
{A0D38C5B-047F-49C1-9A6D-B41E4FB9B323}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A0D38C5B-047F-49C1-9A6D-B41E4FB9B323}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A0D38C5B-047F-49C1-9A6D-B41E4FB9B323}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A0D38C5B-047F-49C1-9A6D-B41E4FB9B323}.Release|Any CPU.Build.0 = Release|Any CPU
{5D9BD65D-353E-4618-BE49-E1DF4CFF2393}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5D9BD65D-353E-4618-BE49-E1DF4CFF2393}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5D9BD65D-353E-4618-BE49-E1DF4CFF2393}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5D9BD65D-353E-4618-BE49-E1DF4CFF2393}.Release|Any CPU.Build.0 = Release|Any CPU
{E8CC280A-D049-4564-9C71-2F5657C17937}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E8CC280A-D049-4564-9C71-2F5657C17937}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E8CC280A-D049-4564-9C71-2F5657C17937}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E8CC280A-D049-4564-9C71-2F5657C17937}.Release|Any CPU.Build.0 = Release|Any CPU
{EC98F006-2002-4CE2-AA62-5EBB589ACD79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EC98F006-2002-4CE2-AA62-5EBB589ACD79}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EC98F006-2002-4CE2-AA62-5EBB589ACD79}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EC98F006-2002-4CE2-AA62-5EBB589ACD79}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -242,6 +272,11 @@ Global
{37C03B72-5FD8-4B67-8090-8A20CD8095A6} = {3C74B8E8-CB34-49C8-B02A-05E959601FEE}
{E790C2C6-39AC-4068-AA7D-309DC9AA1437} = {3C74B8E8-CB34-49C8-B02A-05E959601FEE}
{BE2572ED-F505-435D-9A90-30DBC6C2DC1D} = {3C74B8E8-CB34-49C8-B02A-05E959601FEE}
{4B2C2431-7351-41F0-B5E1-F8A9859FA838} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{A0D38C5B-047F-49C1-9A6D-B41E4FB9B323} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{5D9BD65D-353E-4618-BE49-E1DF4CFF2393} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{E8CC280A-D049-4564-9C71-2F5657C17937} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{EC98F006-2002-4CE2-AA62-5EBB589ACD79} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}

4
modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/appsettings.json

@ -3,8 +3,8 @@
"CorsOrigins": "https://*.CmsKit.com,http://localhost:4200"
},
"ConnectionStrings": {
"Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=CmsKit_Main;Trusted_Connection=True;MultipleActiveResultSets=true",
"CmsKit": "Server=(LocalDb)\\MSSQLLocalDB;Database=CmsKit_Module;Trusted_Connection=True;MultipleActiveResultSets=true"
"Default": "Server=localhost;Database=CmsKit_Main;Trusted_Connection=True;MultipleActiveResultSets=true",
"CmsKit": "Server=localhost;Database=CmsKit_Module;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Redis": {
"Configuration": "127.0.0.1"

2
modules/cms-kit/host/Volo.CmsKit.IdentityServer/appsettings.json

@ -5,7 +5,7 @@
},
"AppSelfUrl": "https://localhost:44318/",
"ConnectionStrings": {
"Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=CmsKit_Main;Trusted_Connection=True;MultipleActiveResultSets=true"
"Default": "Server=localhost;Database=CmsKit_Main;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Redis": {
"Configuration": "127.0.0.1"

284
modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js

@ -7,49 +7,50 @@
compare = compare && Object.prototype.hasOwnProperty.call(compare, 'default') ? compare['default'] : compare;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
Copyright (c) Microsoft Corporation.
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
function (d, b) { for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
var __assign = function () {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __rest(s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
@ -57,161 +58,247 @@
}
return t;
}
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __param(paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
return function (target, key) { decorator(target, key, paramIndex); };
}
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function fulfilled(value) { try {
step(generator.next(value));
}
catch (e) {
reject(e);
} }
function rejected(value) { try {
step(generator["throw"](value));
}
catch (e) {
reject(e);
} }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
var _ = { label: 0, sent: function () { if (t[0] & 1)
throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
if (f)
throw new TypeError("Generator is already executing.");
while (_)
try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
return t;
if (y = 0, t)
op = [op[0] & 2, t.value];
switch (op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return { value: op[1], done: false };
case 5:
_.label++;
y = op[1];
op = [0];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2])
_.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
}
catch (e) {
op = [6, e];
y = 0;
}
finally {
f = t = 0;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
if (op[0] & 5)
throw op[1];
return { value: op[0] ? op[1] : void 0, done: true };
}
}
var __createBinding = Object.create ? (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
}) : (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
function __exportStar(m, exports) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
for (var p in m)
if (p !== "default" && !exports.hasOwnProperty(p))
__createBinding(exports, m, p);
}
function __values(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
if (m)
return m.call(o);
if (o && typeof o.length === "number")
return {
next: function () {
if (o && i >= o.length)
o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) {
e = { error: error };
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally {
if (e)
throw e.error;
}
finally { if (e) throw e.error; }
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
}
;
function __await(v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
}
function __asyncGenerator(thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
function verb(n) { if (g[n])
i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try {
step(g[n](v));
}
catch (e) {
settle(q[0][3], e);
} }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
function settle(f, v) { if (f(v), q.shift(), q.length)
resume(q[0][0], q[0][1]); }
}
function __asyncDelegator(o) {
var i, p;
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
}
function __asyncValues(o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
}
function __makeTemplateObject(cooked, raw) {
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
if (Object.defineProperty) {
Object.defineProperty(cooked, "raw", { value: raw });
}
else {
cooked.raw = raw;
}
return cooked;
}
;
var __setModuleDefault = Object.create ? (function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function (o, v) {
o["default"] = v;
};
function __importStar(mod) {
if (mod && mod.__esModule) return mod;
if (mod && mod.__esModule)
return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result.default = mod;
if (mod != null)
for (var k in mod)
if (Object.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
}
function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { default: mod };
}
function __classPrivateFieldGet(receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
}
function __classPrivateFieldSet(receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
@ -220,7 +307,6 @@
return value;
}
/* tslint:disable:no-non-null-assertion */
var ListNode = /** @class */ (function () {
function ListNode(value) {
this.value = value;
@ -235,21 +321,21 @@
get: function () {
return this.first;
},
enumerable: true,
enumerable: false,
configurable: true
});
Object.defineProperty(LinkedList.prototype, "tail", {
get: function () {
return this.last;
},
enumerable: true,
enumerable: false,
configurable: true
});
Object.defineProperty(LinkedList.prototype, "length", {
get: function () {
return this.size;
},
enumerable: true,
enumerable: false,
configurable: true
});
LinkedList.prototype.attach = function (value, previousNode, nextNode) {
@ -591,6 +677,14 @@
return LinkedList;
}());
/*
* Public API Surface of utils
*/
/**
* Generated bundle index. Do not edit.
*/
exports.LinkedList = LinkedList;
exports.ListNode = ListNode;

2
modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.js.map

File diff suppressed because one or more lines are too long

2
modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js

File diff suppressed because one or more lines are too long

2
modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map

File diff suppressed because one or more lines are too long

232
modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.3.tgz#d891bcff681544f759ee715f6423130bffd1a05c"
integrity sha512-iXbK+wnPqTrkyzs0MfXxOjqEptJSZC/TdCukfeOI4ozJET1Y+g+r4SOcHCagLCSljIcO7E1Y79z6LPP0/x9fJw==
"@abp/aspnetcore.mvc.ui.theme.basic@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.0.4.tgz#c58e3e06ba78279875cf2b5f96d34b83ce09f6df"
integrity sha512-tKKqVRKpwN7P4Mn+he3bcz4Qbt8bkZ++wk6iOujd6HLTkBNa0uKyM4L6+iCn1Hi62S6HeK2Xytx+b+IYeIlsuw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.3"
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.0.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.3.tgz#fcea3dcea6a85dd88aa370578dca6e77fc80891c"
integrity sha512-ZuBBpH4Rlvr2Y6FpYt7FIiJwZLBmrnB8xJmP993AQtx+s39sLK3enb+poipkUBnq1N3yxmct06j7wsIlsstKXw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~3.0.3"
"@abp/bootstrap" "~3.0.3"
"@abp/bootstrap-datepicker" "~3.0.3"
"@abp/datatables.net-bs4" "~3.0.3"
"@abp/font-awesome" "~3.0.3"
"@abp/jquery-form" "~3.0.3"
"@abp/jquery-validation-unobtrusive" "~3.0.3"
"@abp/lodash" "~3.0.3"
"@abp/luxon" "~3.0.3"
"@abp/malihu-custom-scrollbar-plugin" "~3.0.3"
"@abp/select2" "~3.0.3"
"@abp/sweetalert" "~3.0.3"
"@abp/timeago" "~3.0.3"
"@abp/toastr" "~3.0.3"
"@abp/aspnetcore.mvc.ui@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.3.tgz#88e3350a839434cee38f9497d160e5f23ef5ac28"
integrity sha512-C4cSlnhGYNGQul/0WD9HP87knBQ/bj2q45Jt73ugn9RygEJVjhXPv30+H4sl1GZXmEg+kLgdAoNjM/Iipe+egQ==
"@abp/aspnetcore.mvc.ui.theme.shared@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.0.4.tgz#50db612b6492d36c63dd9042000a9fb00fecec54"
integrity sha512-imd2T5XXkNvGQyXV/A9hA80qSeurKaUcW6HDkte8Y2fs4QfvkjgzWXi7neqF6F+HVbYYPg3rIBWC6QF1OXGn2w==
dependencies:
"@abp/aspnetcore.mvc.ui" "~3.0.4"
"@abp/bootstrap" "~3.0.4"
"@abp/bootstrap-datepicker" "~3.0.4"
"@abp/datatables.net-bs4" "~3.0.4"
"@abp/font-awesome" "~3.0.4"
"@abp/jquery-form" "~3.0.4"
"@abp/jquery-validation-unobtrusive" "~3.0.4"
"@abp/lodash" "~3.0.4"
"@abp/luxon" "~3.0.4"
"@abp/malihu-custom-scrollbar-plugin" "~3.0.4"
"@abp/select2" "~3.0.4"
"@abp/sweetalert" "~3.0.4"
"@abp/timeago" "~3.0.4"
"@abp/toastr" "~3.0.4"
"@abp/aspnetcore.mvc.ui@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.0.4.tgz#4e4344d95a98a60c53037b351cb915d8ff7a7dcb"
integrity sha512-p7KI5CKkpD4EYzG4fCtygrtZhwMu7Z+IZFGbdqXelLbI5ACkbJyrn+N+9trPfS9papymeXY4p1E3v6xOH7rSHQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,144 +41,144 @@
path "^0.12.7"
rimraf "^3.0.2"
"@abp/bootstrap-datepicker@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.3.tgz#866d4b3b83bb548e7d71066408c5ab344ce33473"
integrity sha512-nnzm9rxu/vKIUdQQMlN/kGqL+DbOg8FmN81KyWJ23KmisViLVqDeTEJBHPOJ3WuzRN+SacoreiL4f3C+7YiiXQ==
"@abp/bootstrap-datepicker@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.0.4.tgz#d21963f158a4d348a0acdc46209e67378aae8e55"
integrity sha512-25e9qm39dj9AijIchQIdLlBiBM5/fhASkEuLKNt6M8S/e3qwKLwbRhX90DKMFvOyKdxxcK1gX7tDuGHyG9A8mA==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.3.tgz#1d0ce60eff1dc67642147f0f2897eb13f6353d09"
integrity sha512-Vd/bdyh4bnp3vz4QsPjlc8Wi1qfaRSBDekWbHWkNq568BLXSMkK6ucugGAvC7kshBj3bbSpHd9xWUImim0+Q/w==
"@abp/bootstrap@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.0.4.tgz#3b0e2b74dc174a04ce669de1b140df833eee6031"
integrity sha512-DwxL1fGYOwChPwmMpwUxCKiIdzTfRf/YDkOLUiwI8eRrpABBeuE2sSHKfks6Rqh9Wqo/nlWXvfccgDRqweqhsA==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2"
"@abp/core@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.3.tgz#05e45a5533f5a6f9014b4a4a87c73d96b7c071dc"
integrity sha512-lNrG0cYbHQHH6i2B5yfBL7iU3rl3TL66H+tDVCBqXNlnGAFOS48RG/jE2mMw54U8xgtwNczwBpgGVWAqU3uKig==
"@abp/core@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.0.4.tgz#281940525e280e9e3a1aa4cb4e8f64548ea026a3"
integrity sha512-ZPEH1fa5bf/f1ek9ZLQHx7u78iF6kRZ8Z2NBI36cNL13RyQbx485qJF+KXyqNlJoJAh0CAs0NsAJADU3utcDNA==
dependencies:
"@abp/utils" "~2.9.0"
"@abp/utils" "^3.0.4"
"@abp/datatables.net-bs4@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.3.tgz#627a64f4fdc8c7fb7f4e51232c4147b5f2cfe041"
integrity sha512-seZR/yu8p0SJMafVCwYA5YAi7F2IMMo6cBJsF+phTBrPGBaXd63arNK7ZiXYp3RfwnafglotKNgswO0lYRMXKw==
"@abp/datatables.net-bs4@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.0.4.tgz#e488336bd2c199146ea60464e0ba75aeb134957e"
integrity sha512-ID1XWKPxG9pv6mxBkku7JWvgXjTxJ1uShxmYv5kFYVuwOGMSvj8QVZInTHFcMdECopV56yjGPNOIFLeQj4Mw8Q==
dependencies:
"@abp/datatables.net" "~3.0.3"
"@abp/datatables.net" "~3.0.4"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.3.tgz#2a8eed257f943cc9d477eabe2501ead9fcc37d76"
integrity sha512-ULmYJZ3RU1kisMDCtB1Wq8tBmIn09QKW+asB33y9bT4td/cEDqULyJXbwNZYIzqA6VPzHenxiJbciFkFwPwkaQ==
"@abp/datatables.net@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.0.4.tgz#7ef143b83143ad8d769be25296411a812a17b255"
integrity sha512-gdQwRuxO5fQWhG/DiUaf40DQ8dWIVGhOCyt6SZ8LQzq4uSaQqa0qrtTTTW2/aiee4MgJu2vJWYF5YCszIR/HhA==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
datatables.net "^1.10.21"
"@abp/font-awesome@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.3.tgz#e0fb803c04c2f3f36017aa8a065a7f20245a2b50"
integrity sha512-UY9i35H+3EMqBszLdLyM72TRVp+hDe8CFs8q2PBNzoIsrMGqx4mKFSTxUsts03USqQ+4v6D08M056D3a0oS+DQ==
"@abp/font-awesome@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.0.4.tgz#98f83d0bf8b5a2a4d988cb07f5cceda2e1bc1a09"
integrity sha512-AKhKCUXx8vdHIgyXUfbSLitfYor5dJbo4qMRRGqIJVSj+cyMkpgYbGjqr24GGijgZxdmOGL+s1b9iCUbIPgLNQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.3.tgz#bcb6ca18c5671914fd87bb9651feef57142f9ae3"
integrity sha512-VokAc7jgBQAEcu15FSJPWLJcL+/mrFFwia/DdpkPyU+SrXHgD35Gu7Kb+/knQcVKNCM80mCH5gZXDbaA5Hrt3w==
"@abp/jquery-form@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.0.4.tgz#022eebbfe58b55e328984c0f119884c9464bc767"
integrity sha512-xDkk4rY0AmXBJE4qztzr2hZz+OVucVNWeagOEgeQHXJSKU/T+0kj0a1RxEHpyI24xBvEXAbe8PbByTbu0QXYew==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.3.tgz#e4247a56149306aa69a8df1017f7da9a07abce26"
integrity sha512-Ig3UyfPj5qyP2BCLYeaihMzzj2p4Hkh1uJX6Bm2qShRKDW3Br5D0z3JIEXiGvzukGTdCnTG+mwGQowZfdxgdUQ==
"@abp/jquery-validation-unobtrusive@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.0.4.tgz#6cc942aadcdde33893e7a45c84aa022e033e4e8b"
integrity sha512-N9sza91HCyPvJo+d0RAfq4skae3TgAYg7KXhlwzRE2hqUQS+EICVARURWyxJW7s7Zu6+gxDTkXhBZRTW56deZA==
dependencies:
"@abp/jquery-validation" "~3.0.3"
"@abp/jquery-validation" "~3.0.4"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.3.tgz#c95f5b9fa5d6ec973bffb0e98d08317707a95b83"
integrity sha512-Ss38QtC4IrDbICNJT9fTNWka6ekmhrfCrArOeVR8O47BIx9FRl2IBX8TBjuC3ZXv9c1oNxTICmmSCgQYfdQ02A==
"@abp/jquery-validation@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.0.4.tgz#3f96d1f83c75a7fc47e5e5e12c51dbc8da7582b1"
integrity sha512-2ljqas4YKU0PcwB0wQW2qhXejDHjW+N1XCxZDyCZ2wF9UxGlKBR8rFt76TJByXSotKE7n2hJRZaOh9ICZUow2g==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
jquery-validation "^1.19.2"
"@abp/jquery@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.3.tgz#b9b6b5c110c116d484b090a485503eb1e5f7f8fb"
integrity sha512-EVkCdy8bGHZ1Za/H7Iw5e/maiihx3Hn8VvU//D6U3FlC3D/Fo7hYEPOVvlVtpco6J1e0wMe9dUnCQxjPDBfQGw==
"@abp/jquery@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.0.4.tgz#5f236d95cfae7f65012cd8778fd74490b7542442"
integrity sha512-g8N8Te5vf+8djdksfZoZ3tXaqlBC4Ra39pAWU/XerlLl64u+XmAX1s6yKRfC2kS8lf292GgiFYuNOkb77J6k4A==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
jquery "~3.5.1"
"@abp/lodash@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.3.tgz#4289cc71d83ed3ec29beacd784ee68b6ac575274"
integrity sha512-7UIagvq204xsyNQq7yucSHRj3BPE/yvTUELLEDWmjBQPkjB9GukeoeYqUxderEbVboCLIPYgGCwAWz9IyBtvFQ==
"@abp/lodash@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.0.4.tgz#ee60bc99f98b59fd9fc5ff4bbcf914a13faf209d"
integrity sha512-jxvv74Sm/fUKDBMylK4Ne/8GKm7GuHAdcLFtkoJQptdO+RjZpKJ86ULT+X5vbKskZaTj2fEmOR6l4hmfnBULTA==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
lodash "^4.17.15"
"@abp/luxon@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.3.tgz#e2eb7db08c07efbd877a7216bf4f6aca18e24473"
integrity sha512-L7rzo7LLV9Kn92Fdk8g0+CqVsxedRs1cLmDA2QDn4idJ728kYJjSZpRWPjLW087dkSBen0Gtr7gxUn6HiXizpA==
"@abp/luxon@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.0.4.tgz#aa1bf6a93d6254433101e50a205b276759969414"
integrity sha512-gX9dQJt9C6M1wmCSUIBoNr8CAt0jkUZFQ7LKKO/BoADGM/XFvY5vDbhL7zcwbwitgCOzmucoCxs/6rIxSOVlrg==
dependencies:
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.3.tgz#77d45ac9044ebbe5a80a5764f4a55f1943c813f1"
integrity sha512-cJfdJexrZjJfoz+mMWXCFgi6gDa0fq9OAcpxZGz5aVeIrNOnWdEvjT02beowU9Rhl6vL6jWxpqaWt3H4jiGOSw==
"@abp/malihu-custom-scrollbar-plugin@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.0.4.tgz#c54824b98363f4190cc6a37fcd421c2bfdc1e201"
integrity sha512-6LdSGctOr4ACtdohdSlb19vrFNJ5C0hy1VdbBEafHOBspXckvRVx4uJl2KfHmAC+bMg9apoK/wcHjVNdBHThYQ==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.3.tgz#5545502067f12bd9e502133dc9c0f7b73adf0d18"
integrity sha512-tmQN1TfO3szU6iw/K+YjoIqKeD6hnCVNIedg0l2YqTyZfo9QREEzY8CRqQELphhGkHmsMOl5tjXeD9BJVMna2g==
"@abp/select2@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.0.4.tgz#49db0cfbc9b08f6ae4949b2cb8bdef92d7d308dd"
integrity sha512-zKEgkWBFdGU2KiAMUKhucHqBfzDy2KNSefyqxpOiUd1L3PEKu+9o23HZRWzDupYltop+SO1Jw33CNoVAkKm4+A==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
select2 "^4.0.13"
"@abp/sweetalert@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.3.tgz#a167d49303833d0821d63e47e3882b9dcb5a66f4"
integrity sha512-RMBkZ4Tmm2qcW88noswsrnD1cik0R3q2GCDV1Ngm2V+u2KbbSbtLN2B+YQEU1SwDop0Miml8eNk2GeRLYT6kbA==
"@abp/sweetalert@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.0.4.tgz#f85d11c5aabc6ceb509af1b8fd8d75bc3c74bd27"
integrity sha512-hO0qXUWxeMy/lfy3sb+5HvOmIPst6UvYJJGy3ZQR6DKEdkOktBX9sEDb7m6ij6xAIHqWIx1xLveul0oGteOG0Q==
dependencies:
"@abp/core" "~3.0.3"
"@abp/core" "~3.0.4"
sweetalert "^2.1.2"
"@abp/timeago@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.3.tgz#1fa2f4814babc965a2a95149b432f1fc466ad18a"
integrity sha512-iUG9RfV8vSernjMoojlnManZ+QTaRlMOvikeHQR8MaPYH/XC2sRLNoLN0sYTC5F/xzLQU4MSQFXZ54dobUyYfA==
"@abp/timeago@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.0.4.tgz#82d90a04f703a7db9c0acedcd2f3cea684e7ae18"
integrity sha512-7SbbqScTKCix25xWy5oLT0slJqUQsW6YgJgI0N41C3AsByRBXZeh5Gcep033gprTPmpgNY8JOWcEcCXySnYvfA==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
timeago "^1.6.7"
"@abp/toastr@~3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.3.tgz#1f4421f03c6c69bd4ca93123953cdc4ac3abfd99"
integrity sha512-phMAFhJcLbti09da3WdDx5YZ2zzkh/Xgag2iJWunnnt5G+dH/4WTN1sLdIo06WwDLjArz19c2ZHqV52uwb2vXA==
"@abp/toastr@~3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.0.4.tgz#884ab2343ddd59981c291c632e3b0630532f7e9c"
integrity sha512-NG0pVD8bdIXGpjPW9cozCzmyuAdnSLE4vDYLUReP1pZFp9B8SMJqpgPk9eFg0Y06aaHTVMKYBKRoq9xXS4w9Xg==
dependencies:
"@abp/jquery" "~3.0.3"
"@abp/jquery" "~3.0.4"
toastr "^2.1.4"
"@abp/utils@~2.9.0":
version "2.9.0"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-2.9.0.tgz#8a66b7e1d422eae5898d32af7810d6bd625276f2"
integrity sha512-0gvWUH3jT7YE4ym2C45uKDzHs/oOdMW5lPq9ncCZ58wMxTrgPvxXNuMmRW0P259OcXYiRwmsNtb09/WlTQQbKA==
"@abp/utils@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.0.4.tgz#38068fa8f735e1889cf2f226128366825948814d"
integrity sha512-TnXRZIZcxv5+EctEPsZEi2cyRXbpl3A679wzQa6BACv+pM45cjGO1JR8P0VswKN4TVL0aQRMv26N6U/uie8sEQ==
dependencies:
just-compare "^1.3.0"

2
modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json

@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.3"
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.0.4"
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save