diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index f24ba57949..5c464400cc 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -2,8 +2,12 @@ name: Pull request labeler on: schedule: - cron: '0 12 */1 * *' +permissions: + contents: read jobs: labeler: + permissions: + pull-requests: write runs-on: ubuntu-latest steps: - uses: paulfantom/periodic-labeler@master diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json index 98f6ed0820..b0555bfe32 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json @@ -177,6 +177,8 @@ "CheckAllCommunityTalks": "Check All Community Posts", "ReadMore": "Read More", "Post": "Post", - "ExploreTheContentsCreatedByTheCoreABPTeamAndTheABPCommunity": "Explore the contents created by the core ABP team and the ABP community." + "ExploreTheContentsCreatedByTheCoreABPTeamAndTheABPCommunity": "Explore the contents created by the core ABP team and the ABP community.", + "WelcomeFallCampaign": "Welcome Fall Campaign!", + "GiveAwayForNewPurchases": "Application Development Classroom Training will be given away for the new purchases!" } } diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json index 818b4cab5e..1eedb98c61 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json @@ -39,6 +39,8 @@ "TrialLicensePeriodHasExpired": "Deneme lisansınızın süresi {0} gün önce sona erdi.", "TrialLicensePeriodWillExpire": "Deneme lisansınızın süresi {0} gün içinde dolacak.", "TrialLicensePeriodExpireToday": "Deneme lisans süreniz bugün sona erecek.", - "PurchaseNow": "Şimdi satın al!" + "PurchaseNow": "Şimdi satın al!", + "WelcomeFallCampaign": "Hoş Geldin Sonbahar Kampanyası!", + "GiveAwayForNewPurchases": "Yeni alımlar için Uygulama Geliştirme Sınıfı Eğitimi hediye edilecektir!" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json index 4ba89108ce..e1ad37704f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json @@ -174,6 +174,8 @@ "CheckAllCommunityTalks": "检查所有社区帖子", "ReadMore": "阅读更多", "Post": "邮政", - "ExploreTheContentsCreatedByTheCoreABPTeamAndTheABPCommunity": "探索核心 ABP 团队和 ABP 社区创建的内容。" + "ExploreTheContentsCreatedByTheCoreABPTeamAndTheABPCommunity": "探索核心 ABP 团队和 ABP 社区创建的内容。", + "WelcomeFallCampaign": "欢迎秋季活动!", + "GiveAwayForNewPurchases": "新购买将赠送应用程序开发课堂培训!" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hant.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hant.json index dbf04ae25b..f55f4a7f85 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hant.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hant.json @@ -39,6 +39,8 @@ "TrialLicensePeriodHasExpired": "您的試用許可期限已於 {0} 天前到期。", "TrialLicensePeriodWillExpire": "您的試用許可期限將在 {0} 天后到期。", "TrialLicensePeriodExpireToday": "您的試用許可期將於今天到期。", - "PurchaseNow": "現在買!" + "PurchaseNow": "現在買!", + "WelcomeFallCampaign": "欢迎秋季活动!", + "GiveAwayForNewPurchases": "新购买将赠送应用程序开发课堂培训!" } } \ No newline at end of file diff --git a/common.DotSettings b/common.DotSettings index 5c1cda48fd..f2cc0339ae 100644 --- a/common.DotSettings +++ b/common.DotSettings @@ -38,5 +38,6 @@ False False False + True True \ No newline at end of file diff --git a/docs/en/Apps/VoloDocs.md b/docs/en/Apps/VoloDocs.md index f85aa78bbd..9fe8ff2507 100644 --- a/docs/en/Apps/VoloDocs.md +++ b/docs/en/Apps/VoloDocs.md @@ -23,13 +23,13 @@ https://github.com/abpframework/abp/tree/master/modules/docs You can download the VoloDocs release from the following links: -http://apps.abp.io/VoloDocs/VoloDocs.win-x64.zip - **Windows 64 bit** +https://apps.abp.io/VoloDocs/VoloDocs.win-x64.zip - **Windows 64 bit** -http://apps.abp.io/VoloDocs/VoloDocs.win-x86.zip - **Windows 32 bit** +https://apps.abp.io/VoloDocs/VoloDocs.win-x86.zip - **Windows 32 bit** -http://apps.abp.io/VoloDocs/VoloDocs.osx-x64.zip - **MacOS** +https://apps.abp.io/VoloDocs/VoloDocs.osx-x64.zip - **MacOS** -http://apps.abp.io/VoloDocs/VoloDocs.linux-x64.zip - **Linux** +https://apps.abp.io/VoloDocs/VoloDocs.linux-x64.zip - **Linux** Notice that, all installations are self-contained deployments. It means all the required third-party dependencies along with the version of .NET Core is included. So you don't need to install any .NET Core SDK / Runtime. diff --git a/docs/en/Dependency-Injection.md b/docs/en/Dependency-Injection.md index 668eac6644..a0ad342c4c 100644 --- a/docs/en/Dependency-Injection.md +++ b/docs/en/Dependency-Injection.md @@ -244,25 +244,35 @@ One restriction of property injection is that you cannot use the dependency in y Property injection is also useful when you want to design a base class that has some common services injected by default. If you're going to use constructor injection, all derived classes should also inject depended services into their own constructors which makes development harder. However, be very careful using property injection for non-optional services as it makes it harder to clearly see the requirements of a class. -### Resolve Service from IServiceProvider +#### DisablePropertyInjectionAttribute -You may want to resolve a service directly from ``IServiceProvider``. In that case, you can inject IServiceProvider into your class and use ``GetService`` method as shown below: +You can use `[DisablePropertyInjection]` attribute on class or properties to disable property injection for the whole class or some specific properties. ````C# +[DisablePropertyInjection] public class MyService : ITransientDependency { - private readonly IServiceProvider _serviceProvider; + public ITaxCalculator TaxCalculator { get; set; } +} - public MyService(IServiceProvider serviceProvider) - { - _serviceProvider = serviceProvider; - } +public class MyService : ITransientDependency +{ + public ILogger Logger { get; set; } - public void DoSomething() - { - var taxCalculator = _serviceProvider.GetService(); - //... - } + [DisablePropertyInjection] + public ITaxCalculator TaxCalculator { get; set; } +} + +```` + +### Resolve Service from IServiceProvider + +You may want to resolve a service directly from ``IServiceProvider``. In that case, you can inject IServiceProvider into your class and use ``GetService`` method as shown below: + +````C# +public class MyService : ITransientDependency +{ + public ILogger Logger { get; set; } } ```` diff --git a/docs/en/Deployment/Deploy-Azure-App-Service.md b/docs/en/Deployment/Deploy-Azure-App-Service.md deleted file mode 100644 index e7536947bf..0000000000 --- a/docs/en/Deployment/Deploy-Azure-App-Service.md +++ /dev/null @@ -1,425 +0,0 @@ -# Deploy Abp Webapp to Azure App Service - -> In this document, you'll learn how to create and deploy your first abp web app to [Azure App Service](https://docs.microsoft.com/en-us/azure/app-service/overview). The App Service supports various versions of .NET apps, and provides a highly scalable, self-patching web hosting service. Abp web apps are cross-platform and can be hosted on Linux and Windows. - -****Prerequisites**** - -- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/dotnet). -- A GitHub account [Create an account for free](http://github.com/). - - -## Create a new ABP Framework application - -Create a repository on [GitHub.com](https://github.com/) (keep all the default settings) - -Open the command prompt and clone the repository into a folder on your computer - -```bash -git clone https://github.com/your-username/your-repository-name.git -``` -Check your dotnet version. It should be at least 3.1.x -```bash -dotnet --version -``` -Install or update the *ABP CLI* using a command line window - -```bash -dotnet tool install -g Volo.Abp.Cli || dotnet tool update -g Volo.Abp.Cli -``` - -Open the command prompt in the *GitHub repository folder* and create a *new abp Blazor solution* with the command below - -```bash -abp new YourAppName -u blazor -``` - -Open the command prompt in the *[YourAppName].DbMigrator* project and enter the command below to apply the database migrations - -```bash -dotnet run -``` - -Open the command prompt in the *[YourAppName].HttpApi.Host* project to run the API project - -```bash -dotnet run -``` - -Navigate to the *applicationUrl* specified in *the launchSettings.json* file of the *[YourAppName].HttpApi.Host project*. You should get the *Swagger window* - -Open the command prompt in the *[YourAppName].Blazor* folder and enter the command below to run the Blazor project - -```bash -dotnet run -``` - -Navigate to the *applicationUrl* specified in the *launchSettings.json* file of the *[YourAppName].Blazor* project. You should get the *ABP Framework Welcome window* - -Stop both the *API* and the *Blazor* project by pressing **CTRL+C** - -Before the github commit, you have to delete "**/wwwroot/libs/*" at *.gitignore* file. - -![azdevops-23](../images/azdevops-23.png) - -Open the command prompt in the root folder of your project and *add, commit and push* all your changes to your GitHub repository - -```bash -git add . -git commit -m initialcommit -git push -``` - - -## Create a SQL Database on Azure and change the connection string in the appsettings.json files - -* Login into [Azure Portal](https://portal.azure.com/) - -* Click **Create a resource** - -* Search for *SQL Database* - -* Click the **Create** button in the *SQL Database window* - -* Create a new resource group. Name it *rg[YourAppName]* - -* Enter *[YourAppName]Db* as database name - -* Create a new Server and name it *[yourappname]server* - -* Enter a serveradmin login and passwords. Click the **OK** button - -* Select your *Location* - -* Check *Allow Azure services to access server* - -* Click **Configure database**. Go to the *Basic* version and click the **Apply** button - -* Click the **Review + create** button. Click **Create** - -* Click **Go to resource** and click **SQL server** when the SQL Database is created - -* Click **Networking** under Security left side menu - -* Select **Selected networks** and click **Add your client IP$ address** at the Firewall rules - -* Select **Allow Azure and resources to access this seerver** and save - -* Go to your **SQL database**, click **Connection strings** and copy the connection string - -* Copy/paste the appsettings.json files of the [YourAppName].HttpApi.Host and the [YourAppName].DbMigrator project - -* Do not forget to replace {your_password} with the correct server password you entered in Azure SQL Database - -Open the command prompt in the [YourAppName].DbMigrator project again and enter the command below to apply the database migrations - -```bash -dotnet run -``` -Open the command prompt in the [YourAppName].HttpApi.Host project and enter the command below to check your API is working - -```bash -dotnet run -``` - -Stop the [YourAppName].HttpApi.Host by entering CTRL+C - -Open the command prompt in the root folder of your project and add, commit and push all your changes to your GitHub repository -```bash -git add . -git commit -m initialcommit -git push -``` - - -## Set up the Build pipeline in AzureDevops and publish the Build Artifacts - -* Sign in into Azure DevOps - -* Click **New organization** and follow the steps to create a new organisation. Name it [YourAppName]org - -* Enter [YourAppName]Proj as project name in the ***Create a project to get started*** window - -* Select **Public visibility** and click the **Create project** button - -* Click the **Pipelines** button to continue - -* Click the **Create Pipeline** button - - Select GitHub in the Select your repository window - -![azdevops-1](../images/azdevops-1.png) - -* Enter the Connection name. [YourAppName]GitHubConnection and click **Authorize using OAuth** - -* Select your **GitHub** [YourAppName]repo and click Continue - -* Search for **ASP.NET** in the ***Select a template*** window - -![azdevops-2](../images/azdevops-2.png) - -* Select the ASP.NET Core template and click the **Apply** button - -* Add the below commands block as a first step in the pipeline - - ``` - - task: UseDotNet@2 - inputs: - packageType: 'sdk' - version: '6.0.106' - ``` - -![azdevops-18](../images/azdevops-18.png) - -* Select **Settings** on the second task(Nugetcommand@2) in the pipeline - -* Select **Feeds in my Nuget.config** and type **Nuget.config** in the text box - -![azdevops-3](../images/azdevops-3.png) - -* Add the below commands block to the end of the pipeline - - ``` - - task: PublishBuildArtifacts@1 - displayName: 'Publish Artifact' - inputs: - PathtoPublish: '$(build.artifactstagingdirectory)' - ArtifactName: '$(Parameters.ArtifactName)' - condition: succeededOrFailed() - ``` -![azdevops-4](../images/azdevops-4.png) - -``` -# ASP.NET -# Build and test ASP.NET projects. -# Add steps that publish symbols, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4 - -trigger: -- main - -pool: - vmImage: 'windows-latest' - -variables: - solution: '**/*.sln' - buildPlatform: 'Any CPU' - buildConfiguration: 'Release' - -steps: -- task: UseDotNet@2 - inputs: - packageType: 'sdk' - version: '6.0.106' - -- task: NuGetToolInstaller@1 - -- task: NuGetCommand@2 - inputs: - command: 'restore' - restoreSolution: '$(solution)' - feedsToUse: 'config' - nugetConfigPath: 'NuGet.config' - -- task: VSBuild@1 - inputs: - solution: '$(solution)' - msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"' - platform: '$(buildPlatform)' - configuration: '$(buildConfiguration)' - -- task: VSTest@2 - inputs: - platform: '$(buildPlatform)' - configuration: '$(buildConfiguration)' - -- task: PublishBuildArtifacts@1 - displayName: 'Publish Artifact' - inputs: - PathtoPublish: '$(build.artifactstagingdirectory)' - ArtifactName: '$(Parameters.ArtifactName)' - publishLocation: 'Container' - condition: succeededOrFailed() -``` - -* Click **Save & queue** in the top menu. Click **Save & queue** again and click **Save and run** to run the Build pipeline - -* When the Build pipeline has finished. Click **1 published; 1 consumed** - - - -## Create a Web App in the Azure Portal to deploy [YourAppName].HttpApi.Host project - -* Search for Web App in the *Search the Marketplace* field - -* Click the **Create** button in the Web App window - -* Select rg[YourAppName] in the *Resource Group* dropdown - -* Enter [YourAppName]API in the *Name input* field - -* Select code, .NET Core 3.1 (LTS) and windows as *Operating System* - -* Enter [YourAppName]API in the *Name input* field - -* Select .NET Core 3.1 (LTS) in the *Runtime stack* dropdown - -* Select Windows as *Operating System* - -* Select the same *Region* as in the SQL server you created in Part 3 - -![azdevops-5](../images/azdevops-5.png) - -* Click **Create new** in the Windows Plan. Name it [YourAppName]ApiWinPlan - -* Click **Change size** in Sku and size. Go to the Dev/Test Free F1 version and click the **Apply** button - -![azdevops-6](../images/azdevops-6.png) - -* Click the **Review + create** button. Click the **Create** button - -* Click **Go to resource** when the Web App has been created - - - -## Create a Release pipeline in the AzureDevops and deploy [YourAppName].HttpApi.Host project - -* Sign in into [Azure DevOps](https://azure.microsoft.com/en-us/services/devops/) - -* Click [YourAppName]Proj and click **Releases** in the *Pipelines* menu - -* Click the **New pipeline** button in the *No release pipelines found* window - -* Select *Azure App Service deployment* and click the **Apply** button - -![azdevops-7](../images/azdevops-7.png) - -* Enter *[YourAppName]staging* in the *Stage name* field in the *Stage* window. And close the window - -* Click **+ Add an artifact** in the *Pipeline* tab - -* Select the **Build** icon as *Source type* in the *Add an artifact* window - -* Select Build pipeline in the *Source (build pipeline)* dropdown and click the **Add** button - -![azdevops-8](../images/azdevops-8.png) - -* Click the **Continuous deployment trigger (thunderbolt icon)** - -* Set the toggle to **Enabled** in the the *Continuous deployment trigger* window - -* Click **+ Add** in *No filters added*. Select **Include** in the *Type* dropdown. Select your branch in the *Build branch* dropdown and close the window - -![azdevops-9](../images/azdevops-9.png) - -* Click **the little red circle with the exclamation mark** in the *Tasks* tab menu - -* Select your subscription in the *Azure subscription* dropdown. - -![azdevops-10](../images/azdevops-10.png) - -* Click **Authorize** and enter your credentials in the next screens - -* After Authorization, select the **[YourAppName]API** in the *App service name* dropdown - -* Click the **Deploy Azure App Service** task - -* Select **[YourAppName].HttpApi.Host.zip** in the *Package or folder* input field - -![azdevops-11](../images/azdevops-11.png) - -* Click the **Save** icon in the top menu and click **OK** - -* Click **Create release** in the top menu. Click **Create** to create a release - -* Click the *Pipeline* tab and wait until the Deployment succeeds - -![azdevops-12](../images/azdevops-12.png) - -* Open a browser and navigate to the URL of your Web App - -``` -https://[YourAppName]api.azurewebsites.net -``` - -![azdevops-13](../images/azdevops-13.png) - - - -## Create a Web App in Azure Portal to deploy [YourAppName].Blazor project - -* Login into [Azure Portal](https://portal.azure.com/) - -* Click **Create a resource** - -* Search for *Web App* in the *Search the Marketplace* field - -* Click the **Create** button in the *Web App* window - -* Select *rg[YourAppName]* in the *Resource Group* dropdown - -* Enter *[YourAppName]Blazor* in the *Name* input field - -* Select *.NET Core 3.1 (LTS)* in the *Runtime stack* dropdown - -* Select *Windows* as *Operating System* - -* Select the same region as the SQL server you created in Part 3 - -* Select the [YourAppName]ApiWinPlan in the *Windows Plan* dropdown - -![azdevops-14](../images/azdevops-14.png) - -* Click the **Review + create** button. Click **Create** button - -* Click **Go to resource** when the Web App has been created - -* Copy the URL of the Blazor Web App for later use - -``` -https://[YourAppName]blazor.azurewebsites.net -``` - - -## Change the Web App configuration for the Azure App Service - -Copy the URL of the Api Host and Blazor Web App. Change appsettings.json files in the Web App as follows images. - -![azdevops-19](../images/azdevops-19.png) - -![azdevops-20](../images/azdevops-20.png) - -![azdevops-21](../images/azdevops-21.png) - - - -## Add an extra Stage in the Release pipeline in the AzureDevops to deploy [YourAppName].Blazor project - -* Go to the *Release* pipeline in [Azure DevOps](https://azure.microsoft.com/en-us/services/devops/) and click **Edit** - -* Click the **+ Add** link and add a **New Stage** - -![azdevops-15](../images/azdevops-15.png) - -* Select *Azure App Service deployment* and click the **Apply** button - -* Enter *BlazorDeployment* in the *Stage name* input field and close the *Stage* window - -* Click the **little red circle with the exclamation mark** in the BlazorDeployment stage - -* Select your subscription in the *Azure subscription* dropdown - -* Select your Blazor Web App in the *App service name* dropdown - -* Click the **Deploy Azure App Service task** - -* Select *[YourAppName].Blazor.zip* in the *Package or folder* input field - -![azdevops-16](../images/azdevops-16.png) - -* Click **Save** in the top menu and click the **OK** button after - -* Click **Create release** in the top menu and click the **Create** button - -![azdevops-17](../images/azdevops-17.png) - -![azdevops-22](../images/azdevops-22.png) \ No newline at end of file diff --git a/docs/en/Deployment/Index.md b/docs/en/Deployment/Index.md index a1c2e2d5f8..6503f8b664 100644 --- a/docs/en/Deployment/Index.md +++ b/docs/en/Deployment/Index.md @@ -7,6 +7,3 @@ However, there are some topics that you should care about when you are deploying ## Guides * [Deploying to a clustered environment](Clustered-Environment.md): Explains how to configure your application when you want to run multiple instances of your application concurrently. - - -* [Deploy Abp Webapp to Azure App Service](Deploy-Azure-App-Service.md): Explains how to create and deploy your first abp web app to [Azure App Service](https://docs.microsoft.com/en-us/azure/app-service/overview). \ No newline at end of file diff --git a/docs/en/Getting-Started-Running-Solution.md b/docs/en/Getting-Started-Running-Solution.md index 66230c7aef..44fbd3eb03 100644 --- a/docs/en/Getting-Started-Running-Solution.md +++ b/docs/en/Getting-Started-Running-Solution.md @@ -163,6 +163,8 @@ You can see the application APIs and test them here. Get [more info](https://swa ### Running the Blazor Application (Client Side) +Go to the Blazor project folder, open a command line terminal, type the `abp bundle -f` command (If the project was created by ABP Cli tool, you don't need to do this). + Ensure that the `.Blazor` project is the startup project and run the application. > Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster. diff --git a/docs/en/Migration-Guides/OpenIddict-Step-by-Step.md b/docs/en/Migration-Guides/OpenIddict-Step-by-Step.md index e8c0f65c7c..3567ea5c06 100644 --- a/docs/en/Migration-Guides/OpenIddict-Step-by-Step.md +++ b/docs/en/Migration-Guides/OpenIddict-Step-by-Step.md @@ -76,6 +76,8 @@ Use the `abp update` command to update your existing application. See [Upgrading - Create a folder named *OpenIddict* under the Domain project and copy the [OpenIddictDataSeedContributor.cs](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.Domain/OpenIddict/OpenIddictDataSeedContributor.cs) under this folder. Rename all the `Ids2OpenId` with your project name. - Delete *IdentityServer* folder that contains `IdentityServerDataSeedContributor.cs` which is no longer needed. +You can also create a project with the same name and copy the `OpenIddict` folder of the new project into your project. + ### EntityFrameworkCore Layer If you are using MongoDB, skip this step and check the *MongoDB* layer section. @@ -226,4 +228,4 @@ for creating the host builder. ## See Also -* [ABP Version 6.0 Migration Guide](Abp-6_0.md) \ No newline at end of file +* [ABP Version 6.0 Migration Guide](Abp-6_0.md) diff --git a/docs/en/Modules/OpenIddict.md b/docs/en/Modules/OpenIddict.md index 6dc1224e59..22cb22bf55 100644 --- a/docs/en/Modules/OpenIddict.md +++ b/docs/en/Modules/OpenIddict.md @@ -1,102 +1,268 @@ -## ABP OpenIddict Modules +## ABP OpenIddict Module -## User Interface - -This module implements the domain logic and database integrations, but not provides any UI. Management UI is useful if you need to add applications and scopes on the fly. In this case, you may build the management UI yourself or consider to purchase the [ABP Commercial](https://commercial.abp.io/) which provides the management UI for this module. +OpenIddict module provides an integration with the [OpenIddict](https://github.com/openiddict/openiddict-core) which provides advanced authentication features like single sign-on, single log-out, and API access control. This module persists applications, scopes, and other OpenIddict-related objects to the database. ## How to Install -This module comes as pre-installed (as NuGet/NPM packages) when you [create a new solution](https://abp.io/get-started) with the ABP Framework. You can continue to use it as package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module. +This module comes as pre-installed (as NuGet/NPM packages) when you [create a new solution](https://abp.io/get-started) with the ABP Framework. You can continue to use it as a package and get updates easily, or you can include its source code into your solution (see `get-source` [CLI](../CLI.md) command) to develop your custom module. ### The Source Code -The source code of this module can be accessed [here](https://github.com/abpframework/abp/tree/dev/modules/openiddict). The source code is licensed with [MIT](https://choosealicense.com/licenses/mit/), so you can freely use and customize it. +The source code of this module can be accessed [here](https://github.com/abpframework/abp/tree/dev/modules/openiddict). The source code is licensed by [MIT](https://choosealicense.com/licenses/mit/), so you can freely use and customize it. -## Relations to Other Modules +## User Interface -This module is based on the [Identity Module](Identity.md) and have an [integration package](https://www.nuget.org/packages/Volo.Abp.Account.Web.OpenIddict) with the [Account Module](Account.md). +This module implements the domain logic and database integrations but does not provide any UI. Management UI is useful if you need to add applications and scopes on the fly. In this case, you may build the management UI yourself or consider purchasing the [ABP Commercial](https://commercial.abp.io/) which provides the management UI for this module. -## The module +## Relations to Other Modules -### Demo projects +This module is based on the [Identity Module](Identity.md) and has an [integration package](https://www.nuget.org/packages/Volo.Abp.Account.Web.OpenIddict) with the [Account Module](Account.md). -In the module's `app` directory there are six projects(including `angular`) +## Options -* `OpenIddict.Demo.Server`: An abp application with integrated modules (has two `clients` and a `scope`). -* `OpenIddict.Demo.API`: ASP NET Core API application using JwtBearer authentication -* `OpenIddict.Demo.Client.Mvc`: ASP NET Core MVC application using `OpenIdConnect` for authentication -* `OpenIddict.Demo.Client.Console`: Use `IdentityModel` to test OpenIddict's various endpoints, and call the api of `OpenIddict.Demo.API` -* `OpenIddict.Demo.Client.BlazorWASM:` ASP NET Core Blazor application using `OidcAuthentication` for authentication -* `angular`: An angular application that integrates the abp ng modules and uses oauth for authentication +### OpenIddictBuilder -#### How to run? +`OpenIddictBuilder` can be configured in the `PreConfigureServices` method of your OpenIddict [module](https://docs.abp.io/en/abp/latest/Module-Development-Basics). -Confirm the connection string of `appsettings.json` in the `OpenIddict.Demo.Server` project. Running the project will automatically create the database and initialize the data. -After running the `OpenIddict.Demo.API` project, then you can run the rest of the projects to test. +Example: -### Domain module +```csharp +public override void PreConfigureServices(ServiceConfigurationContext context) +{ + PreConfigure(builder => + { + //Set options here... + }); +} +``` -There are four main entities included in this module. +`OpenIddictBuilder` contains various extension methods to configure the OpenIddict services: -* OpenIddictApplication: **Represents applications(client)** -* OpenIddictScope: **Represents scopes** -* OpenIddictAuthorization: **Represents authorizations, Track of logical chains of tokens and user consent..** -* OpenIddictToken: **Represents various tokens.** +- `AddServer()` registers the OpenIddict token server services in the DI container. Contains `OpenIddictServerBuilder` configurations. +- `AddCore()` registers the OpenIddict core services in the DI container. Contains `OpenIddictCoreBuilder` configurations. +- `AddValidation()` registers the OpenIddict token validation services in the DI container. Contains `OpenIddictValidationBuilder` configurations. -Domain also implements four store interfaces in OpenIddict, OpenIddict uses store to manage entities, corresponding to the above four entities, Custom entity repository is used in the store. +### OpenIddictCoreBuilder +`OpenIddictCoreBuilder` contains extension methods to configure the OpenIddict core services. -```cs -//Manager -OpenIddictApplicationManager -OpenIddictScopeManager -OpenIddictAuthorizationManager -OpenIddictTokenManager - -//Store -IOpenIddictApplicationStore -IOpenIddictScopeStore -IOpenIddictAuthorizationStore -IOpenIddictTokenStore - -//Repository -IOpenIddictApplicationRepository -IOpenIddictScopeRepository -IOpenIddictAuthorizationRepository -IOpenIddictTokenRepository +Example: + +```csharp +public override void PreConfigureServices(ServiceConfigurationContext context) +{ + PreConfigure(builder => + { + //Set options here... + }); +} ``` -We enabled most of OpenIddict's features in the `AddOpenIddict` method, You can change OpenIddict's related builder options via `PreConfigure`. +These services contain: -```cs -PreConfigure(builder => -{ - //builder -}); +- Adding `ApplicationStore`, `AuthorizationStore`, `ScopeStore`, `TokenStore`. +- Replacing `ApplicationManager`, `AuthorizationManager`, `ScopeManager`, `TokenManager`. +- Replacing `ApplicationStoreResolver`, `AuthorizationStoreResolver`, `ScopeStoreResolver`, `TokenStoreResolver`. +- Setting `DefaultApplicationEntity`, `DefaultAuthorizationEntity`, `DefaultScopeEntity`, `DefaultTokenEntity`. + +### OpenIddictServerBuilder -PreConfigure(builder => +`OpenIddictServerBuilder` contains extension methods to configure OpenIddict server services. + +Example: + +```csharp +public override void PreConfigureServices(ServiceConfigurationContext context) { - //builder -}); + PreConfigure(builder => + { + //Set options here... + }); +} +``` + +These services contain: + +- Registering claims, scopes. +- Setting the `Issuer` URI that is used as the base address for the endpoint URIs returned from the discovery endpoint. +- Adding development signing keys, encryption/signing keys, credentials, and certificates. +- Adding/removing event handlers. +- Enabling/disabling grant types. +- Setting authentication server endpoint URIs. + +### OpenIddictValidationBuilder -PreConfigure(builder => +`OpenIddictValidationBuilder` contains extension methods to configure OpenIddict validation services. + +Example: + +```csharp +public override void PreConfigureServices(ServiceConfigurationContext context) { - //builder -}); + PreConfigure(builder => + { + //Set options here... + }); +} ``` -#### AbpOpenIddictAspNetCoreOptions +These services contain: + +- `AddAudiances()` for resource servers. +- `SetIssuer()` URI that is used to determine the actual location of the OAuth 2.0/OpenID Connect configuration document when using provider discovery. +- `SetConfiguration()` to configure `OpenIdConnectConfiguration`. +- `UseIntrospection()` to use introspection instead of local/direct validation. +- Adding encryption key, credentials, and certificates. +- Adding/removing event handlers. +- `SetClientId() ` to set the client identifier `client_id ` when communicating with the remote authorization server (e.g for introspection). +- `SetClientSecret()` to set the identifier `client_secret` when communicating with the remote authorization server (e.g for introspection). +- `EnableAuthorizationEntryValidation()` to enable authorization validation to ensure the `access token` is still valid by making a database call for each API request. *Note:* This may have a negative impact on performance and can only be used with an OpenIddict-based authorization server. +- `EnableTokenEntryValidation()` to enable authorization validation to ensure the `access token` is still valid by making a database call for each API request. *Note:* This may have a negative impact on performance and it is required when the OpenIddict server is configured to use reference tokens. +- `UseLocalServer()` to register the OpenIddict validation/server integration services. +- `UseAspNetCore()` to register the OpenIddict validation services for ASP.NET Core in the DI container. + +## Internals + +### Domain Layer + +#### Aggregates + +##### OpenIddictApplication + +OpenIddictApplications represent the applications that can request tokens from your OpenIddict Server. + +- `OpenIddictApplications` (aggregate root): Represents an OpenIddict application. + - `ClientId` (string): The client identifier associated with the current application. + - `ClientSecret` (string): The client secret associated with the current application. Maybe hashed or encrypted for security reasons. + - `ConsentType` (string): The consent type associated with the current application. + - `DisplayName` (string): The display name associated with the current application. + - `DisplayNames` (string): The localized display names associated with the current application serialized as a JSON object. + - `Permissions` (string): The permissions associated with the current application, serialized as a JSON array. + - `PostLogoutRedirectUris` (string): The logout callback URLs associated with the current application, serialized as a JSON array. + - `Properties` (string): The additional properties associated with the current application serialized as a JSON object or null. + - `RedirectUris` (string): The callback URLs associated with the current application, serialized as a JSON array. + - `Requirements` (string): The requirements associated with the current application + - `Type` (string): The application type associated with the current application. + - `ClientUri` (string): URI to further information about client. + - `LogoUri` (string): URI to client logo. + +##### OpenIddictAuthorization + +OpenIddictAuthorizations are used to keep the allowed scopes, authorization flow types. + +- `OpenIddictAuthorization` (aggregate root): Represents an OpenIddict authorization. + + - `ApplicationId` (Guid?): The application associated with the current authorization. + + - `Properties` (string): The additional properties associated with the current authorization serialized as a JSON object or null. + + - `Scopes` (string): The scopes associated with the current authorization, serialized as a JSON array. + + - `Status` (string): The status of the current authorization. + + - `Subject` (string): The subject associated with the current authorization. + + - `Type` (string): The type of the current authorization. + +##### OpenIddictScope + +OpenIddictScopes are used to keep the scopes of resources. + +- `OpenIddictScope` (aggregate root): Represents an OpenIddict scope. + + - `Description` (string): The public description associated with the current scope. + + - `Descriptions` (string): The localized public descriptions associated with the current scope, serialized as a JSON object. + + - `DisplayName` (string): The display name associated with the current scope. + + - `DisplayNames` (string): The localized display names associated with the current scope serialized as a JSON object. + + - `Name` (string): The unique name associated with the current scope. + - `Properties` (string): The additional properties associated with the current scope serialized as a JSON object or null. + - `Resources` (string): The resources associated with the current scope, serialized as a JSON array. + +##### OpenIddictToken + +OpenIddictTokens are used to persist the application tokens. + +- `OpenIddictToken` (aggregate root): Represents an OpenIddict token. + + - `ApplicationId` (Guid?): The application associated with the current token. + - `AuthorizationId` (Guid?): The application associated with the current token. + - `CreationDate` (DateTime?): The UTC creation date of the current token. + - `ExpirationDate` (DateTime?): The UTC expiration date of the current token. + - `Payload` (string): The payload of the current token, if applicable. Only used for reference tokens and may be encrypted for security reasons. + + - `Properties` (string): The additional properties associated with the current token serialized as a JSON object or null. + - `RedemptionDate` (DateTime?): The UTC redemption date of the current token. + - `Status` (string): The status of the current authorization. + + - `ReferenceId` (string): The reference identifier associated with the current token, if applicable. Only used for reference tokens and may be hashed or encrypted for security reasons. + + - `Status` (string): The status of the current token. + + - `Subject` (string): The subject associated with the current token. + + - `Type` (string): The type of the current token. -`UpdateAbpClaimTypes(default: true)`: Updates AbpClaimTypes to be compatible with identity server claims. -`AddDevelopmentEncryptionAndSigningCertificate(default: true)`: Registers (and generates if necessary) a user-specific development encryption/development signing certificate. +#### Stores -You can also change this options via `PreConfigure`. +This module implements OpenIddict stores: -#### Automatically removing orphaned tokens/authorizations +- `IAbpOpenIdApplicationStore` +- `IOpenIddictAuthorizationStore` +- `IOpenIddictScopeStore` +- `IOpenIddictTokenStore` -There is a background task in the `Domain` module (`enabled by default`) that automatically removes orphaned tokens/authorizations, you can configure `TokenCleanupOptions` to manage it. +##### Repositories -### ASP NET Core module +The following custom repositories are defined in this module: + +- `IOpenIddictApplicationRepository` +- `IOpenIddictAuthorizationRepository` +- `IOpenIddictScopeRepository` +- `IOpenIddictTokenRepository` + +##### Domain Services + +This module doesn't contain any domain service but overrides the service below: + +- `AbpApplicationManager` used to populate/get `AbpApplicationDescriptor` information that contains `ClientUri` and `LogoUri`. + +### Database Providers + +#### Common + +##### Table/Collection Prefix & Schema + +All tables/collections use the `OpenIddict` prefix by default. Set static properties on the `AbpOpenIddictDbProperties` class if you need to change the table prefix or set a schema name (if supported by your database provider). + +##### Connection String + +This module uses `AbpOpenIddict` for the connection string name. If you don't define a connection string with this name, it fallbacks to the `Default` connection string. + +See the [connection strings](https://docs.abp.io/en/abp/latest/Connection-Strings) documentation for details. + +#### Entity Framework Core + +##### Tables + +- **OpenIddictApplications** +- **OpenIddictAuthorizations** +- **OpenIddictScopes** +- **OpenIddictTokens** + +#### MongoDB + +##### Collections + +- **OpenIddictApplications** +- **OpenIddictAuthorizations** +- **OpenIddictScopes** +- **OpenIddictTokens** + +## ASP.NET Core Module This module integrates ASP NET Core, with built-in MVC controllers for four protocols. It uses OpenIddict's [Pass-through mode](https://documentation.openiddict.com/guides/index.html#pass-through-mode). @@ -107,22 +273,76 @@ LogoutController -> connect/logout UserInfoController -> connect/userinfo ``` -> We will implement the related functions of **device flow** in the PRO module.. +> **Device flow** implementation will be done in the commercial module. + +#### AbpOpenIddictAspNetCoreOptions + +`AbpOpenIddictAspNetCoreOptions` can be configured in the `PreConfigureServices` method of your OpenIddict [module](https://docs.abp.io/en/abp/latest/Module-Development-Basics). + +Example: + +```csharp +PreConfigure(options => +{ + //Set options here... +}); +``` + +`AbpOpenIddictAspNetCoreOptions` properties: + +- `UpdateAbpClaimTypes(default: true)`: Updates `AbpClaimTypes` to be compatible with the Openiddict claims. +- `AddDevelopmentEncryptionAndSigningCertificate(default: true)`: Registers (and generates if necessary) a user-specific development encryption/development signing certificate. + +#### Automatically Removing Orphaned Tokens/Authorizations + +The background task that automatically removes orphaned tokens/authorizations. This can be configured by `TokenCleanupOptions` to manage it. + +`TokenCleanupOptions` can be configured in the `PreConfigureServices` method of your OpenIddict [module](https://docs.abp.io/en/abp/latest/Module-Development-Basics). + +Example: + +```csharp +PreConfigure(options => +{ + //Set options here... +}); +``` -#### How to control claims in access_token and id_token +`TokenCleanupOptions` properties: -You can use the [Claims Principal Factory](https://docs.abp.io/en/abp/latest/Authorization#claims-principal-factory) to add/remove claims to the `ClaimsPrincipal`. +- `IsCleanupEnabled` (default: true): Enable/disable token clean up. +- `CleanupPeriod` (default: 3,600,000 ms): Setting clean up period. +- `DisableAuthorizationPruning`: Setting a boolean indicating whether authorizations pruning should be disabled. +- `DisableTokenPruning`: Setting a boolean indicating whether token pruning should be disabled. +- `MinimumAuthorizationLifespan` (default: 14 days): Setting the minimum lifespan authorizations must have to be pruned. Cannot be less than 10 minutes. +- `MinimumTokenLifespan` (default: 14 days): Setting the minimum lifespan tokens must have to be pruned. Cannot be less than 10 minutes. -The `AbpDefaultOpenIddictClaimDestinationsProvider` service will add `Name`, `Email` and `Role` types of Claims to `access_token` and `id_token`, other claims are only added to `access_token` by default, and remove the `SecurityStampClaimType` secret claim of `Identity`. +#### Updating Claims In Access_token and Id_token -You can create a service that inherits from `IAbpOpenIddictClaimDestinationsProvider` and add it to DI to fully control the destinations of claims +[Claims Principal Factory](https://docs.abp.io/en/abp/latest/Authorization#claims-principal-factory) can be used to add/remove claims to the `ClaimsPrincipal`. + +The `AbpDefaultOpenIddictClaimDestinationsProvider` service will add `Name`, `Email,` and `Role` types of Claims to `access_token` and `id_token`, other claims are only added to `access_token` by default, and remove the `SecurityStampClaimType` secret claim of `Identity`. + +Create a service that inherits from `IAbpOpenIddictClaimDestinationsProvider` and add it to DI to fully control the destinations of claims. ```cs public class MyClaimDestinationsProvider : IAbpOpenIddictClaimDestinationsProvider, ITransientDependency { public virtual Task SetDestinationsAsync(AbpOpenIddictClaimDestinationsProviderContext context) { - // ... + foreach (var claim in context.Claims) + { + if (claim.Type == MyClaims.MyClaimsType) + { + claim.SetDestinations(OpenIddictConstants.Destinations.AccessToken, OpenIddictConstants.Destinations.IdentityToken); + } + + if (claim.Type == MyClaims.MyClaimsType2) + { + claim.SetDestinations(OpenIddictConstants.Destinations.AccessToken); + } + } + return Task.CompletedTask; } } @@ -133,30 +353,11 @@ Configure(options => }); ``` -For detailed information, please refer to: [OpenIddict claim destinations](https://documentation.openiddict.com/configuration/claim-destinations.html) - -### EF Core module - -Implements the above four repository interfaces. - -### MongoDB module - -Implements the above four repository interfaces. - - -## OpenIddict +For detailed information, please refer to: [OpenIddict claim destinations](https://documentation.openiddict.com/configuration/claim-destinations.html) -### Documentation +#### Disable AccessToken Encryption -For more details about OpenIddict, please refer to its official documentation and Github. - -https://documentation.openiddict.com - -https://github.com/openiddict/openiddict-core#resources - -### Disable AccessToken Encryption - -ABP disables the `access token encryption` by default for compatibility, you can manually enable it if needed. +ABP disables the `access token encryption` by default for compatibility, it can be enabled manually if needed. ```cs public override void PreConfigureServices(ServiceConfigurationContext context) @@ -170,22 +371,15 @@ public override void PreConfigureServices(ServiceConfigurationContext context) https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption - -### PKCE - -https://documentation.openiddict.com/configuration/proof-key-for-code-exchange.html - -### Request/Response process - -I will briefly introduce the principle of OpenIddict so that everyone can quickly understand it. +### Request/Response Process The `OpenIddict.Server.AspNetCore` adds an authentication scheme(`Name: OpenIddict.Server.AspNetCore, handler: OpenIddictServerAspNetCoreHandler`) and implements the `IAuthenticationRequestHandler` interface. It will be executed first in `AuthenticationMiddleware` and can short-circuit the current request. Otherwise, `DefaultAuthenticateScheme` will be called and continue to execute the pipeline. -`OpenIddictServerAspNetCoreHandler` will call various built-in handlers(Handling requests and responses), And the handler will process according to the context or skip logic that has nothing to do with it. +`OpenIddictServerAspNetCoreHandler` will call various built-in handlers (handling requests and responses), And the handler will process according to the context or skip logic that has nothing to do with it. -Example a token request: +Example of a token request: ``` POST /connect/token HTTP/1.1 @@ -199,11 +393,11 @@ Content-Type: application/x-www-form-urlencoded scope=AbpAPI offline_access ``` -This request will be processed by various handlers. They will confirm the endpoint type of the request, check `http/https`, verify that the request parameters (`client. scope etc`) are valid and exist in the database, etc. Various protocol checks. And build a `OpenIddictRequest` object, If there are any errors, the response content may be set and directly short-circuit the current request. +This request will be processed by various handlers. They will confirm the endpoint type of the request, check `HTTP/HTTPS`, verify that the request parameters (`client. scope, etc`) are valid and exist in the database, etc. Various protocol checks. And build a `OpenIddictRequest` object, If there are any errors, the response content may be set and directly short-circuit the current request. -If everything is ok, the request will go to our processing controller(eg `TokenController`), we can get an `OpenIddictRequest` from the http request at this time. The rest of our work will be based on this object. +If everything is ok, the request will go to our processing controller(eg `TokenController`), we can get an `OpenIddictRequest` from the HTTP request at this time. The rest will be based on this object. -We may check the `username` and `password` in the request. If it is correct we create a `ClaimsPrincipal` object and return a `SignInResult`, which uses the `OpenIddict.Validation.AspNetCore` authentication scheme name, will calls `OpenIddictServerAspNetCoreHandler` for processing. +Check the `username` and `password` in the request. If it is correct create a `ClaimsPrincipal` object and return a `SignInResult`, which uses the `OpenIddict.Validation.AspNetCore` authentication scheme name, will calls `OpenIddictServerAspNetCoreHandler` for processing. `OpenIddictServerAspNetCoreHandler` do some checks to generate json and replace the http response content. @@ -214,10 +408,26 @@ If you need to customize OpenIddict, you need to replace/delete/add new handlers Please refer to: https://documentation.openiddict.com/guides/index.html#events-model -## Migrating Guide +### PKCE -[Migrating from IdentityServer to OpenIddict Step by Step Guide ](../Migration-Guides/OpenIddict-Step-by-Step.md) +https://documentation.openiddict.com/configuration/proof-key-for-code-exchange.html -## Sponsor +## Demo projects + +In the module's `app` directory there are six projects(including `angular`) + +* `OpenIddict.Demo.Server`: An abp application with integrated modules (has two `clients` and a `scope`). +* `OpenIddict.Demo.API`: ASP NET Core API application using JwtBearer authentication. +* `OpenIddict.Demo.Client.Mvc`: ASP NET Core MVC application using `OpenIdConnect` for authentication. +* `OpenIddict.Demo.Client.Console`: Use `IdentityModel` to test OpenIddict's various endpoints, and call the api of `OpenIddict.Demo.API`. +* `OpenIddict.Demo.Client.BlazorWASM:` ASP NET Core Blazor application using `OidcAuthentication` for authentication. +* `angular`: An angular application that integrates the abp ng modules and uses oauth for authentication. -Please consider sponsoring this project: https://github.com/sponsors/kevinchalet +#### How to run? + +Confirm the connection string of `appsettings.json` in the `OpenIddict.Demo.Server` project. Running the project will automatically create the database and initialize the data. +After running the `OpenIddict.Demo.API` project, then you can run the rest of the projects to test. + +## Migrating Guide + +[Migrating from IdentityServer to OpenIddict Step by Step Guide ](../Migration-Guides/OpenIddict-Step-by-Step.md) diff --git a/docs/en/Startup-Templates/Application.md b/docs/en/Startup-Templates/Application.md index ec89f479ab..6a47363e8c 100644 --- a/docs/en/Startup-Templates/Application.md +++ b/docs/en/Startup-Templates/Application.md @@ -78,7 +78,7 @@ Based on the options you've specified, you will get a slightly different solutio If you don't specify any additional options, you will have a solution as shown below: -![bookstore-visual-studio-solution-v3](../images/bookstore-visual-studio-solution-v3.png) +![bookstore-rider-solution-v6](../images/solution-structure-solution-explorer-rider.png) Projects are organized in `src` and `test` folders. `src` folder contains the actual application which is layered based on [DDD](../Domain-Driven-Design.md) principles as mentioned before. @@ -225,7 +225,7 @@ So, the resulting solution allows a 4-tiered deployment, by comparing to 3-tiere The solution structure is shown below: -![bookstore-visual-studio-solution-v3](../images/bookstore-visual-studio-solution-tiered.png) +![bookstore-rider-solution-v6](../images/bookstore-rider-solution-tiered.png) As different from the default structure, two new projects come into play: `.AuthServer` & `.HttpApi.Host`. @@ -233,9 +233,9 @@ As different from the default structure, two new projects come into play: `.Auth This project is used as an authentication server for other projects. `.Web` project uses OpenId Connect Authentication to get identity and access tokens for the current user from the AuthServer. Then uses the access token to call the HTTP API server. HTTP API server uses bearer token authentication to obtain claims from the access token to authorize the current user. -![tiered-solution-applications](../images/tiered-solution-applications.png) +![tiered-solution-applications](../images/tiered-solution-applications-authserver.png) -ABP uses the open source [OpenIddcit](https://github.com/openiddict/openiddict-core) framework for the authentication between applications. See [OpenIddcit documentation](https://documentation.openiddict.com/) for details about the OpenIddict and OpenID Connect protocol. +ABP uses the [OpenIddict Module](../Modules/OpenIddict.md) that uses the open-source [OpenIddict-core](https://github.com/openiddict/openiddict-core) library for the authentication between applications. See [OpenIddict documentation](https://documentation.openiddict.com/) for details about the OpenIddict and OpenID Connect protocol. It has its own `appsettings.json` that contains database connection and other configurations. diff --git a/docs/en/UI/Angular/Current-User.md b/docs/en/UI/Angular/Current-User.md new file mode 100644 index 0000000000..820a787b5c --- /dev/null +++ b/docs/en/UI/Angular/Current-User.md @@ -0,0 +1,20 @@ +# Angular UI: Current User + +The current user information stored in Config State. + +### How to Get a Current User Information Configuration + +You can use the `getOne` or `getOne$` method of `ConfigStateService` to get a specific configuration property. For that, the property name should be passed to the method as parameter. + +```js +// this.config is an instance of ConfigStateService + +const currentUser = this.config.getOne("currentUser"); + +// or +this.config.getOne$("currentUser").subscribe(currentUser => { + // use currentUser here +}) +``` + +> See the [ConfigStateService](./Config-State-Service) for more information. diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index 4b82495a00..b919955c6e 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -981,6 +981,10 @@ "text": "Authorization", "path": "UI/Angular/Authorization.md" }, + { + "text": "Current User", + "path": "UI/Angular/Current-User.md" + }, { "text": "HTTP Requests", "path": "UI/Angular/HTTP-Requests.md" @@ -1282,10 +1286,6 @@ { "text": "Deploying to a Clustered Environment", "path": "Deployment/Clustered-Environment.md" - }, - { - "text": "Deploy Abp Webapp to Azure App Service", - "path": "Deployment/Deploy-Azure-App-Service.md" } ] }, diff --git a/docs/en/images/azdevops-1.png b/docs/en/images/azdevops-1.png deleted file mode 100644 index 78181e4b7c..0000000000 Binary files a/docs/en/images/azdevops-1.png and /dev/null differ diff --git a/docs/en/images/azdevops-10.png b/docs/en/images/azdevops-10.png deleted file mode 100644 index 75a273ba52..0000000000 Binary files a/docs/en/images/azdevops-10.png and /dev/null differ diff --git a/docs/en/images/azdevops-11.png b/docs/en/images/azdevops-11.png deleted file mode 100644 index 422a0ddbc0..0000000000 Binary files a/docs/en/images/azdevops-11.png and /dev/null differ diff --git a/docs/en/images/azdevops-12.png b/docs/en/images/azdevops-12.png deleted file mode 100644 index e1bc1399f9..0000000000 Binary files a/docs/en/images/azdevops-12.png and /dev/null differ diff --git a/docs/en/images/azdevops-13.png b/docs/en/images/azdevops-13.png deleted file mode 100644 index e83f972b20..0000000000 Binary files a/docs/en/images/azdevops-13.png and /dev/null differ diff --git a/docs/en/images/azdevops-14.png b/docs/en/images/azdevops-14.png deleted file mode 100644 index a4bd3b65d0..0000000000 Binary files a/docs/en/images/azdevops-14.png and /dev/null differ diff --git a/docs/en/images/azdevops-15.png b/docs/en/images/azdevops-15.png deleted file mode 100644 index ed4b9dc6a0..0000000000 Binary files a/docs/en/images/azdevops-15.png and /dev/null differ diff --git a/docs/en/images/azdevops-16.png b/docs/en/images/azdevops-16.png deleted file mode 100644 index 402f6b7d5e..0000000000 Binary files a/docs/en/images/azdevops-16.png and /dev/null differ diff --git a/docs/en/images/azdevops-17.png b/docs/en/images/azdevops-17.png deleted file mode 100644 index 5441a87035..0000000000 Binary files a/docs/en/images/azdevops-17.png and /dev/null differ diff --git a/docs/en/images/azdevops-18.png b/docs/en/images/azdevops-18.png deleted file mode 100644 index 8e358172d5..0000000000 Binary files a/docs/en/images/azdevops-18.png and /dev/null differ diff --git a/docs/en/images/azdevops-19.png b/docs/en/images/azdevops-19.png deleted file mode 100644 index ff282de4d5..0000000000 Binary files a/docs/en/images/azdevops-19.png and /dev/null differ diff --git a/docs/en/images/azdevops-2.png b/docs/en/images/azdevops-2.png deleted file mode 100644 index 9982431409..0000000000 Binary files a/docs/en/images/azdevops-2.png and /dev/null differ diff --git a/docs/en/images/azdevops-20.png b/docs/en/images/azdevops-20.png deleted file mode 100644 index f8a00be927..0000000000 Binary files a/docs/en/images/azdevops-20.png and /dev/null differ diff --git a/docs/en/images/azdevops-21.png b/docs/en/images/azdevops-21.png deleted file mode 100644 index 7d55d11150..0000000000 Binary files a/docs/en/images/azdevops-21.png and /dev/null differ diff --git a/docs/en/images/azdevops-22.png b/docs/en/images/azdevops-22.png deleted file mode 100644 index f103c8f56f..0000000000 Binary files a/docs/en/images/azdevops-22.png and /dev/null differ diff --git a/docs/en/images/azdevops-23.png b/docs/en/images/azdevops-23.png deleted file mode 100644 index 7318b82d13..0000000000 Binary files a/docs/en/images/azdevops-23.png and /dev/null differ diff --git a/docs/en/images/azdevops-3.png b/docs/en/images/azdevops-3.png deleted file mode 100644 index 0ede96f42a..0000000000 Binary files a/docs/en/images/azdevops-3.png and /dev/null differ diff --git a/docs/en/images/azdevops-4.png b/docs/en/images/azdevops-4.png deleted file mode 100644 index 52e025913c..0000000000 Binary files a/docs/en/images/azdevops-4.png and /dev/null differ diff --git a/docs/en/images/azdevops-5.png b/docs/en/images/azdevops-5.png deleted file mode 100644 index 31384e5de5..0000000000 Binary files a/docs/en/images/azdevops-5.png and /dev/null differ diff --git a/docs/en/images/azdevops-6.png b/docs/en/images/azdevops-6.png deleted file mode 100644 index cc493dfd43..0000000000 Binary files a/docs/en/images/azdevops-6.png and /dev/null differ diff --git a/docs/en/images/azdevops-7.png b/docs/en/images/azdevops-7.png deleted file mode 100644 index e5f0cda151..0000000000 Binary files a/docs/en/images/azdevops-7.png and /dev/null differ diff --git a/docs/en/images/azdevops-8.png b/docs/en/images/azdevops-8.png deleted file mode 100644 index 5c2f996cf8..0000000000 Binary files a/docs/en/images/azdevops-8.png and /dev/null differ diff --git a/docs/en/images/azdevops-9.png b/docs/en/images/azdevops-9.png deleted file mode 100644 index 0c8a7b557e..0000000000 Binary files a/docs/en/images/azdevops-9.png and /dev/null differ diff --git a/docs/en/images/bookstore-rider-solution-tiered.png b/docs/en/images/bookstore-rider-solution-tiered.png new file mode 100644 index 0000000000..25114bc51c Binary files /dev/null and b/docs/en/images/bookstore-rider-solution-tiered.png differ diff --git a/docs/en/images/solution-structure-solution-explorer-rider.png b/docs/en/images/solution-structure-solution-explorer-rider.png new file mode 100644 index 0000000000..8a09cec74e Binary files /dev/null and b/docs/en/images/solution-structure-solution-explorer-rider.png differ diff --git a/docs/en/images/tiered-solution-applications-authserver.png b/docs/en/images/tiered-solution-applications-authserver.png new file mode 100644 index 0000000000..6d96bf31b4 Binary files /dev/null and b/docs/en/images/tiered-solution-applications-authserver.png differ diff --git a/docs/pt-BR/Validation.md b/docs/pt-BR/Validation.md index 5818566cdd..662235431a 100644 --- a/docs/pt-BR/Validation.md +++ b/docs/pt-BR/Validation.md @@ -1,3 +1,182 @@ -## Validation +# Validação -Façam \ No newline at end of file +O sistema de validação é utilizado para validar a entrada do usuário ou a requisição do cliente para uma ação de um controller ou por um serviço. + +O ABP é compatível com o sistema de Validação de Modelos do ASP.NET Core e tudo escrito na [sua documentação](https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation) é válido para aplicações baseadas no ABP. Logo, esse documento foca nas funcionalidades do ABP ao invés de repetir a documentação da Microsoft. + +Além disso, o ABP adiciona os seguintes benefícios: + +* Define `IValidationEnabled` para adicionar validação automática para uma classe qualquer. Como todos os [serviços de aplicação](Application-Services.md) já o implementam, eles também são validados automaticamente. +* Automaticamente traduz os erros de validação para os atributos de anotação de dados. +* Provê serviços extensíveis para validar a chamada de um método ou o estado de um objeto. +* Provê integração com o [FluentValidation](https://fluentvalidation.net/) + +## Validando DTOs + +Essa seção introduz brevemente o sistema de validação. Para mais detalhes, veja a [Documentação da Validação de Modelo em ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation). + +### Atributos de anotação de dados + +Utilizar anotações de dados é uma maneira simples de implementar uma validação formal para um [DTO](Data-Transfer-Objects.md) de uma forma declarativa. Exemplo: + +````csharp +public class CreateBookDto +{ + [Required] + [StringLength(100)] + public string Name { get; set; } + + [Required] + [StringLength(1000)] + public string Description { get; set; } + + [Range(0, 999.99)] + public decimal Price { get; set; } +} +```` +Quando você utilizar essa classe como parâmetro para um [serviço da aplicação](Application-Services.md) ou um controller, ele será automaticamente validado e a validação traduzida será lançada ([e tratada](Exception-Handling.md) pelo ABP framework). + +### IValidatableObject + +`IValidatableObject` pode ser implementado por um DTO para executar uma lógica customizada de validação. O `CreateBookDto` no exemplo a seguir implementa essa interface e verifica se o `Name` é igual a `Description` e retorna um erro de validação nesse caso. + +````csharp +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace Acme.BookStore +{ + public class CreateBookDto : IValidatableObject + { + [Required] + [StringLength(100)] + public string Name { get; set; } + + [Required] + [StringLength(1000)] + public string Description { get; set; } + + [Range(0, 999.99)] + public decimal Price { get; set; } + + public IEnumerable Validate( + ValidationContext validationContext) + { + if (Name == Description) + { + yield return new ValidationResult( + "Name and Description can not be the same!", + new[] { "Name", "Description" } + ); + } + } + } +} +```` + +#### Resolvendo um serviço. + +Se você precisar resolver um serviço do [sistema de injeção de dependências](Dependency-Injection.md), você pode utilizar o objeto `ValidationContext`. + +````csharp +var myService = validationContext.GetRequiredService(); +```` + +> Enquanto resolver os serviços no método `Validate` permite várias possibilidades, não é um boa prática implementar sua lógica de validação do domínio nos DTOs. Mantenha os DTOs simples. Seu propósito é transferir dados (DTO: Data Transfer Object, ou Objeto de Transferência de Dados). + +## Infraestrutura de Validação. + +Essa seção explica alguns serviços adicionais fornecidos pelo ABP Framework. + +### Interface IValidationEnabled + +`IValidationEnabled` é um marcador vazio de interface que pode ser implementado por qualquer classe (registrada e resolvida a partir do [DI](Dependency-Injection.md)) para permitir que o ABP framework realize o sistema de validação para os métodos da classe. Por exemplo: + +````csharp +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Validation; + +namespace Acme.BookStore +{ + public class MyService : ITransientDependency, IValidationEnabled + { + public virtual async Task DoItAsync(MyInput input) + { + //... + } + } +} +```` + +> O ABP framework utiliza o sistema de [Proxying Dinâmico / Interceptadores](Dynamic-Proxying-Interceptors.md) para realizar a validação. Para fazê-lo funcionar, seu método deve ser **virtual** ou seu serviço deve ser injetado e utilizado através de uma **interface** (como `IMyService`). + +#### Habilitando e Desabilitando Validações + +Você pode utilizar o `[DisableValidation]` e desabilitar a validação para métodos, classes e propriedades. + +````csharp +[DisableValidation] +public Void MyMethod() +{ +} + +[DisableValidation] +public class InputClass +{ + public string MyProperty { get; set; } +} + +public class InputClass +{ + [DisableValidation] + public string MyProperty { get; set; } +} +```` + +### AbpValidationException + +Uma vez que o ABP determina um erro de validação, é lançada uma validação do tipo `AbpValidationException`. O código da sua aplicação poderá lançar o `AbpValidationException`, mas na maioria das vezes não será necessário. + +* A propriedade `ValidationErrors` do `AbpValidationException` contem a lista com os erros de validação. +* O nível de log do `AbpValidationException` é definido como `Warning`. Todos os erros de validação são logados no [Sistema de Logging](Logging.md). +* `AbpValidationException` é tratado automaticamente pelo ABP framework e é convertido em um erro utilizável com o código de status HTTP 400. Veja a documentação de [Manipulação de Exceção](Exception-Handling.md) para mais informações. + +## Tópicos Avançados + +### IObjectValidator + +Além da validação automática, você pode querer validar um objeto manualmente. Nesse caso, [injete](Dependency-Injection.md) e use o serviço `IObjectValidator`: + +* O método `ValidateAsync` valida o objeto informado baseado nas regras de validação e lança uma `AbpValidationException` se não estiver em um estado válido. + +* `GetErrorsAsync` não lança uma exceção, somente retorna os erros de validação. + +`IObjectValidator` é implementado pelo `ObjectValidator` por padrão. `ObjectValidator` é extensível; você pode implementar a interface `IObjectValidationContributor` para contribuir com uma lógica customizada. Exemplo: + +````csharp +public class MyObjectValidationContributor + : IObjectValidationContributor, ITransientDependency +{ + public Task AddErrorsAsync(ObjectValidationContext context) + { + //Get the validating object + var obj = context.ValidatingObject; + + //Add the validation errors if available + context.Errors.Add(...); + return Task.CompletedTask; + } +} +```` + +* Lembre-se de registrar sua classe no [DI](Dependency-Injection.md) (implementar `ITransientDependency` faz isso no exemplo anterior) +* ABP vai automaticamente descobrir sua classe e utilizá-la em qualquer tipo de validação de objetos (incluindo chamadas de métodos de validação automáticas). + +### IMethodInvocationValidator + +`IMethodInvocationValidator` é utilizado para validar a chamada de um método. Ele utiliza internamente o `IObjectValidator` para validar os objetos passados na chamada do método. Você normalmente não precisa deste serviço, já que ele é utilizado automaticamente pelo framework, mas você pode querer reutilizar ou substituir na sua aplicação em alguns casos raros. + +## Integração com FluentValidation + +O pacote Volo.Abp.FluentValidation integra a biblioteca FluentValidation com o sistema de validação (implementando o `IObjectValidationContributor`). Veja o [documento de Integração com o FluentValidation](FluentValidation.md) para mais informações. diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index fadd40bcc5..4ce47bdbc8 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -409,6 +409,18 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.RemoteServices", " EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.PlugIn", "test\Volo.Abp.AspNetCore.Mvc.PlugIn\Volo.Abp.AspNetCore.Mvc.PlugIn.csproj", "{C6D6D878-208A-4FD2-822E-365545D8681B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Dapr", "src\Volo.Abp.Dapr\Volo.Abp.Dapr.csproj", "{192A829F-D608-4E41-8DE0-058E943E453F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EventBus.Dapr", "src\Volo.Abp.EventBus.Dapr\Volo.Abp.EventBus.Dapr.csproj", "{DCC41E99-EBC7-4F19-BA0D-A6F770D8E431}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Http.Client.Dapr", "src\Volo.Abp.Http.Client.Dapr\Volo.Abp.Http.Client.Dapr.csproj", "{18B796D2-D45D-41AE-9A42-75C9B14B20DF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.Dapr", "src\Volo.Abp.AspNetCore.Mvc.Dapr\Volo.Abp.AspNetCore.Mvc.Dapr.csproj", "{5EED625D-8D86-492A-BCB8-F6C8CD8D4AA1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.Dapr.EventBus", "src\Volo.Abp.AspNetCore.Mvc.Dapr.EventBus\Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.csproj", "{B02EF042-C39E-45C4-A92D-BF7554E1889D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.DistributedLocking.Dapr", "src\Volo.Abp.DistributedLocking.Dapr\Volo.Abp.DistributedLocking.Dapr.csproj", "{CAE48068-233C-47A9-BEAB-DDF521730E7A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1219,6 +1231,30 @@ Global {C6D6D878-208A-4FD2-822E-365545D8681B}.Debug|Any CPU.Build.0 = Debug|Any CPU {C6D6D878-208A-4FD2-822E-365545D8681B}.Release|Any CPU.ActiveCfg = Release|Any CPU {C6D6D878-208A-4FD2-822E-365545D8681B}.Release|Any CPU.Build.0 = Release|Any CPU + {192A829F-D608-4E41-8DE0-058E943E453F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {192A829F-D608-4E41-8DE0-058E943E453F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {192A829F-D608-4E41-8DE0-058E943E453F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {192A829F-D608-4E41-8DE0-058E943E453F}.Release|Any CPU.Build.0 = Release|Any CPU + {DCC41E99-EBC7-4F19-BA0D-A6F770D8E431}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DCC41E99-EBC7-4F19-BA0D-A6F770D8E431}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DCC41E99-EBC7-4F19-BA0D-A6F770D8E431}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DCC41E99-EBC7-4F19-BA0D-A6F770D8E431}.Release|Any CPU.Build.0 = Release|Any CPU + {18B796D2-D45D-41AE-9A42-75C9B14B20DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {18B796D2-D45D-41AE-9A42-75C9B14B20DF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {18B796D2-D45D-41AE-9A42-75C9B14B20DF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {18B796D2-D45D-41AE-9A42-75C9B14B20DF}.Release|Any CPU.Build.0 = Release|Any CPU + {5EED625D-8D86-492A-BCB8-F6C8CD8D4AA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5EED625D-8D86-492A-BCB8-F6C8CD8D4AA1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5EED625D-8D86-492A-BCB8-F6C8CD8D4AA1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5EED625D-8D86-492A-BCB8-F6C8CD8D4AA1}.Release|Any CPU.Build.0 = Release|Any CPU + {B02EF042-C39E-45C4-A92D-BF7554E1889D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B02EF042-C39E-45C4-A92D-BF7554E1889D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B02EF042-C39E-45C4-A92D-BF7554E1889D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B02EF042-C39E-45C4-A92D-BF7554E1889D}.Release|Any CPU.Build.0 = Release|Any CPU + {CAE48068-233C-47A9-BEAB-DDF521730E7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CAE48068-233C-47A9-BEAB-DDF521730E7A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CAE48068-233C-47A9-BEAB-DDF521730E7A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CAE48068-233C-47A9-BEAB-DDF521730E7A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1425,6 +1461,12 @@ Global {3683340D-92F5-4B14-B77B-34A163333309} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {EDFFDA74-090D-439C-A58D-06CCF86D4423} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {C6D6D878-208A-4FD2-822E-365545D8681B} = {447C8A77-E5F0-4538-8687-7383196D04EA} + {192A829F-D608-4E41-8DE0-058E943E453F} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {DCC41E99-EBC7-4F19-BA0D-A6F770D8E431} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {18B796D2-D45D-41AE-9A42-75C9B14B20DF} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {5EED625D-8D86-492A-BCB8-F6C8CD8D4AA1} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {B02EF042-C39E-45C4-A92D-BF7554E1889D} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {CAE48068-233C-47A9-BEAB-DDF521730E7A} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/FodyWeavers.xml b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/FodyWeavers.xml new file mode 100644 index 0000000000..be0de3a908 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/FodyWeavers.xsd b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.csproj new file mode 100644 index 0000000000..78b46cad27 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.csproj @@ -0,0 +1,18 @@ + + + + + + + net6.0 + enable + enable + + + + + + + + + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprEventBusModule.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprEventBusModule.cs new file mode 100644 index 0000000000..333a5aae9a --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprEventBusModule.cs @@ -0,0 +1,29 @@ +using Microsoft.AspNetCore.Http.Json; +using Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.SystemTextJson; +using Volo.Abp.EventBus.Dapr; +using Volo.Abp.Json.SystemTextJson; +using Volo.Abp.Modularity; + +namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus; + +[DependsOn( + typeof(AbpAspNetCoreMvcDaprModule), + typeof(AbpEventBusDaprModule) +)] +public class AbpAspNetCoreMvcDaprEventBusModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + // TODO: Add NewtonsoftJson json converter. + + Configure(options => + { + options.SerializerOptions.Converters.Add(new AbpAspNetCoreMvcDaprSubscriptionDefinitionConverter()); + }); + + Configure(options => + { + options.JsonSerializerOptions.Converters.Add(new AbpAspNetCoreMvcDaprSubscriptionDefinitionConverter()); + }); + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprEventBusOptions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprEventBusOptions.cs new file mode 100644 index 0000000000..02ca4c8e22 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprEventBusOptions.cs @@ -0,0 +1,11 @@ +namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus; + +public class AbpAspNetCoreMvcDaprEventBusOptions +{ + public List Contributors { get; } + + public AbpAspNetCoreMvcDaprEventBusOptions() + { + Contributors = new List(); + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprPubSubConsts.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprPubSubConsts.cs new file mode 100644 index 0000000000..e785f2e737 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprPubSubConsts.cs @@ -0,0 +1,8 @@ +namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus; + +public class AbpAspNetCoreMvcDaprPubSubConsts +{ + public const string DaprSubscribeUrl = "dapr/subscribe"; + + public const string DaprEventCallbackUrl = "api/abp/dapr/event"; +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprPubSubProvider.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprPubSubProvider.cs new file mode 100644 index 0000000000..e797bd2fc0 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprPubSubProvider.cs @@ -0,0 +1,63 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.Models; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EventBus; +using Volo.Abp.EventBus.Dapr; +using Volo.Abp.EventBus.Distributed; + +namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus; + +public class AbpAspNetCoreMvcDaprPubSubProvider : ITransientDependency +{ + protected IServiceProvider ServiceProvider { get; } + protected AbpAspNetCoreMvcDaprEventBusOptions AspNetCoreMvcDaprEventBusOptions { get; } + protected AbpDaprEventBusOptions DaprEventBusOptions { get; } + protected AbpDistributedEventBusOptions DistributedEventBusOptions { get; } + + public AbpAspNetCoreMvcDaprPubSubProvider( + IServiceProvider serviceProvider, + IOptions aspNetCoreDaprEventBusOptions, + IOptions daprEventBusOptions, + IOptions distributedEventBusOptions) + { + ServiceProvider = serviceProvider; + AspNetCoreMvcDaprEventBusOptions = aspNetCoreDaprEventBusOptions.Value; + DaprEventBusOptions = daprEventBusOptions.Value; + DistributedEventBusOptions = distributedEventBusOptions.Value; + } + + public virtual async Task> GetSubscriptionsAsync() + { + var subscriptions = new List(); + foreach (var handler in DistributedEventBusOptions.Handlers) + { + foreach (var @interface in handler.GetInterfaces().Where(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IDistributedEventHandler<>))) + { + var eventType = @interface.GetGenericArguments()[0]; + var eventName = EventNameAttribute.GetNameOrDefault(eventType); + + subscriptions.Add(new AbpAspNetCoreMvcDaprSubscriptionDefinition() + { + PubSubName = DaprEventBusOptions.PubSubName, + Topic = eventName, + Route = AbpAspNetCoreMvcDaprPubSubConsts.DaprEventCallbackUrl + }); + } + } + + if (AspNetCoreMvcDaprEventBusOptions.Contributors.Any()) + { + using (var scope = ServiceProvider.CreateScope()) + { + var context = new AbpAspNetCoreMvcDaprPubSubProviderContributorContext(scope.ServiceProvider, subscriptions); + foreach (var contributor in AspNetCoreMvcDaprEventBusOptions.Contributors) + { + await contributor.ContributeAsync(context); + } + } + } + + return subscriptions; + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprPubSubProviderContributorContext.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprPubSubProviderContributorContext.cs new file mode 100644 index 0000000000..564b541dec --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/AbpAspNetCoreMvcDaprPubSubProviderContributorContext.cs @@ -0,0 +1,16 @@ +using Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.Models; + +namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus; + +public class AbpAspNetCoreMvcDaprPubSubProviderContributorContext +{ + public IServiceProvider ServiceProvider { get; } + + public List Subscriptions { get; } + + public AbpAspNetCoreMvcDaprPubSubProviderContributorContext(IServiceProvider serviceProvider, List daprSubscriptionModels) + { + ServiceProvider = serviceProvider; + Subscriptions = daprSubscriptionModels; + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprPubSubController.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprPubSubController.cs new file mode 100644 index 0000000000..c97e793b53 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprPubSubController.cs @@ -0,0 +1,36 @@ +using System.Text.Json; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.Models; +using Volo.Abp.Dapr; +using Volo.Abp.EventBus.Dapr; + +namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.Controllers; + +[Area("abp")] +[RemoteService(Name = "abp")] +public class AbpAspNetCoreMvcDaprPubSubController : AbpController +{ + [HttpGet(AbpAspNetCoreMvcDaprPubSubConsts.DaprSubscribeUrl)] + public virtual async Task> SubscribeAsync() + { + return await HttpContext.RequestServices.GetRequiredService().GetSubscriptionsAsync(); + } + + [HttpPost(AbpAspNetCoreMvcDaprPubSubConsts.DaprEventCallbackUrl)] + public virtual async Task EventsAsync() + { + var bodyJsonDocument = await JsonDocument.ParseAsync(HttpContext.Request.Body); + var request = JsonSerializer.Deserialize(bodyJsonDocument.RootElement.GetRawText(), + HttpContext.RequestServices.GetRequiredService>().Value.JsonSerializerOptions); + + var distributedEventBus = HttpContext.RequestServices.GetRequiredService(); + var daprSerializer = HttpContext.RequestServices.GetRequiredService(); + + var eventData = daprSerializer.Deserialize(bodyJsonDocument.RootElement.GetProperty("data").GetRawText(), distributedEventBus.GetEventType(request.Topic)); + await distributedEventBus.TriggerHandlersAsync(distributedEventBus.GetEventType(request.Topic), eventData); + + return Ok(); + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/IAbpAspNetCoreMvcDaprPubSubProviderContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/IAbpAspNetCoreMvcDaprPubSubProviderContributor.cs new file mode 100644 index 0000000000..87047cd7ec --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/IAbpAspNetCoreMvcDaprPubSubProviderContributor.cs @@ -0,0 +1,6 @@ +namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus; + +public interface IAbpAspNetCoreMvcDaprPubSubProviderContributor +{ + Task ContributeAsync(AbpAspNetCoreMvcDaprPubSubProviderContributorContext context); +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Models/AbpAspNetCoreMvcDaprSubscriptionDefinition.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Models/AbpAspNetCoreMvcDaprSubscriptionDefinition.cs new file mode 100644 index 0000000000..287e78e01a --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Models/AbpAspNetCoreMvcDaprSubscriptionDefinition.cs @@ -0,0 +1,10 @@ +namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.Models; + +public class AbpAspNetCoreMvcDaprSubscriptionDefinition +{ + public string PubSubName { get; set; } + + public string Topic { get; set; } + + public string Route { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Models/AbpAspNetCoreMvcDaprSubscriptionRequest.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Models/AbpAspNetCoreMvcDaprSubscriptionRequest.cs new file mode 100644 index 0000000000..46c04b5a44 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Models/AbpAspNetCoreMvcDaprSubscriptionRequest.cs @@ -0,0 +1,8 @@ +namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.Models; + +public class AbpAspNetCoreMvcDaprSubscriptionRequest +{ + public string PubSubName { get; set; } + + public string Topic { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/SystemTextJson/AbpAspNetCoreMvcDaprPubSubJsonNamingPolicy.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/SystemTextJson/AbpAspNetCoreMvcDaprPubSubJsonNamingPolicy.cs new file mode 100644 index 0000000000..0aa6bd4f7c --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/SystemTextJson/AbpAspNetCoreMvcDaprPubSubJsonNamingPolicy.cs @@ -0,0 +1,11 @@ +using System.Text.Json; + +namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.SystemTextJson; + +public class AbpAspNetCoreMvcDaprPubSubJsonNamingPolicy : JsonNamingPolicy +{ + public override string ConvertName(string name) + { + return name.ToLower(); + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/SystemTextJson/AbpAspNetCoreMvcDaprSubscriptionDefinitionConverter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/SystemTextJson/AbpAspNetCoreMvcDaprSubscriptionDefinitionConverter.cs new file mode 100644 index 0000000000..fa26d35ca6 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/SystemTextJson/AbpAspNetCoreMvcDaprSubscriptionDefinitionConverter.cs @@ -0,0 +1,25 @@ +using System.Text.Json; +using System.Text.Json.Serialization; +using Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.Models; + +namespace Volo.Abp.AspNetCore.Mvc.Dapr.EventBus.SystemTextJson; + +public class AbpAspNetCoreMvcDaprSubscriptionDefinitionConverter : JsonConverter +{ + private JsonSerializerOptions _writeJsonSerializerOptions; + + public override AbpAspNetCoreMvcDaprSubscriptionDefinition Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + throw new NotSupportedException(); + } + + public override void Write(Utf8JsonWriter writer, AbpAspNetCoreMvcDaprSubscriptionDefinition value, JsonSerializerOptions options) + { + _writeJsonSerializerOptions ??= JsonSerializerOptionsHelper.Create(new JsonSerializerOptions(options) + { + PropertyNamingPolicy = new AbpAspNetCoreMvcDaprPubSubJsonNamingPolicy() + }, x => x == this); + + JsonSerializer.Serialize(writer, value, _writeJsonSerializerOptions); + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/FodyWeavers.xml b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/FodyWeavers.xml new file mode 100644 index 0000000000..be0de3a908 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/FodyWeavers.xsd b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo.Abp.AspNetCore.Mvc.Dapr.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo.Abp.AspNetCore.Mvc.Dapr.csproj new file mode 100644 index 0000000000..d792a30b24 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo.Abp.AspNetCore.Mvc.Dapr.csproj @@ -0,0 +1,22 @@ + + + + + + + net6.0 + enable + enable + + + + + + + + + + + + + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/AbpAspNetCoreMvcDaprModule.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/AbpAspNetCoreMvcDaprModule.cs new file mode 100644 index 0000000000..f8ba3fcfc2 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/AbpAspNetCoreMvcDaprModule.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Dapr; +using Volo.Abp.Modularity; + +namespace Volo.Abp.AspNetCore.Mvc.Dapr; + +[DependsOn( + typeof(AbpAspNetCoreMvcModule), + typeof(AbpDaprModule) +)] +public class AbpAspNetCoreMvcDaprModule : AbpModule +{ + +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalSize.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalSize.cs index f022dacce5..452a616365 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalSize.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalSize.cs @@ -5,5 +5,11 @@ public enum AbpModalSize Default, Small, Large, - ExtraLarge + ExtraLarge, + Fullscreen, + FullscreenSmDown, + FullscreenMdDown, + FullscreenLgDown, + FullscreenXlDown, + FullscreenXxlDown } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalSizeExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalSizeExtensions.cs index 7b0de7a595..9477783557 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalSizeExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Modal/AbpModalSizeExtensions.cs @@ -14,6 +14,18 @@ public static class AbpModalSizeExtensions return "modal-xl"; case AbpModalSize.Default: return ""; + case AbpModalSize.Fullscreen: + return "modal-fullscreen"; + case AbpModalSize.FullscreenSmDown: + return "modal-fullscreen-sm-down"; + case AbpModalSize.FullscreenMdDown: + return "modal-fullscreen-md-down"; + case AbpModalSize.FullscreenLgDown: + return "modal-fullscreen-lg-down"; + case AbpModalSize.FullscreenXlDown: + return "modal-fullscreen-xl-down"; + case AbpModalSize.FullscreenXxlDown: + return "modal-fullscreen-xxl-down"; default: throw new AbpException($"Unknown {nameof(AbpModalSize)}: {size}"); } diff --git a/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs b/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs index 868ecb3fa5..03084d8351 100644 --- a/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs +++ b/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using Autofac.Core; using Autofac.Extras.DynamicProxy; +using Volo.Abp.Autofac; using Volo.Abp.Castle.DynamicProxy; using Volo.Abp.DependencyInjection; using Volo.Abp.Modularity; @@ -67,10 +68,11 @@ public static class AbpRegistrationBuilderExtensions Type implementationType) where TActivatorData : ReflectionActivatorData { - //Enable Property Injection only for types in an assembly containing an AbpModule - if (moduleContainer.Modules.Any(m => m.Assembly == implementationType.Assembly)) + // Enable Property Injection only for types in an assembly containing an AbpModule and without a DisablePropertyInjection attribute on class or properties. + if (moduleContainer.Modules.Any(m => m.Assembly == implementationType.Assembly) && + implementationType.GetCustomAttributes(typeof(DisablePropertyInjectionAttribute), true).IsNullOrEmpty()) { - registrationBuilder = registrationBuilder.PropertiesAutowired(); + registrationBuilder = registrationBuilder.PropertiesAutowired(new AbpPropertySelector(false)); } return registrationBuilder; diff --git a/framework/src/Volo.Abp.Autofac/Volo/Abp/Autofac/AbpPropertySelector.cs b/framework/src/Volo.Abp.Autofac/Volo/Abp/Autofac/AbpPropertySelector.cs new file mode 100644 index 0000000000..00d20e9bca --- /dev/null +++ b/framework/src/Volo.Abp.Autofac/Volo/Abp/Autofac/AbpPropertySelector.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using System.Reflection; +using Autofac.Core; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Autofac; + +public class AbpPropertySelector : DefaultPropertySelector +{ + public AbpPropertySelector(bool preserveSetValues) + : base(preserveSetValues) + { + } + + public override bool InjectProperty(PropertyInfo propertyInfo, object instance) + { + return propertyInfo.GetCustomAttributes(typeof(DisablePropertyInjectionAttribute), true).IsNullOrEmpty() && + base.InjectProperty(propertyInfo, instance); + } + +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Auth/AuthService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Auth/AuthService.cs index c3ce0afb54..cc198e877b 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Auth/AuthService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Auth/AuthService.cs @@ -74,9 +74,9 @@ public class AuthService : IAuthService, ITransientDependency { var configuration = new IdentityClientConfiguration( CliUrls.AccountAbpIo, - "role email abpio abpio_www abpio_commercial offline_access", + "abpio offline_access", "abp-cli", - "1q2w3e*", + null, OidcConstants.GrantTypes.Password, userName, password @@ -96,9 +96,9 @@ public class AuthService : IAuthService, ITransientDependency { var configuration = new IdentityClientConfiguration( CliUrls.AccountAbpIo, - "role email abpio abpio_www abpio_commercial openid offline_access", + "abpio offline_access", "abp-cli", - "1q2w3e*", + null, OidcConstants.GrantTypes.DeviceCode ); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs index 492e938874..65212fe69f 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/BundlingService.cs @@ -113,8 +113,11 @@ public class BundlingService : IBundlingService, ITransientDependency var contributor = CreateContributorInstance(bundleDefinition.BundleContributorType); contributor.AddScripts(scriptContext); } + + scriptContext.BundleDefinitions.AddIfNotContains( + x => x.Source == "_framework/blazor.webassembly.js", + () => new BundleDefinition { Source = "_framework/blazor.webassembly.js" }); - scriptContext.Add("_framework/blazor.webassembly.js"); return scriptContext; } @@ -206,7 +209,7 @@ public class BundlingService : IBundlingService, ITransientDependency builder.Append($" "); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index cc64d73ff2..b0927cbcc9 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -9,6 +9,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.Bundling; using Volo.Abp.Cli.Commands.Services; using Volo.Abp.Cli.LIbs; using Volo.Abp.Cli.ProjectBuilding; @@ -26,23 +27,35 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien protected TemplateProjectBuilder TemplateProjectBuilder { get; } public ITemplateInfoProvider TemplateInfoProvider { get; } - - public NewCommand(TemplateProjectBuilder templateProjectBuilder - , ITemplateInfoProvider templateInfoProvider, - ConnectionStringProvider connectionStringProvider, + + public NewCommand( + ConnectionStringProvider connectionStringProvider, SolutionPackageVersionFinder solutionPackageVersionFinder, ICmdHelper cmdHelper, - IInstallLibsService installLibsService, - AngularPwaSupportAdder angularPwaSupportAdder, + IInstallLibsService installLibsService, + CliService cliService, + AngularPwaSupportAdder angularPwaSupportAdder, InitialMigrationCreator initialMigrationCreator, - ThemePackageAdder themePackageAdder, - ILocalEventBus eventBus) - : base(connectionStringProvider, solutionPackageVersionFinder, cmdHelper, installLibsService, angularPwaSupportAdder, initialMigrationCreator, themePackageAdder, eventBus) + ThemePackageAdder themePackageAdder, + ILocalEventBus eventBus, + IBundlingService bundlingService, + ITemplateInfoProvider templateInfoProvider, + TemplateProjectBuilder templateProjectBuilder) : + base(connectionStringProvider, + solutionPackageVersionFinder, + cmdHelper, + installLibsService, + cliService, + angularPwaSupportAdder, + initialMigrationCreator, + themePackageAdder, + eventBus, + bundlingService) { - TemplateProjectBuilder = templateProjectBuilder; TemplateInfoProvider = templateInfoProvider; + TemplateProjectBuilder = templateProjectBuilder; } - + public async Task ExecuteAsync(CommandLineArgs commandLineArgs) { var projectName = NamespaceHelper.NormalizeNamespace(commandLineArgs.Target); @@ -72,7 +85,7 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien Logger.LogInformation("Tiered: yes"); } - var projectArgs = GetProjectBuildArgs(commandLineArgs, template, projectName); + var projectArgs = await GetProjectBuildArgsAsync(commandLineArgs, template, projectName); var result = await TemplateProjectBuilder.BuildAsync( projectArgs @@ -92,6 +105,8 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien await RunInstallLibsForWebTemplateAsync(projectArgs); } + await RunBundleForBlazorWasmTemplateAsync(projectArgs); + await ConfigurePwaSupportForAngular(projectArgs); OpenRelatedWebPage(projectArgs, template, isTiered, commandLineArgs); @@ -155,5 +170,4 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien { return "Generate a new solution based on the ABP startup templates."; } - } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 6bd8a78cc8..646d8d4c08 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -10,6 +10,7 @@ using NuGet.Versioning; using NUglify.Helpers; using Volo.Abp.Cli.ProjectModification; using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.Bundling; using Volo.Abp.Cli.Commands.Services; using Volo.Abp.Cli.LIbs; using Volo.Abp.Cli.ProjectBuilding; @@ -25,10 +26,12 @@ namespace Volo.Abp.Cli.Commands; public abstract class ProjectCreationCommandBase { + private readonly IBundlingService _bundlingService; public ConnectionStringProvider ConnectionStringProvider { get; } public SolutionPackageVersionFinder SolutionPackageVersionFinder { get; } public ICmdHelper CmdHelper { get; } public IInstallLibsService InstallLibsService { get; } + public CliService CliService { get; } public AngularPwaSupportAdder AngularPwaSupportAdder { get; } public InitialMigrationCreator InitialMigrationCreator { get; } public ILocalEventBus EventBus { get; } @@ -41,15 +44,19 @@ public abstract class ProjectCreationCommandBase SolutionPackageVersionFinder solutionPackageVersionFinder, ICmdHelper cmdHelper, IInstallLibsService installLibsService, + CliService cliService, AngularPwaSupportAdder angularPwaSupportAdder, InitialMigrationCreator initialMigrationCreator, ThemePackageAdder themePackageAdder, - ILocalEventBus eventBus) + ILocalEventBus eventBus, + IBundlingService bundlingService) { + _bundlingService = bundlingService; ConnectionStringProvider = connectionStringProvider; SolutionPackageVersionFinder = solutionPackageVersionFinder; CmdHelper = cmdHelper; InstallLibsService = installLibsService; + CliService = cliService; AngularPwaSupportAdder = angularPwaSupportAdder; InitialMigrationCreator = initialMigrationCreator; EventBus = eventBus; @@ -58,7 +65,7 @@ public abstract class ProjectCreationCommandBase Logger = NullLogger.Instance; } - protected ProjectBuildArgs GetProjectBuildArgs(CommandLineArgs commandLineArgs, string template, string projectName) + protected async Task GetProjectBuildArgsAsync(CommandLineArgs commandLineArgs, string template, string projectName) { var version = commandLineArgs.Options.GetOrNull(Options.Version.Short, Options.Version.Long); @@ -71,6 +78,15 @@ public abstract class ProjectCreationCommandBase if (preview) { Logger.LogInformation("Preview: yes"); + + var cliVersion = await CliService.GetCurrentCliVersionAsync(typeof(CliService).Assembly); + + if (!cliVersion.IsPrerelease) + { + throw new CliUsageException( + "You can only create a new preview solution with preview CLI version." + + " Update your ABP CLI to the preview version."); + } } var pwa = commandLineArgs.Options.ContainsKey(Options.ProgressiveWebApp.Short); @@ -392,6 +408,25 @@ public abstract class ProjectCreationCommandBase } } + protected async Task RunBundleForBlazorWasmTemplateAsync(ProjectBuildArgs projectArgs) + { + if (AppTemplateBase.IsAppTemplate(projectArgs.TemplateName) && projectArgs.UiFramework == UiFramework.Blazor) + { + Logger.LogInformation("Generating bundles for Blazor Wasm..."); + + await EventBus.PublishAsync(new ProjectCreationProgressEvent + { + Message = "Generating bundles for Blazor Wasm" + }, false); + + var directory = Path.GetDirectoryName( + Directory.GetFiles(projectArgs.OutputFolder, "*.Blazor.csproj", SearchOption.AllDirectories).First() + ); + + await _bundlingService.BundleAsync(directory, true); + } + } + protected async Task CreateInitialMigrationsAsync(ProjectBuildArgs projectArgs) { if (projectArgs.DatabaseProvider == DatabaseProvider.MongoDb) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/CommercialPackages.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/CommercialPackages.cs index 97003287bb..096fe9f314 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/CommercialPackages.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/CommercialPackages.cs @@ -14,6 +14,16 @@ internal static class CommercialPackages public static bool IsCommercial(string packageId) { - return Packages.Contains(packageId.ToLowerInvariant()); + return Packages.Contains(packageId.ToLowerInvariant()) || IsLeptonXPackage(packageId); + } + + private static bool IsLeptonXPackage(string packageId) + { + return !IsLeptonXLitePackage(packageId) && packageId.Contains("LeptonX"); + } + + private static bool IsLeptonXLitePackage(string packageId) + { + return packageId.Contains("LeptonXLite"); } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/CreateAppSettingsSecretsStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/CreateAppSettingsSecretsStep.cs index 20e4f8fca6..f0ba4044d1 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/CreateAppSettingsSecretsStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/CreateAppSettingsSecretsStep.cs @@ -11,7 +11,7 @@ public class CreateAppSettingsSecretsStep : ProjectBuildPipelineStep public override void Execute(ProjectBuildContext context) { var appSettingsFiles = context.Files - .Where(x => x.Name.EndsWith(CliConsts.AppSettingsJsonFileName) && NotBlazorWasmProject(x.Name)) + .Where(x => x.Name.EndsWith(CliConsts.AppSettingsJsonFileName) && NotBlazorWasmProject(x.Name) && NotInDockerFiles(x.Name)) .ToList(); if (!appSettingsFiles.Any()) @@ -66,6 +66,11 @@ public class CreateAppSettingsSecretsStep : ProjectBuildPipelineStep return !fileName.Contains("Blazor/wwwroot") && !fileName.Contains("Blazor.Host/wwwroot"); } + private static bool NotInDockerFiles(string fileName) + { + return !fileName.Contains("etc/docker/"); + } + private static string ReplaceAppSettingsSecretsPlaceholder(string content) { var path = string.Empty; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs index 0f249ceae7..abf1e515df 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs @@ -41,10 +41,7 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase break; } - if (context.BuildArgs.DatabaseManagementSystem == DatabaseManagementSystem.PostgreSQL) - { - context.Symbols.Add("dbms:PostgreSQL"); - } + context.Symbols.Add($"dbms:{context.BuildArgs.DatabaseManagementSystem}"); switch (context.BuildArgs.UiFramework) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index 397a35222a..2d7da80211 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -37,6 +37,7 @@ public abstract class AppTemplateBase : TemplateInfo ConfigureTieredArchitecture(context, steps); ConfigurePublicWebSite(context, steps); ConfigureTheme(context, steps); + ConfigureVersion(context, steps); RemoveUnnecessaryPorts(context, steps); RandomizeSslPorts(context, steps); RandomizeStringEncryption(context, steps); @@ -109,10 +110,7 @@ public abstract class AppTemplateBase : TemplateInfo steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests")); } - if (context.BuildArgs.DatabaseManagementSystem == DatabaseManagementSystem.PostgreSQL) - { - context.Symbols.Add("dbms:PostgreSQL"); - } + context.Symbols.Add($"dbms:{context.BuildArgs.DatabaseManagementSystem}"); } protected void DeleteUnrelatedProjects(ProjectBuildContext context, List steps) @@ -492,6 +490,14 @@ public abstract class AppTemplateBase : TemplateInfo steps.Add(new RemoveUnnecessaryPortsStep()); } + protected void ConfigureVersion(ProjectBuildContext context, List steps) + { + if (context.BuildArgs.Version == null || SemanticVersion.Parse(context.BuildArgs.Version) >= SemanticVersion.Parse("6.0.0-rc.1")) + { + context.Symbols.Add("newer-than-6.0"); + } + } + protected void RandomizeSslPorts(ProjectBuildContext context, List steps) { if (context.BuildArgs.ExtraProperties.ContainsKey("no-random-port")) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/DisablePropertyInjectionAttribute.cs b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/DisablePropertyInjectionAttribute.cs new file mode 100644 index 0000000000..fad0d7334a --- /dev/null +++ b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/DisablePropertyInjectionAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace Volo.Abp.DependencyInjection; + +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)] +public class DisablePropertyInjectionAttribute : Attribute +{ + +} diff --git a/framework/src/Volo.Abp.Dapr/FodyWeavers.xml b/framework/src/Volo.Abp.Dapr/FodyWeavers.xml new file mode 100644 index 0000000000..be0de3a908 --- /dev/null +++ b/framework/src/Volo.Abp.Dapr/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Dapr/FodyWeavers.xsd b/framework/src/Volo.Abp.Dapr/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.Dapr/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Dapr/Volo.Abp.Dapr.csproj b/framework/src/Volo.Abp.Dapr/Volo.Abp.Dapr.csproj new file mode 100644 index 0000000000..d3a8651086 --- /dev/null +++ b/framework/src/Volo.Abp.Dapr/Volo.Abp.Dapr.csproj @@ -0,0 +1,21 @@ + + + + + + + net6.0 + enable + enable + + + + + + + + + + + + diff --git a/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprClientFactory.cs b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprClientFactory.cs new file mode 100644 index 0000000000..faaf450ddc --- /dev/null +++ b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprClientFactory.cs @@ -0,0 +1,48 @@ +using System.Collections.Concurrent; +using System.Text.Json; +using Dapr.Client; +using Microsoft.Extensions.Options; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Json.SystemTextJson; + +namespace Volo.Abp.Dapr; + +public class AbpDaprClientFactory : ITransientDependency +{ + protected AbpDaprOptions Options { get; } + protected AbpSystemTextJsonSerializerOptions SystemTextJsonSerializerOptions { get; } + + public AbpDaprClientFactory( + IOptions options, + IOptions systemTextJsonSerializerOptions) + { + Options = options.Value; + SystemTextJsonSerializerOptions = systemTextJsonSerializerOptions.Value; + } + + public virtual async Task CreateAsync() + { + var builder = new DaprClientBuilder() + .UseJsonSerializationOptions(await CreateJsonSerializerOptions()); + + if (!Options.HttpEndpoint.IsNullOrWhiteSpace()) + { + builder.UseHttpEndpoint(Options.HttpEndpoint); + } + + if (!Options.GrpcEndpoint.IsNullOrWhiteSpace()) + { + builder.UseGrpcEndpoint(Options.GrpcEndpoint); + } + + return builder.Build(); + } + + private readonly static ConcurrentDictionary JsonSerializerOptionsCache = new ConcurrentDictionary(); + + protected virtual Task CreateJsonSerializerOptions() + { + return Task.FromResult(JsonSerializerOptionsCache.GetOrAdd(nameof(AbpDaprClientFactory), + _ => new JsonSerializerOptions(SystemTextJsonSerializerOptions.JsonSerializerOptions))); + } +} diff --git a/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprModule.cs b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprModule.cs new file mode 100644 index 0000000000..43d6d11033 --- /dev/null +++ b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprModule.cs @@ -0,0 +1,15 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Json; +using Volo.Abp.Modularity; + +namespace Volo.Abp.Dapr; + +[DependsOn(typeof(AbpJsonModule))] +public class AbpDaprModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + Configure(configuration.GetSection("Dapr")); + } +} diff --git a/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprOptions.cs b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprOptions.cs new file mode 100644 index 0000000000..9d743263c5 --- /dev/null +++ b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/AbpDaprOptions.cs @@ -0,0 +1,10 @@ +namespace Volo.Abp.Dapr; + +public class AbpDaprOptions +{ + public string AppId { get; set; } + + public string HttpEndpoint { get; set; } + + public string GrpcEndpoint { get; set; } +} diff --git a/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/IDaprSerializer.cs b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/IDaprSerializer.cs new file mode 100644 index 0000000000..7eec2c5c1c --- /dev/null +++ b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/IDaprSerializer.cs @@ -0,0 +1,16 @@ +namespace Volo.Abp.Dapr; + +public interface IDaprSerializer +{ + byte[] Serialize(object obj); + + object Deserialize(byte[] value, Type type); + + T Deserialize(byte[] value); + + string SerializeToString(object obj); + + object Deserialize(string value, Type type); + + T Deserialize(string value); +} diff --git a/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/Utf8JsonDaprSerializer.cs b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/Utf8JsonDaprSerializer.cs new file mode 100644 index 0000000000..ce9b4a8523 --- /dev/null +++ b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/Utf8JsonDaprSerializer.cs @@ -0,0 +1,45 @@ +using System.Text; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Json; + +namespace Volo.Abp.Dapr; + +public class Utf8JsonDaprSerializer : IDaprSerializer, ITransientDependency +{ + private readonly IJsonSerializer _jsonSerializer; + + public Utf8JsonDaprSerializer(IJsonSerializer jsonSerializer) + { + _jsonSerializer = jsonSerializer; + } + + public byte[] Serialize(object obj) + { + return Encoding.UTF8.GetBytes(_jsonSerializer.Serialize(obj)); + } + + public object Deserialize(byte[] value, Type type) + { + return _jsonSerializer.Deserialize(type, Encoding.UTF8.GetString(value)); + } + + public T Deserialize(byte[] value) + { + return _jsonSerializer.Deserialize(Encoding.UTF8.GetString(value)); + } + + public string SerializeToString(object obj) + { + return _jsonSerializer.Serialize(obj); + } + + public object Deserialize(string value, Type type) + { + return _jsonSerializer.Deserialize(type, value); + } + + public T Deserialize(string value) + { + return _jsonSerializer.Deserialize(value); + } +} diff --git a/framework/src/Volo.Abp.DistributedLocking.Dapr/FodyWeavers.xml b/framework/src/Volo.Abp.DistributedLocking.Dapr/FodyWeavers.xml new file mode 100644 index 0000000000..be0de3a908 --- /dev/null +++ b/framework/src/Volo.Abp.DistributedLocking.Dapr/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.DistributedLocking.Dapr/FodyWeavers.xsd b/framework/src/Volo.Abp.DistributedLocking.Dapr/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.DistributedLocking.Dapr/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo.Abp.DistributedLocking.Dapr.csproj b/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo.Abp.DistributedLocking.Dapr.csproj new file mode 100644 index 0000000000..80cad677a3 --- /dev/null +++ b/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo.Abp.DistributedLocking.Dapr.csproj @@ -0,0 +1,18 @@ + + + + + + + net6.0 + enable + enable + + + + + + + + + diff --git a/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/AbpDistributedLockDaprOptions.cs b/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/AbpDistributedLockDaprOptions.cs new file mode 100644 index 0000000000..43feba3c3b --- /dev/null +++ b/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/AbpDistributedLockDaprOptions.cs @@ -0,0 +1,13 @@ +namespace Volo.Abp.DistributedLocking.Dapr; + +public class AbpDistributedLockDaprOptions +{ + public string StoreName { get; set; } + + public TimeSpan DefaultTimeout { get; set; } + + public AbpDistributedLockDaprOptions() + { + DefaultTimeout = TimeSpan.FromSeconds(30); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/AbpDistributedLockingDaprModule.cs b/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/AbpDistributedLockingDaprModule.cs new file mode 100644 index 0000000000..c915cfe2f7 --- /dev/null +++ b/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/AbpDistributedLockingDaprModule.cs @@ -0,0 +1,11 @@ +using Volo.Abp.Dapr; +using Volo.Abp.Modularity; + +namespace Volo.Abp.DistributedLocking.Dapr; + +[DependsOn( + typeof(AbpDistributedLockingAbstractionsModule), + typeof(AbpDaprModule))] +public class AbpDistributedLockingDaprModule : AbpModule +{ +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/DaprAbpDistributedLock.cs b/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/DaprAbpDistributedLock.cs new file mode 100644 index 0000000000..7f95a56542 --- /dev/null +++ b/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/DaprAbpDistributedLock.cs @@ -0,0 +1,50 @@ +using Microsoft.Extensions.Options; +using Volo.Abp.Dapr; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.DistributedLocking.Dapr; + +[Dependency(ReplaceServices = true)] +public class DaprAbpDistributedLock : IAbpDistributedLock, ITransientDependency +{ + protected AbpDaprClientFactory DaprClientFactory { get; } + protected AbpDistributedLockDaprOptions DistributedLockDaprOptions { get; } + protected AbpDaprOptions DaprOptions { get; } + + public DaprAbpDistributedLock( + AbpDaprClientFactory daprClientFactory, + IOptions distributedLockDaprOptions, + IOptions daprOptions) + { + DaprClientFactory = daprClientFactory; + DaprOptions = daprOptions.Value; + DistributedLockDaprOptions = distributedLockDaprOptions.Value; + } + + public async Task TryAcquireAsync( + string name, + TimeSpan timeout = default, + CancellationToken cancellationToken = default) + { + if (timeout == default) + { + timeout = DistributedLockDaprOptions.DefaultTimeout; + } + + var daprClient = await DaprClientFactory.CreateAsync(); + + var lockResponse = await daprClient.Lock( + DistributedLockDaprOptions.StoreName, + name, + DaprOptions.AppId, + (int)timeout.TotalSeconds, + cancellationToken); + + if (lockResponse == null || !lockResponse.Success) + { + return null; + } + + return new DaprAbpDistributedLockHandle(lockResponse); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/DaprAbpDistributedLockHandle.cs b/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/DaprAbpDistributedLockHandle.cs new file mode 100644 index 0000000000..b10f0f3672 --- /dev/null +++ b/framework/src/Volo.Abp.DistributedLocking.Dapr/Volo/Abp/DistributedLocking/Dapr/DaprAbpDistributedLockHandle.cs @@ -0,0 +1,18 @@ +using Dapr.Client; + +namespace Volo.Abp.DistributedLocking.Dapr; + +public class DaprAbpDistributedLockHandle : IAbpDistributedLockHandle +{ + protected TryLockResponse LockResponse { get; } + + public DaprAbpDistributedLockHandle(TryLockResponse lockResponse) + { + LockResponse = lockResponse; + } + + public async ValueTask DisposeAsync() + { + await LockResponse.DisposeAsync(); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs index 853752cb6c..eef5b396a2 100644 --- a/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs +++ b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs @@ -9,5 +9,4 @@ namespace Volo.Abp.DistributedLocking; )] public class AbpDistributedLockingModule : AbpModule { - } diff --git a/framework/src/Volo.Abp.EventBus.Dapr/FodyWeavers.xml b/framework/src/Volo.Abp.EventBus.Dapr/FodyWeavers.xml new file mode 100644 index 0000000000..be0de3a908 --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Dapr/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.EventBus.Dapr/FodyWeavers.xsd b/framework/src/Volo.Abp.EventBus.Dapr/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Dapr/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.EventBus.Dapr/Volo.Abp.EventBus.Dapr.csproj b/framework/src/Volo.Abp.EventBus.Dapr/Volo.Abp.EventBus.Dapr.csproj new file mode 100644 index 0000000000..2bef3f9dc9 --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Dapr/Volo.Abp.EventBus.Dapr.csproj @@ -0,0 +1,18 @@ + + + + + + + net6.0 + enable + enable + + + + + + + + + diff --git a/framework/src/Volo.Abp.EventBus.Dapr/Volo/Abp/EventBus/Dapr/AbpDaprEventBusOptions.cs b/framework/src/Volo.Abp.EventBus.Dapr/Volo/Abp/EventBus/Dapr/AbpDaprEventBusOptions.cs new file mode 100644 index 0000000000..d3ced52ba2 --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Dapr/Volo/Abp/EventBus/Dapr/AbpDaprEventBusOptions.cs @@ -0,0 +1,11 @@ +namespace Volo.Abp.EventBus.Dapr; + +public class AbpDaprEventBusOptions +{ + public string PubSubName { get; set; } + + public AbpDaprEventBusOptions() + { + PubSubName = "pubsub"; + } +} diff --git a/framework/src/Volo.Abp.EventBus.Dapr/Volo/Abp/EventBus/Dapr/AbpEventBusDaprModule.cs b/framework/src/Volo.Abp.EventBus.Dapr/Volo/Abp/EventBus/Dapr/AbpEventBusDaprModule.cs new file mode 100644 index 0000000000..5f6329a4bc --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Dapr/Volo/Abp/EventBus/Dapr/AbpEventBusDaprModule.cs @@ -0,0 +1,20 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Dapr; +using Volo.Abp.Modularity; + +namespace Volo.Abp.EventBus.Dapr; + +[DependsOn( + typeof(AbpEventBusModule), + typeof(AbpDaprModule) + )] +public class AbpEventBusDaprModule : AbpModule +{ + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + context + .ServiceProvider + .GetRequiredService() + .Initialize(); + } +} diff --git a/framework/src/Volo.Abp.EventBus.Dapr/Volo/Abp/EventBus/Dapr/DaprDistributedEventBus.cs b/framework/src/Volo.Abp.EventBus.Dapr/Volo/Abp/EventBus/Dapr/DaprDistributedEventBus.cs new file mode 100644 index 0000000000..1f241b9c6d --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Dapr/Volo/Abp/EventBus/Dapr/DaprDistributedEventBus.cs @@ -0,0 +1,221 @@ +using System.Collections.Concurrent; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Volo.Abp.Dapr; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EventBus.Distributed; +using Volo.Abp.Guids; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Threading; +using Volo.Abp.Timing; +using Volo.Abp.Uow; + +namespace Volo.Abp.EventBus.Dapr; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IDistributedEventBus), typeof(DaprDistributedEventBus))] +public class DaprDistributedEventBus : DistributedEventBusBase, ISingletonDependency +{ + protected IDaprSerializer Serializer { get; } + protected AbpDaprEventBusOptions DaprEventBusOptions { get; } + protected AbpDaprClientFactory DaprClientFactory { get; } + + protected ConcurrentDictionary> HandlerFactories { get; } + protected ConcurrentDictionary EventTypes { get; } + + public DaprDistributedEventBus( + IServiceScopeFactory serviceScopeFactory, + ICurrentTenant currentTenant, + IUnitOfWorkManager unitOfWorkManager, + IOptions abpDistributedEventBusOptions, + IGuidGenerator guidGenerator, + IClock clock, + IEventHandlerInvoker eventHandlerInvoker, + IDaprSerializer serializer, + IOptions daprEventBusOptions, + AbpDaprClientFactory daprClientFactory) + : base(serviceScopeFactory, currentTenant, unitOfWorkManager, abpDistributedEventBusOptions, guidGenerator, clock, eventHandlerInvoker) + { + Serializer = serializer; + DaprEventBusOptions = daprEventBusOptions.Value; + DaprClientFactory = daprClientFactory; + + HandlerFactories = new ConcurrentDictionary>(); + EventTypes = new ConcurrentDictionary(); + } + + public void Initialize() + { + SubscribeHandlers(AbpDistributedEventBusOptions.Handlers); + } + + public override IDisposable Subscribe(Type eventType, IEventHandlerFactory factory) + { + var handlerFactories = GetOrCreateHandlerFactories(eventType); + + if (factory.IsInFactories(handlerFactories)) + { + return NullDisposable.Instance; + } + + handlerFactories.Add(factory); + + return new EventHandlerFactoryUnregistrar(this, eventType, factory); + } + + public override void Unsubscribe(Func action) + { + Check.NotNull(action, nameof(action)); + + GetOrCreateHandlerFactories(typeof(TEvent)) + .Locking(factories => + { + factories.RemoveAll( + factory => + { + var singleInstanceFactory = factory as SingleInstanceHandlerFactory; + if (singleInstanceFactory == null) + { + return false; + } + + var actionHandler = singleInstanceFactory.HandlerInstance as ActionEventHandler; + if (actionHandler == null) + { + return false; + } + + return actionHandler.Action == action; + }); + }); + } + + public override void Unsubscribe(Type eventType, IEventHandler handler) + { + GetOrCreateHandlerFactories(eventType) + .Locking(factories => + { + factories.RemoveAll( + factory => + factory is SingleInstanceHandlerFactory && + (factory as SingleInstanceHandlerFactory).HandlerInstance == handler + ); + }); + } + + public override void Unsubscribe(Type eventType, IEventHandlerFactory factory) + { + GetOrCreateHandlerFactories(eventType).Locking(factories => factories.Remove(factory)); + } + + public override void UnsubscribeAll(Type eventType) + { + GetOrCreateHandlerFactories(eventType).Locking(factories => factories.Clear()); + } + + protected async override Task PublishToEventBusAsync(Type eventType, object eventData) + { + await PublishToDaprAsync(eventType, eventData); + } + + protected override void AddToUnitOfWork(IUnitOfWork unitOfWork, UnitOfWorkEventRecord eventRecord) + { + unitOfWork.AddOrReplaceDistributedEvent(eventRecord); + } + + protected override IEnumerable GetHandlerFactories(Type eventType) + { + var handlerFactoryList = new List(); + + foreach (var handlerFactory in HandlerFactories.Where(hf => ShouldTriggerEventForHandler(eventType, hf.Key))) + { + handlerFactoryList.Add(new EventTypeWithEventHandlerFactories(handlerFactory.Key, handlerFactory.Value)); + } + + return handlerFactoryList.ToArray(); + } + + public async override Task PublishFromOutboxAsync(OutgoingEventInfo outgoingEvent, OutboxConfig outboxConfig) + { + await PublishToDaprAsync(outgoingEvent.EventName, Serializer.Deserialize(outgoingEvent.EventData, GetEventType(outgoingEvent.EventName))); + } + + public async override Task PublishManyFromOutboxAsync(IEnumerable outgoingEvents, OutboxConfig outboxConfig) + { + var outgoingEventArray = outgoingEvents.ToArray(); + + foreach (var outgoingEvent in outgoingEventArray) + { + await PublishToDaprAsync(outgoingEvent.EventName, Serializer.Deserialize(outgoingEvent.EventData, GetEventType(outgoingEvent.EventName))); + } + } + + public async override Task ProcessFromInboxAsync(IncomingEventInfo incomingEvent, InboxConfig inboxConfig) + { + var eventType = EventTypes.GetOrDefault(incomingEvent.EventName); + if (eventType == null) + { + return; + } + + var eventData = Serializer.Deserialize(incomingEvent.EventData, eventType); + var exceptions = new List(); + await TriggerHandlersAsync(eventType, eventData, exceptions, inboxConfig); + if (exceptions.Any()) + { + ThrowOriginalExceptions(eventType, exceptions); + } + } + + protected override byte[] Serialize(object eventData) + { + return Serializer.Serialize(eventData); + } + + private List GetOrCreateHandlerFactories(Type eventType) + { + return HandlerFactories.GetOrAdd( + eventType, + type => + { + var eventName = EventNameAttribute.GetNameOrDefault(type); + EventTypes[eventName] = type; + return new List(); + } + ); + } + + public Type GetEventType(string eventName) + { + return EventTypes.GetOrDefault(eventName); + } + + protected virtual async Task PublishToDaprAsync(Type eventType, object eventData) + { + await PublishToDaprAsync(EventNameAttribute.GetNameOrDefault(eventType), eventData); + } + + protected virtual async Task PublishToDaprAsync(string eventName, object eventData) + { + var client = await DaprClientFactory.CreateAsync(); + await client.PublishEventAsync(pubsubName: DaprEventBusOptions.PubSubName, topicName: eventName, data: eventData); + } + + private static bool ShouldTriggerEventForHandler(Type targetEventType, Type handlerEventType) + { + //Should trigger same type + if (handlerEventType == targetEventType) + { + return true; + } + + //TODO: Support inheritance? But it does not support on subscription to RabbitMq! + //Should trigger for inherited types + if (handlerEventType.IsAssignableFrom(targetEventType)) + { + return true; + } + + return false; + } +} diff --git a/framework/src/Volo.Abp.Http.Client.Dapr/FodyWeavers.xml b/framework/src/Volo.Abp.Http.Client.Dapr/FodyWeavers.xml new file mode 100644 index 0000000000..be0de3a908 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.Dapr/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http.Client.Dapr/FodyWeavers.xsd b/framework/src/Volo.Abp.Http.Client.Dapr/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.Dapr/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http.Client.Dapr/Volo.Abp.Http.Client.Dapr.csproj b/framework/src/Volo.Abp.Http.Client.Dapr/Volo.Abp.Http.Client.Dapr.csproj new file mode 100644 index 0000000000..909fb156c8 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.Dapr/Volo.Abp.Http.Client.Dapr.csproj @@ -0,0 +1,18 @@ + + + + + + + net6.0 + enable + enable + + + + + + + + + diff --git a/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpHttpClientDaprModule.cs b/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpHttpClientDaprModule.cs new file mode 100644 index 0000000000..18a509d3ff --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpHttpClientDaprModule.cs @@ -0,0 +1,23 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Dapr; +using Volo.Abp.Modularity; + +namespace Volo.Abp.Http.Client.Dapr; + +[DependsOn( + typeof(AbpHttpClientModule), + typeof(AbpDaprModule) +)] +public class AbpHttpClientDaprModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(options => + { + options.ProxyClientBuildActions.Add((_, clientBuilder) => + { + clientBuilder.AddHttpMessageHandler(); + }); + }); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpInvocationHandler.cs b/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpInvocationHandler.cs new file mode 100644 index 0000000000..a3397b55e4 --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client.Dapr/Volo/Abp/Http/Client/Dapr/AbpInvocationHandler.cs @@ -0,0 +1,14 @@ +using Dapr.Client; +using Microsoft.Extensions.Options; +using Volo.Abp.Dapr; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Http.Client.Dapr; + +public class AbpInvocationHandler : InvocationHandler, ITransientDependency +{ + public AbpInvocationHandler(IOptions daprOptions) + { + DaprEndpoint = daprOptions.Value.HttpEndpoint; + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionHttpClientProxyExtensions.cs b/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionHttpClientProxyExtensions.cs index 4ccac104cd..7bc239813d 100644 --- a/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionHttpClientProxyExtensions.cs +++ b/framework/src/Volo.Abp.Http.Client/Microsoft/Extensions/DependencyInjection/ServiceCollectionHttpClientProxyExtensions.cs @@ -212,7 +212,7 @@ public static class ServiceCollectionHttpClientProxyExtensions } /// - /// Checks wether the type is suitable to use with the proxying. + /// Checks whether the type is suitable to use with the proxying. /// Currently the type is checked statically against some fixed conditions. /// /// Type to check diff --git a/framework/test/Volo.Abp.Core.Tests/Microsoft/Extensions/DependencyInjection/DependencyInjection_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Microsoft/Extensions/DependencyInjection/DependencyInjection_Tests.cs index 5d77c6a00e..52f07620fb 100644 --- a/framework/test/Volo.Abp.Core.Tests/Microsoft/Extensions/DependencyInjection/DependencyInjection_Tests.cs +++ b/framework/test/Volo.Abp.Core.Tests/Microsoft/Extensions/DependencyInjection/DependencyInjection_Tests.cs @@ -47,19 +47,36 @@ public abstract class DependencyInjection_Standard_Tests : AbpIntegratedTest().ProperyInjectedService.ShouldNotBeNull(); + GetRequiredService().PropertyInjectedService.ShouldNotBeNull(); } [Fact] public void Should_Inject_Services_As_Properties_For_Generic_Classes() { - GetRequiredService>().ProperyInjectedService.ShouldNotBeNull(); + GetRequiredService>().PropertyInjectedService.ShouldNotBeNull(); } [Fact] public void Should_Inject_Services_As_Properties_For_Generic_Concrete_Classes() { - GetRequiredService().ProperyInjectedService.ShouldNotBeNull(); + GetRequiredService().PropertyInjectedService.ShouldNotBeNull(); + } + + [Fact] + public void Should_Not_Inject_Services_As_Properties_When_Class_With_DisablePropertyInjection() + { + GetRequiredService().PropertyInjectedService.ShouldBeNull(); + GetRequiredService>().PropertyInjectedService.ShouldBeNull(); + } + + [Fact] + public void Should_Not_Inject_Services_As_Properties_When_Property_With_DisablePropertyInjection() + { + GetRequiredService().PropertyInjectedService.ShouldNotBeNull(); + GetRequiredService().DisablePropertyInjectionService.ShouldBeNull(); + + GetRequiredService>().PropertyInjectedService.ShouldNotBeNull(); + GetRequiredService>().DisablePropertyInjectionService.ShouldBeNull(); } [Fact] @@ -145,18 +162,19 @@ public abstract class DependencyInjection_Standard_Tests : AbpIntegratedTest(); context.Services.AddType(); context.Services.AddTransient(typeof(GenericServiceWithPropertyInject<>)); - context.Services.AddTransient(typeof(ConcreteGenericServiceWithPropertyInject)); + context.Services.AddTransient(typeof(GenericServiceWithDisablePropertyInjectionOnClass<>)); + context.Services.AddTransient(typeof(GenericServiceWithDisablePropertyInjectionOnProperty<>)); } } public class ServiceWithPropertyInject : ITransientDependency { - public MyEmptyTransientService ProperyInjectedService { get; set; } + public MyEmptyTransientService PropertyInjectedService { get; set; } } public class GenericServiceWithPropertyInject : ITransientDependency { - public MyEmptyTransientService ProperyInjectedService { get; set; } + public MyEmptyTransientService PropertyInjectedService { get; set; } public T Value { get; set; } } @@ -165,4 +183,36 @@ public abstract class DependencyInjection_Standard_Tests : AbpIntegratedTest : ITransientDependency + { + public MyEmptyTransientService PropertyInjectedService { get; set; } + + public T Value { get; set; } + } + + public class GenericServiceWithDisablePropertyInjectionOnProperty : ITransientDependency + { + public MyEmptyTransientService PropertyInjectedService { get; set; } + + [DisablePropertyInjection] + public MyEmptyTransientService DisablePropertyInjectionService { get; set; } + + public T Value { get; set; } + } } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index 7c70027264..33071a7428 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/modules/basic-theme/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": "^6.0.0-rc.2", + "@abp/aspnetcore.mvc.ui.theme.shared": "^6.0.0-rc.3", "highlight.js": "^9.13.1" }, "devDependencies": {} diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock index 8abd5aeb1d..cc8d424ae2 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock @@ -2,30 +2,30 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.shared@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.2.tgz#a7a69d3bb4aa09809b3362a045c1adba5b04d17c" - integrity sha512-sszTiRfJxy6EQ2C2xe3GwrfaVfZgSw8xOZcIFScBvW0fDMAfJCTJA+HMcaBTsng9EqHfc7622mWaPlWCD5ImEg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.2" - "@abp/bootstrap" "~6.0.0-rc.2" - "@abp/bootstrap-datepicker" "~6.0.0-rc.2" - "@abp/datatables.net-bs5" "~6.0.0-rc.2" - "@abp/font-awesome" "~6.0.0-rc.2" - "@abp/jquery-form" "~6.0.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.2" - "@abp/lodash" "~6.0.0-rc.2" - "@abp/luxon" "~6.0.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.2" - "@abp/select2" "~6.0.0-rc.2" - "@abp/sweetalert2" "~6.0.0-rc.2" - "@abp/timeago" "~6.0.0-rc.2" - "@abp/toastr" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.2.tgz#14d5da45b01af77caab45b01a43f07db6a5425f3" - integrity sha512-AIXP1FP/VvBGRzoslTRTnD4I1oei4Ufh5qVWKG+PwmrFJ6/XoarNV6FCKLePm7NETd1VSrq20uPCrfuZx2WKQg== +"@abp/aspnetcore.mvc.ui.theme.shared@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075" + integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3" + "@abp/bootstrap" "~6.0.0-rc.3" + "@abp/bootstrap-datepicker" "~6.0.0-rc.3" + "@abp/datatables.net-bs5" "~6.0.0-rc.3" + "@abp/font-awesome" "~6.0.0-rc.3" + "@abp/jquery-form" "~6.0.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3" + "@abp/lodash" "~6.0.0-rc.3" + "@abp/luxon" "~6.0.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3" + "@abp/select2" "~6.0.0-rc.3" + "@abp/sweetalert2" "~6.0.0-rc.3" + "@abp/timeago" "~6.0.0-rc.3" + "@abp/toastr" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41" + integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -34,144 +34,144 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.2.tgz#74785434be987d4579dcf66b52752d23d3dcc928" - integrity sha512-BvJEChBRwf7vuXap1s/hOi3PrlWkZYtpnZLKNjNpEfLLHa3LPrSLn9GAfVLS92/qxeB+S6Vk49HiwcOtuIeEOA== +"@abp/bootstrap-datepicker@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a" + integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.2.tgz#ef9e6fb40eb884dd69581bfd08a2523f274cbab8" - integrity sha512-cf1ttQV6gQX0UNoWIKxaJ7tk8dJAQ79WhklsuDWROl0KtkjQ/oCi14363YvWezMQe82xnps1m4ViX87JqNIM4w== +"@abp/bootstrap@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969" + integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" bootstrap "^5.1.3" -"@abp/core@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.2.tgz#6339637a278fc19e10d468aba118e2384a8310af" - integrity sha512-2t7rhjpRvByoAnkdSVEdN4ZVotHSRanv9fZRqK6yOQpHEZ4LDgByKi+eNdc3kiT0+VU3mHxMgq+FO+pxaBHSAA== +"@abp/core@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825" + integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ== dependencies: - "@abp/utils" "~6.0.0-rc.2" + "@abp/utils" "~6.0.0-rc.3" -"@abp/datatables.net-bs5@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.2.tgz#76ab55e97bc4d25f8bbfc6564f5e61f8404ab52c" - integrity sha512-Wdt22BSDqFvrZb5x2gcH8JG4jJ0++pN7M+t3jqSM3f9IZMOWHZ5GsUegUt+j60Cvqw7ItjP/BmBySQtmh3WbOg== +"@abp/datatables.net-bs5@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd" + integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg== dependencies: - "@abp/datatables.net" "~6.0.0-rc.2" + "@abp/datatables.net" "~6.0.0-rc.3" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.2.tgz#4364d099f2fc1f647fe40eb5cace2fe8c13281dd" - integrity sha512-exHwF0pmJnT83d2X3NcHFewT8ZyK1TWfwNNBVn+j3jwcm4/5KT9a308CAahV9hTz/Z6ZsjRdCRwdv0eU5VHPkQ== +"@abp/datatables.net@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1" + integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" datatables.net "^1.11.4" -"@abp/font-awesome@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.2.tgz#bc522149abafb82935094c8fcd72a8201f98a315" - integrity sha512-sPA9urlcUl2868zmABa7X1rA6aPYkihVEt1h/XSSYpjL/hu7I1RtDDEJ2k6GFjgd2AZ+8xKRkI4bpOE5HKtbsg== +"@abp/font-awesome@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217" + integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.2.tgz#cfeb8a300d2c350854689481c15404c37dfcb428" - integrity sha512-Okl0z6MibakfSH4Mzq2fDA0kj97tWSDpVcJLN+K5CkROhob2ZpkBiAysY7hqEMItAMruDa2SsrANxW65r4mi4Q== +"@abp/jquery-form@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a" + integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.2.tgz#a66677d87e3214086483853845c1bb609bbb4f3b" - integrity sha512-ymGMzH/kwfcvw749znmiE4I4jesJScEZu2LR1IrFcJUV9s4ThJEgSGnyjUAXZrt2jNSuWTUCXp4dI0PSm5iU3Q== +"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403" + integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg== dependencies: - "@abp/jquery-validation" "~6.0.0-rc.2" + "@abp/jquery-validation" "~6.0.0-rc.3" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.2.tgz#bcc7fbfbac2bc8e7efc94177e1a1a405d18ac387" - integrity sha512-RIeNdhDDa7fQunE9BnBxcdicQpcpcn/l7Rl6q8IuA18PN4z4DueXt3A6Qzl9zPl931yXzs7v28iW7j81/4Xpyw== +"@abp/jquery-validation@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260" + integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-validation "^1.19.3" -"@abp/jquery@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.2.tgz#6d641604a1687d2e8e3220171329960b7e40a315" - integrity sha512-FMCdtl3nPZDaTGZ7aKHzOYIzzYQvhDrdTm0bKD+5nKv70sL8TRQV16hzcARGFoA/9PoBLBfnVPcSYSEN/nL5Dw== +"@abp/jquery@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016" + integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" jquery "~3.6.0" -"@abp/lodash@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.2.tgz#939d667bc96a268344df16e12e458ae376ae0154" - integrity sha512-Q2+rVGolS+00Zsww/qTo+k2oqAIDzAVZCAaamgTCJ8mliho7wFvW8LWFwII3so/nKWiTb8Gwf7bW0nMKeCnvuw== +"@abp/lodash@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a" + integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" lodash "^4.17.21" -"@abp/luxon@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.2.tgz#7703887dcdee26cb1e972386ea295b879e3c51f6" - integrity sha512-ckGfUo7ZD19LjKmrKneYQSO8Mjp5rh4sM/587MdTtc0ZA3nyqX98DtE0nkm8MegTvoVUGYBKWhhIlqTb6VpI4w== +"@abp/luxon@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6" + integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.2.tgz#22af6c68067671714abdb52537487cd5cc73af43" - integrity sha512-rz3herKYP2KccHSUHpbkF1adfaECSR7TDOkOeFghpM/t5TCv/fs9uSroeteKyCMufWmYswY/1Yi4doYEQWcdfA== +"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db" + integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.2.tgz#8553c085f087c83cadf0f25a80660db2236387f5" - integrity sha512-im0T2Uah4QkqWOBqiu1fpm6SvV9Id5pV3qup3AFFKRcwhH9rvGGPjpSqq+Fh0sG23P1BSHw/lEedYwAPfxcR0w== +"@abp/select2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53" + integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.2.tgz#1e0603c7edefe72e32a11b96fc0f5095e9273f12" - integrity sha512-BsiCrj32DQjMBgx9L5FOBDK2xx4x97oEqx5qUAt5lYPtxzIpFUAdn2U3h8WUQfDKRFquQLJxJ993dZai4GfYQg== +"@abp/sweetalert2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4" + integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" sweetalert2 "^11.3.6" -"@abp/timeago@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.2.tgz#21d67d3fa54b930fdf2c6ae7ed1c182ce16f0c0a" - integrity sha512-oOcW0m2xlsDTw6MjJ+4WbN7y4Le3S1H1IRvU+64i5O3fj5WNBpAKxNEO0X0HLD6JJwlr1tzvE2uWqzoRWO9JXg== +"@abp/timeago@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53" + integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.2.tgz#3523b22b6bf473025b2b731eae59491997f2fbe2" - integrity sha512-StjNgLQNttZwm4L8vOOM/pclgMrmYTs1igmXnBXbYqMcE2Q7QfhZeOYwPvWrm0WlVC4pfR9l3ejYYcZljukqEA== +"@abp/toastr@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855" + integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" toastr "^2.1.4" -"@abp/utils@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.2.tgz#f93d7bcccc35335df5c14be10dc23bd7472868c8" - integrity sha512-6YdeptFQR1vZzLVKVjHmGQ+R+pK0iBiZdL7A3GkaC+ad5b+adybf8MJPyrbob96xV77/CEuXFUG88URed1B5Fw== +"@abp/utils@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360" + integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A== dependencies: just-compare "^1.3.0" diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index 718271e1c4..fcad11c385 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,8 +3,8 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.2", - "@abp/prismjs": "^6.0.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.3", + "@abp/prismjs": "^6.0.0-rc.3" }, "devDependencies": {} } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index 61b57c6948..dabafb9f12 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.2.tgz#0a80531a46e08719ef90b4f9013b8bb5ec2fe2f0" - integrity sha512-uktT9FXlDzJ0HGleYCnvUhSMgkSHiwrjVnztbx6zRvrhNsq/UNWPhYoGti8He9tQO1dLi2cRq1aTawtMIjgVow== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.2.tgz#a7a69d3bb4aa09809b3362a045c1adba5b04d17c" - integrity sha512-sszTiRfJxy6EQ2C2xe3GwrfaVfZgSw8xOZcIFScBvW0fDMAfJCTJA+HMcaBTsng9EqHfc7622mWaPlWCD5ImEg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.2" - "@abp/bootstrap" "~6.0.0-rc.2" - "@abp/bootstrap-datepicker" "~6.0.0-rc.2" - "@abp/datatables.net-bs5" "~6.0.0-rc.2" - "@abp/font-awesome" "~6.0.0-rc.2" - "@abp/jquery-form" "~6.0.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.2" - "@abp/lodash" "~6.0.0-rc.2" - "@abp/luxon" "~6.0.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.2" - "@abp/select2" "~6.0.0-rc.2" - "@abp/sweetalert2" "~6.0.0-rc.2" - "@abp/timeago" "~6.0.0-rc.2" - "@abp/toastr" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.2.tgz#14d5da45b01af77caab45b01a43f07db6a5425f3" - integrity sha512-AIXP1FP/VvBGRzoslTRTnD4I1oei4Ufh5qVWKG+PwmrFJ6/XoarNV6FCKLePm7NETd1VSrq20uPCrfuZx2WKQg== +"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318" + integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075" + integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3" + "@abp/bootstrap" "~6.0.0-rc.3" + "@abp/bootstrap-datepicker" "~6.0.0-rc.3" + "@abp/datatables.net-bs5" "~6.0.0-rc.3" + "@abp/font-awesome" "~6.0.0-rc.3" + "@abp/jquery-form" "~6.0.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3" + "@abp/lodash" "~6.0.0-rc.3" + "@abp/luxon" "~6.0.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3" + "@abp/select2" "~6.0.0-rc.3" + "@abp/sweetalert2" "~6.0.0-rc.3" + "@abp/timeago" "~6.0.0-rc.3" + "@abp/toastr" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41" + integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,161 +41,161 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.2.tgz#74785434be987d4579dcf66b52752d23d3dcc928" - integrity sha512-BvJEChBRwf7vuXap1s/hOi3PrlWkZYtpnZLKNjNpEfLLHa3LPrSLn9GAfVLS92/qxeB+S6Vk49HiwcOtuIeEOA== +"@abp/bootstrap-datepicker@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a" + integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.2.tgz#ef9e6fb40eb884dd69581bfd08a2523f274cbab8" - integrity sha512-cf1ttQV6gQX0UNoWIKxaJ7tk8dJAQ79WhklsuDWROl0KtkjQ/oCi14363YvWezMQe82xnps1m4ViX87JqNIM4w== +"@abp/bootstrap@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969" + integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" bootstrap "^5.1.3" -"@abp/clipboard@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.2.tgz#99f54676d61fb8b83447b453f69f2c8fedfc07ad" - integrity sha512-oNQ7i8lR0d74t/Hoqt6EgK1dgXfH44TmOuovqyegpqeOXlMPZJVeZ0Kkp2DTV6WgGQeR8rTMFWJyBvGfVFMQdA== +"@abp/clipboard@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.3.tgz#ee3a586b491d89442eefff08aaebbf9d38cb46d4" + integrity sha512-01svpp3mR29z1FTM+2Qe+MUNLPbl95bWlOXY5zz2hvNSbdD45lGud+BiOHfeZwlDk5jjr3FqLel+hxx2ByBvOA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" clipboard "^2.0.8" -"@abp/core@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.2.tgz#6339637a278fc19e10d468aba118e2384a8310af" - integrity sha512-2t7rhjpRvByoAnkdSVEdN4ZVotHSRanv9fZRqK6yOQpHEZ4LDgByKi+eNdc3kiT0+VU3mHxMgq+FO+pxaBHSAA== +"@abp/core@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825" + integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ== dependencies: - "@abp/utils" "~6.0.0-rc.2" + "@abp/utils" "~6.0.0-rc.3" -"@abp/datatables.net-bs5@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.2.tgz#76ab55e97bc4d25f8bbfc6564f5e61f8404ab52c" - integrity sha512-Wdt22BSDqFvrZb5x2gcH8JG4jJ0++pN7M+t3jqSM3f9IZMOWHZ5GsUegUt+j60Cvqw7ItjP/BmBySQtmh3WbOg== +"@abp/datatables.net-bs5@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd" + integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg== dependencies: - "@abp/datatables.net" "~6.0.0-rc.2" + "@abp/datatables.net" "~6.0.0-rc.3" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.2.tgz#4364d099f2fc1f647fe40eb5cace2fe8c13281dd" - integrity sha512-exHwF0pmJnT83d2X3NcHFewT8ZyK1TWfwNNBVn+j3jwcm4/5KT9a308CAahV9hTz/Z6ZsjRdCRwdv0eU5VHPkQ== +"@abp/datatables.net@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1" + integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" datatables.net "^1.11.4" -"@abp/font-awesome@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.2.tgz#bc522149abafb82935094c8fcd72a8201f98a315" - integrity sha512-sPA9urlcUl2868zmABa7X1rA6aPYkihVEt1h/XSSYpjL/hu7I1RtDDEJ2k6GFjgd2AZ+8xKRkI4bpOE5HKtbsg== +"@abp/font-awesome@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217" + integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.2.tgz#cfeb8a300d2c350854689481c15404c37dfcb428" - integrity sha512-Okl0z6MibakfSH4Mzq2fDA0kj97tWSDpVcJLN+K5CkROhob2ZpkBiAysY7hqEMItAMruDa2SsrANxW65r4mi4Q== +"@abp/jquery-form@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a" + integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.2.tgz#a66677d87e3214086483853845c1bb609bbb4f3b" - integrity sha512-ymGMzH/kwfcvw749znmiE4I4jesJScEZu2LR1IrFcJUV9s4ThJEgSGnyjUAXZrt2jNSuWTUCXp4dI0PSm5iU3Q== +"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403" + integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg== dependencies: - "@abp/jquery-validation" "~6.0.0-rc.2" + "@abp/jquery-validation" "~6.0.0-rc.3" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.2.tgz#bcc7fbfbac2bc8e7efc94177e1a1a405d18ac387" - integrity sha512-RIeNdhDDa7fQunE9BnBxcdicQpcpcn/l7Rl6q8IuA18PN4z4DueXt3A6Qzl9zPl931yXzs7v28iW7j81/4Xpyw== +"@abp/jquery-validation@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260" + integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-validation "^1.19.3" -"@abp/jquery@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.2.tgz#6d641604a1687d2e8e3220171329960b7e40a315" - integrity sha512-FMCdtl3nPZDaTGZ7aKHzOYIzzYQvhDrdTm0bKD+5nKv70sL8TRQV16hzcARGFoA/9PoBLBfnVPcSYSEN/nL5Dw== +"@abp/jquery@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016" + integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" jquery "~3.6.0" -"@abp/lodash@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.2.tgz#939d667bc96a268344df16e12e458ae376ae0154" - integrity sha512-Q2+rVGolS+00Zsww/qTo+k2oqAIDzAVZCAaamgTCJ8mliho7wFvW8LWFwII3so/nKWiTb8Gwf7bW0nMKeCnvuw== +"@abp/lodash@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a" + integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" lodash "^4.17.21" -"@abp/luxon@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.2.tgz#7703887dcdee26cb1e972386ea295b879e3c51f6" - integrity sha512-ckGfUo7ZD19LjKmrKneYQSO8Mjp5rh4sM/587MdTtc0ZA3nyqX98DtE0nkm8MegTvoVUGYBKWhhIlqTb6VpI4w== +"@abp/luxon@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6" + integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.2.tgz#22af6c68067671714abdb52537487cd5cc73af43" - integrity sha512-rz3herKYP2KccHSUHpbkF1adfaECSR7TDOkOeFghpM/t5TCv/fs9uSroeteKyCMufWmYswY/1Yi4doYEQWcdfA== +"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db" + integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/prismjs@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.2.tgz#5c200260038e1e7e7bcf627df840ec8d31efd255" - integrity sha512-zESjrel58EWNoreOvdYmpPLR3TpdPQEw7R8aGPgieTZSKxcM7aHYBa1vbN6czaIeD3RjwIBtaMVCOGhiPYSKug== +"@abp/prismjs@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.3.tgz#e4faf595e29db81c5a66030e59b0e09f09759bfd" + integrity sha512-zzd3iw/Im0M9FUmTviwkTCr4slkoZJExtK+qB1FmLxRY59+hyU9wxd6hwzic/QwhXxFQoYILJ3S3FNxsPIm76A== dependencies: - "@abp/clipboard" "~6.0.0-rc.2" - "@abp/core" "~6.0.0-rc.2" + "@abp/clipboard" "~6.0.0-rc.3" + "@abp/core" "~6.0.0-rc.3" prismjs "^1.26.0" -"@abp/select2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.2.tgz#8553c085f087c83cadf0f25a80660db2236387f5" - integrity sha512-im0T2Uah4QkqWOBqiu1fpm6SvV9Id5pV3qup3AFFKRcwhH9rvGGPjpSqq+Fh0sG23P1BSHw/lEedYwAPfxcR0w== +"@abp/select2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53" + integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.2.tgz#1e0603c7edefe72e32a11b96fc0f5095e9273f12" - integrity sha512-BsiCrj32DQjMBgx9L5FOBDK2xx4x97oEqx5qUAt5lYPtxzIpFUAdn2U3h8WUQfDKRFquQLJxJ993dZai4GfYQg== +"@abp/sweetalert2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4" + integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" sweetalert2 "^11.3.6" -"@abp/timeago@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.2.tgz#21d67d3fa54b930fdf2c6ae7ed1c182ce16f0c0a" - integrity sha512-oOcW0m2xlsDTw6MjJ+4WbN7y4Le3S1H1IRvU+64i5O3fj5WNBpAKxNEO0X0HLD6JJwlr1tzvE2uWqzoRWO9JXg== +"@abp/timeago@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53" + integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.2.tgz#3523b22b6bf473025b2b731eae59491997f2fbe2" - integrity sha512-StjNgLQNttZwm4L8vOOM/pclgMrmYTs1igmXnBXbYqMcE2Q7QfhZeOYwPvWrm0WlVC4pfR9l3ejYYcZljukqEA== +"@abp/toastr@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855" + integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" toastr "^2.1.4" -"@abp/utils@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.2.tgz#f93d7bcccc35335df5c14be10dc23bd7472868c8" - integrity sha512-6YdeptFQR1vZzLVKVjHmGQ+R+pK0iBiZdL7A3GkaC+ad5b+adybf8MJPyrbob96xV77/CEuXFUG88URed1B5Fw== +"@abp/utils@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360" + integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A== dependencies: just-compare "^1.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index e4328bca74..779b6502b4 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.2", - "@abp/blogging": "^6.0.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.3", + "@abp/blogging": "^6.0.0-rc.3" } } diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index c4d3e769ee..80ace6ebb0 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.2.tgz#0a80531a46e08719ef90b4f9013b8bb5ec2fe2f0" - integrity sha512-uktT9FXlDzJ0HGleYCnvUhSMgkSHiwrjVnztbx6zRvrhNsq/UNWPhYoGti8He9tQO1dLi2cRq1aTawtMIjgVow== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.2.tgz#a7a69d3bb4aa09809b3362a045c1adba5b04d17c" - integrity sha512-sszTiRfJxy6EQ2C2xe3GwrfaVfZgSw8xOZcIFScBvW0fDMAfJCTJA+HMcaBTsng9EqHfc7622mWaPlWCD5ImEg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.2" - "@abp/bootstrap" "~6.0.0-rc.2" - "@abp/bootstrap-datepicker" "~6.0.0-rc.2" - "@abp/datatables.net-bs5" "~6.0.0-rc.2" - "@abp/font-awesome" "~6.0.0-rc.2" - "@abp/jquery-form" "~6.0.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.2" - "@abp/lodash" "~6.0.0-rc.2" - "@abp/luxon" "~6.0.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.2" - "@abp/select2" "~6.0.0-rc.2" - "@abp/sweetalert2" "~6.0.0-rc.2" - "@abp/timeago" "~6.0.0-rc.2" - "@abp/toastr" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.2.tgz#14d5da45b01af77caab45b01a43f07db6a5425f3" - integrity sha512-AIXP1FP/VvBGRzoslTRTnD4I1oei4Ufh5qVWKG+PwmrFJ6/XoarNV6FCKLePm7NETd1VSrq20uPCrfuZx2WKQg== +"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318" + integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075" + integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3" + "@abp/bootstrap" "~6.0.0-rc.3" + "@abp/bootstrap-datepicker" "~6.0.0-rc.3" + "@abp/datatables.net-bs5" "~6.0.0-rc.3" + "@abp/font-awesome" "~6.0.0-rc.3" + "@abp/jquery-form" "~6.0.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3" + "@abp/lodash" "~6.0.0-rc.3" + "@abp/luxon" "~6.0.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3" + "@abp/select2" "~6.0.0-rc.3" + "@abp/sweetalert2" "~6.0.0-rc.3" + "@abp/timeago" "~6.0.0-rc.3" + "@abp/toastr" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41" + integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,187 +41,187 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/blogging@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-6.0.0-rc.2.tgz#193367b08ade62a65f721e23891216dc769836a7" - integrity sha512-d6RIA63iA55SEFkg8TrjE2Ru0xbZrLcERwTkgQYkpsFMqHy5o7MeCIJV1dlOtuN+BFkdo8ZJWKWCF0L2onk21A== +"@abp/blogging@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-6.0.0-rc.3.tgz#604e3497bcdfa69a29d4cbbe062b5b691234a8c5" + integrity sha512-OZyqi2Xlq7PDDvmwcVRcssr0hElxSKGoa2UXXeqF8P7FP22TsMvuX81xsNtSn7Qlu3pcFs1pr4em+SfOb8H6jw== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.2" - "@abp/owl.carousel" "~6.0.0-rc.2" - "@abp/prismjs" "~6.0.0-rc.2" - "@abp/tui-editor" "~6.0.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3" + "@abp/owl.carousel" "~6.0.0-rc.3" + "@abp/prismjs" "~6.0.0-rc.3" + "@abp/tui-editor" "~6.0.0-rc.3" -"@abp/bootstrap-datepicker@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.2.tgz#74785434be987d4579dcf66b52752d23d3dcc928" - integrity sha512-BvJEChBRwf7vuXap1s/hOi3PrlWkZYtpnZLKNjNpEfLLHa3LPrSLn9GAfVLS92/qxeB+S6Vk49HiwcOtuIeEOA== +"@abp/bootstrap-datepicker@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a" + integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.2.tgz#ef9e6fb40eb884dd69581bfd08a2523f274cbab8" - integrity sha512-cf1ttQV6gQX0UNoWIKxaJ7tk8dJAQ79WhklsuDWROl0KtkjQ/oCi14363YvWezMQe82xnps1m4ViX87JqNIM4w== +"@abp/bootstrap@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969" + integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" bootstrap "^5.1.3" -"@abp/clipboard@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.2.tgz#99f54676d61fb8b83447b453f69f2c8fedfc07ad" - integrity sha512-oNQ7i8lR0d74t/Hoqt6EgK1dgXfH44TmOuovqyegpqeOXlMPZJVeZ0Kkp2DTV6WgGQeR8rTMFWJyBvGfVFMQdA== +"@abp/clipboard@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.3.tgz#ee3a586b491d89442eefff08aaebbf9d38cb46d4" + integrity sha512-01svpp3mR29z1FTM+2Qe+MUNLPbl95bWlOXY5zz2hvNSbdD45lGud+BiOHfeZwlDk5jjr3FqLel+hxx2ByBvOA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" clipboard "^2.0.8" -"@abp/core@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.2.tgz#6339637a278fc19e10d468aba118e2384a8310af" - integrity sha512-2t7rhjpRvByoAnkdSVEdN4ZVotHSRanv9fZRqK6yOQpHEZ4LDgByKi+eNdc3kiT0+VU3mHxMgq+FO+pxaBHSAA== +"@abp/core@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825" + integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ== dependencies: - "@abp/utils" "~6.0.0-rc.2" + "@abp/utils" "~6.0.0-rc.3" -"@abp/datatables.net-bs5@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.2.tgz#76ab55e97bc4d25f8bbfc6564f5e61f8404ab52c" - integrity sha512-Wdt22BSDqFvrZb5x2gcH8JG4jJ0++pN7M+t3jqSM3f9IZMOWHZ5GsUegUt+j60Cvqw7ItjP/BmBySQtmh3WbOg== +"@abp/datatables.net-bs5@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd" + integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg== dependencies: - "@abp/datatables.net" "~6.0.0-rc.2" + "@abp/datatables.net" "~6.0.0-rc.3" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.2.tgz#4364d099f2fc1f647fe40eb5cace2fe8c13281dd" - integrity sha512-exHwF0pmJnT83d2X3NcHFewT8ZyK1TWfwNNBVn+j3jwcm4/5KT9a308CAahV9hTz/Z6ZsjRdCRwdv0eU5VHPkQ== +"@abp/datatables.net@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1" + integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" datatables.net "^1.11.4" -"@abp/font-awesome@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.2.tgz#bc522149abafb82935094c8fcd72a8201f98a315" - integrity sha512-sPA9urlcUl2868zmABa7X1rA6aPYkihVEt1h/XSSYpjL/hu7I1RtDDEJ2k6GFjgd2AZ+8xKRkI4bpOE5HKtbsg== +"@abp/font-awesome@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217" + integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.2.tgz#cfeb8a300d2c350854689481c15404c37dfcb428" - integrity sha512-Okl0z6MibakfSH4Mzq2fDA0kj97tWSDpVcJLN+K5CkROhob2ZpkBiAysY7hqEMItAMruDa2SsrANxW65r4mi4Q== +"@abp/jquery-form@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a" + integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.2.tgz#a66677d87e3214086483853845c1bb609bbb4f3b" - integrity sha512-ymGMzH/kwfcvw749znmiE4I4jesJScEZu2LR1IrFcJUV9s4ThJEgSGnyjUAXZrt2jNSuWTUCXp4dI0PSm5iU3Q== +"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403" + integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg== dependencies: - "@abp/jquery-validation" "~6.0.0-rc.2" + "@abp/jquery-validation" "~6.0.0-rc.3" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.2.tgz#bcc7fbfbac2bc8e7efc94177e1a1a405d18ac387" - integrity sha512-RIeNdhDDa7fQunE9BnBxcdicQpcpcn/l7Rl6q8IuA18PN4z4DueXt3A6Qzl9zPl931yXzs7v28iW7j81/4Xpyw== +"@abp/jquery-validation@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260" + integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-validation "^1.19.3" -"@abp/jquery@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.2.tgz#6d641604a1687d2e8e3220171329960b7e40a315" - integrity sha512-FMCdtl3nPZDaTGZ7aKHzOYIzzYQvhDrdTm0bKD+5nKv70sL8TRQV16hzcARGFoA/9PoBLBfnVPcSYSEN/nL5Dw== +"@abp/jquery@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016" + integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" jquery "~3.6.0" -"@abp/lodash@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.2.tgz#939d667bc96a268344df16e12e458ae376ae0154" - integrity sha512-Q2+rVGolS+00Zsww/qTo+k2oqAIDzAVZCAaamgTCJ8mliho7wFvW8LWFwII3so/nKWiTb8Gwf7bW0nMKeCnvuw== +"@abp/lodash@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a" + integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" lodash "^4.17.21" -"@abp/luxon@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.2.tgz#7703887dcdee26cb1e972386ea295b879e3c51f6" - integrity sha512-ckGfUo7ZD19LjKmrKneYQSO8Mjp5rh4sM/587MdTtc0ZA3nyqX98DtE0nkm8MegTvoVUGYBKWhhIlqTb6VpI4w== +"@abp/luxon@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6" + integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.2.tgz#22af6c68067671714abdb52537487cd5cc73af43" - integrity sha512-rz3herKYP2KccHSUHpbkF1adfaECSR7TDOkOeFghpM/t5TCv/fs9uSroeteKyCMufWmYswY/1Yi4doYEQWcdfA== +"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db" + integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/owl.carousel@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-6.0.0-rc.2.tgz#9f1ee82fa94d71041c0d2d2c382df76e93eb7ea1" - integrity sha512-MdY2Ibeqnr47evTGY2CBV7fGEXC2/U73paKGX3/1ks3jbxWkmj9a9cteDQ2wZkurdMN3kprSQoYbvRcGZ7srVQ== +"@abp/owl.carousel@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-6.0.0-rc.3.tgz#5d5884a622e6423cc73175a2cd376c892325be20" + integrity sha512-4KGPzfGUEeN2CN+EtYYKuhJU1nb1OIQd1Fxi6DmkFYeN/9KdgS8dwGZjMvFxYde+BfhDZP1zrfS6ZbpJKkzsPQ== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" owl.carousel "^2.3.4" -"@abp/prismjs@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.2.tgz#5c200260038e1e7e7bcf627df840ec8d31efd255" - integrity sha512-zESjrel58EWNoreOvdYmpPLR3TpdPQEw7R8aGPgieTZSKxcM7aHYBa1vbN6czaIeD3RjwIBtaMVCOGhiPYSKug== +"@abp/prismjs@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.3.tgz#e4faf595e29db81c5a66030e59b0e09f09759bfd" + integrity sha512-zzd3iw/Im0M9FUmTviwkTCr4slkoZJExtK+qB1FmLxRY59+hyU9wxd6hwzic/QwhXxFQoYILJ3S3FNxsPIm76A== dependencies: - "@abp/clipboard" "~6.0.0-rc.2" - "@abp/core" "~6.0.0-rc.2" + "@abp/clipboard" "~6.0.0-rc.3" + "@abp/core" "~6.0.0-rc.3" prismjs "^1.26.0" -"@abp/select2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.2.tgz#8553c085f087c83cadf0f25a80660db2236387f5" - integrity sha512-im0T2Uah4QkqWOBqiu1fpm6SvV9Id5pV3qup3AFFKRcwhH9rvGGPjpSqq+Fh0sG23P1BSHw/lEedYwAPfxcR0w== +"@abp/select2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53" + integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.2.tgz#1e0603c7edefe72e32a11b96fc0f5095e9273f12" - integrity sha512-BsiCrj32DQjMBgx9L5FOBDK2xx4x97oEqx5qUAt5lYPtxzIpFUAdn2U3h8WUQfDKRFquQLJxJ993dZai4GfYQg== +"@abp/sweetalert2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4" + integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" sweetalert2 "^11.3.6" -"@abp/timeago@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.2.tgz#21d67d3fa54b930fdf2c6ae7ed1c182ce16f0c0a" - integrity sha512-oOcW0m2xlsDTw6MjJ+4WbN7y4Le3S1H1IRvU+64i5O3fj5WNBpAKxNEO0X0HLD6JJwlr1tzvE2uWqzoRWO9JXg== +"@abp/timeago@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53" + integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.2.tgz#3523b22b6bf473025b2b731eae59491997f2fbe2" - integrity sha512-StjNgLQNttZwm4L8vOOM/pclgMrmYTs1igmXnBXbYqMcE2Q7QfhZeOYwPvWrm0WlVC4pfR9l3ejYYcZljukqEA== +"@abp/toastr@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855" + integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" toastr "^2.1.4" -"@abp/tui-editor@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-6.0.0-rc.2.tgz#019dbb34c60f61e46660c1e6eaf8065919ad86fa" - integrity sha512-C3CkyRcUa0SP4rVNtobfV4lNVFfFib+Lgz9YN+Dz1YvoIIokpfxZr1UX/MqObsNV5gWnAw49fFTowd5e7BFVBA== +"@abp/tui-editor@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-6.0.0-rc.3.tgz#7e913a80139af381d881f2b0205d4938ec6f6ca3" + integrity sha512-FC+gyHMn/FecAb8sVNFwf9FcJ035Lqm+LwiIXckS2VaSTbuKna0K/ADlOoSr1Ntwe5GWptZ93STIgSt1QJPdEw== dependencies: - "@abp/jquery" "~6.0.0-rc.2" - "@abp/prismjs" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" + "@abp/prismjs" "~6.0.0-rc.3" -"@abp/utils@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.2.tgz#f93d7bcccc35335df5c14be10dc23bd7472868c8" - integrity sha512-6YdeptFQR1vZzLVKVjHmGQ+R+pK0iBiZdL7A3GkaC+ad5b+adybf8MJPyrbob96xV77/CEuXFUG88URed1B5Fw== +"@abp/utils@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360" + integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A== dependencies: just-compare "^1.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index 84745acf30..03f627410b 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.3" } } diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index d6327c6b27..13a328d062 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.2.tgz#0a80531a46e08719ef90b4f9013b8bb5ec2fe2f0" - integrity sha512-uktT9FXlDzJ0HGleYCnvUhSMgkSHiwrjVnztbx6zRvrhNsq/UNWPhYoGti8He9tQO1dLi2cRq1aTawtMIjgVow== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.2.tgz#a7a69d3bb4aa09809b3362a045c1adba5b04d17c" - integrity sha512-sszTiRfJxy6EQ2C2xe3GwrfaVfZgSw8xOZcIFScBvW0fDMAfJCTJA+HMcaBTsng9EqHfc7622mWaPlWCD5ImEg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.2" - "@abp/bootstrap" "~6.0.0-rc.2" - "@abp/bootstrap-datepicker" "~6.0.0-rc.2" - "@abp/datatables.net-bs5" "~6.0.0-rc.2" - "@abp/font-awesome" "~6.0.0-rc.2" - "@abp/jquery-form" "~6.0.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.2" - "@abp/lodash" "~6.0.0-rc.2" - "@abp/luxon" "~6.0.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.2" - "@abp/select2" "~6.0.0-rc.2" - "@abp/sweetalert2" "~6.0.0-rc.2" - "@abp/timeago" "~6.0.0-rc.2" - "@abp/toastr" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.2.tgz#14d5da45b01af77caab45b01a43f07db6a5425f3" - integrity sha512-AIXP1FP/VvBGRzoslTRTnD4I1oei4Ufh5qVWKG+PwmrFJ6/XoarNV6FCKLePm7NETd1VSrq20uPCrfuZx2WKQg== +"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318" + integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075" + integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3" + "@abp/bootstrap" "~6.0.0-rc.3" + "@abp/bootstrap-datepicker" "~6.0.0-rc.3" + "@abp/datatables.net-bs5" "~6.0.0-rc.3" + "@abp/font-awesome" "~6.0.0-rc.3" + "@abp/jquery-form" "~6.0.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3" + "@abp/lodash" "~6.0.0-rc.3" + "@abp/luxon" "~6.0.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3" + "@abp/select2" "~6.0.0-rc.3" + "@abp/sweetalert2" "~6.0.0-rc.3" + "@abp/timeago" "~6.0.0-rc.3" + "@abp/toastr" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41" + integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.2.tgz#74785434be987d4579dcf66b52752d23d3dcc928" - integrity sha512-BvJEChBRwf7vuXap1s/hOi3PrlWkZYtpnZLKNjNpEfLLHa3LPrSLn9GAfVLS92/qxeB+S6Vk49HiwcOtuIeEOA== +"@abp/bootstrap-datepicker@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a" + integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.2.tgz#ef9e6fb40eb884dd69581bfd08a2523f274cbab8" - integrity sha512-cf1ttQV6gQX0UNoWIKxaJ7tk8dJAQ79WhklsuDWROl0KtkjQ/oCi14363YvWezMQe82xnps1m4ViX87JqNIM4w== +"@abp/bootstrap@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969" + integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" bootstrap "^5.1.3" -"@abp/core@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.2.tgz#6339637a278fc19e10d468aba118e2384a8310af" - integrity sha512-2t7rhjpRvByoAnkdSVEdN4ZVotHSRanv9fZRqK6yOQpHEZ4LDgByKi+eNdc3kiT0+VU3mHxMgq+FO+pxaBHSAA== +"@abp/core@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825" + integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ== dependencies: - "@abp/utils" "~6.0.0-rc.2" + "@abp/utils" "~6.0.0-rc.3" -"@abp/datatables.net-bs5@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.2.tgz#76ab55e97bc4d25f8bbfc6564f5e61f8404ab52c" - integrity sha512-Wdt22BSDqFvrZb5x2gcH8JG4jJ0++pN7M+t3jqSM3f9IZMOWHZ5GsUegUt+j60Cvqw7ItjP/BmBySQtmh3WbOg== +"@abp/datatables.net-bs5@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd" + integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg== dependencies: - "@abp/datatables.net" "~6.0.0-rc.2" + "@abp/datatables.net" "~6.0.0-rc.3" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.2.tgz#4364d099f2fc1f647fe40eb5cace2fe8c13281dd" - integrity sha512-exHwF0pmJnT83d2X3NcHFewT8ZyK1TWfwNNBVn+j3jwcm4/5KT9a308CAahV9hTz/Z6ZsjRdCRwdv0eU5VHPkQ== +"@abp/datatables.net@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1" + integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" datatables.net "^1.11.4" -"@abp/font-awesome@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.2.tgz#bc522149abafb82935094c8fcd72a8201f98a315" - integrity sha512-sPA9urlcUl2868zmABa7X1rA6aPYkihVEt1h/XSSYpjL/hu7I1RtDDEJ2k6GFjgd2AZ+8xKRkI4bpOE5HKtbsg== +"@abp/font-awesome@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217" + integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.2.tgz#cfeb8a300d2c350854689481c15404c37dfcb428" - integrity sha512-Okl0z6MibakfSH4Mzq2fDA0kj97tWSDpVcJLN+K5CkROhob2ZpkBiAysY7hqEMItAMruDa2SsrANxW65r4mi4Q== +"@abp/jquery-form@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a" + integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.2.tgz#a66677d87e3214086483853845c1bb609bbb4f3b" - integrity sha512-ymGMzH/kwfcvw749znmiE4I4jesJScEZu2LR1IrFcJUV9s4ThJEgSGnyjUAXZrt2jNSuWTUCXp4dI0PSm5iU3Q== +"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403" + integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg== dependencies: - "@abp/jquery-validation" "~6.0.0-rc.2" + "@abp/jquery-validation" "~6.0.0-rc.3" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.2.tgz#bcc7fbfbac2bc8e7efc94177e1a1a405d18ac387" - integrity sha512-RIeNdhDDa7fQunE9BnBxcdicQpcpcn/l7Rl6q8IuA18PN4z4DueXt3A6Qzl9zPl931yXzs7v28iW7j81/4Xpyw== +"@abp/jquery-validation@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260" + integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-validation "^1.19.3" -"@abp/jquery@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.2.tgz#6d641604a1687d2e8e3220171329960b7e40a315" - integrity sha512-FMCdtl3nPZDaTGZ7aKHzOYIzzYQvhDrdTm0bKD+5nKv70sL8TRQV16hzcARGFoA/9PoBLBfnVPcSYSEN/nL5Dw== +"@abp/jquery@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016" + integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" jquery "~3.6.0" -"@abp/lodash@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.2.tgz#939d667bc96a268344df16e12e458ae376ae0154" - integrity sha512-Q2+rVGolS+00Zsww/qTo+k2oqAIDzAVZCAaamgTCJ8mliho7wFvW8LWFwII3so/nKWiTb8Gwf7bW0nMKeCnvuw== +"@abp/lodash@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a" + integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" lodash "^4.17.21" -"@abp/luxon@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.2.tgz#7703887dcdee26cb1e972386ea295b879e3c51f6" - integrity sha512-ckGfUo7ZD19LjKmrKneYQSO8Mjp5rh4sM/587MdTtc0ZA3nyqX98DtE0nkm8MegTvoVUGYBKWhhIlqTb6VpI4w== +"@abp/luxon@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6" + integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.2.tgz#22af6c68067671714abdb52537487cd5cc73af43" - integrity sha512-rz3herKYP2KccHSUHpbkF1adfaECSR7TDOkOeFghpM/t5TCv/fs9uSroeteKyCMufWmYswY/1Yi4doYEQWcdfA== +"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db" + integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.2.tgz#8553c085f087c83cadf0f25a80660db2236387f5" - integrity sha512-im0T2Uah4QkqWOBqiu1fpm6SvV9Id5pV3qup3AFFKRcwhH9rvGGPjpSqq+Fh0sG23P1BSHw/lEedYwAPfxcR0w== +"@abp/select2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53" + integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.2.tgz#1e0603c7edefe72e32a11b96fc0f5095e9273f12" - integrity sha512-BsiCrj32DQjMBgx9L5FOBDK2xx4x97oEqx5qUAt5lYPtxzIpFUAdn2U3h8WUQfDKRFquQLJxJ993dZai4GfYQg== +"@abp/sweetalert2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4" + integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" sweetalert2 "^11.3.6" -"@abp/timeago@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.2.tgz#21d67d3fa54b930fdf2c6ae7ed1c182ce16f0c0a" - integrity sha512-oOcW0m2xlsDTw6MjJ+4WbN7y4Le3S1H1IRvU+64i5O3fj5WNBpAKxNEO0X0HLD6JJwlr1tzvE2uWqzoRWO9JXg== +"@abp/timeago@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53" + integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.2.tgz#3523b22b6bf473025b2b731eae59491997f2fbe2" - integrity sha512-StjNgLQNttZwm4L8vOOM/pclgMrmYTs1igmXnBXbYqMcE2Q7QfhZeOYwPvWrm0WlVC4pfR9l3ejYYcZljukqEA== +"@abp/toastr@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855" + integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" toastr "^2.1.4" -"@abp/utils@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.2.tgz#f93d7bcccc35335df5c14be10dc23bd7472868c8" - integrity sha512-6YdeptFQR1vZzLVKVjHmGQ+R+pK0iBiZdL7A3GkaC+ad5b+adybf8MJPyrbob96xV77/CEuXFUG88URed1B5Fw== +"@abp/utils@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360" + integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index 3d437957c6..54f5f486ed 100644 --- a/modules/cms-kit/angular/package.json +++ b/modules/cms-kit/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~6.0.0-rc.2", - "@abp/ng.identity": "~6.0.0-rc.2", - "@abp/ng.setting-management": "~6.0.0-rc.2", - "@abp/ng.tenant-management": "~6.0.0-rc.2", - "@abp/ng.theme.basic": "~6.0.0-rc.2", + "@abp/ng.account": "~6.0.0-rc.3", + "@abp/ng.identity": "~6.0.0-rc.3", + "@abp/ng.setting-management": "~6.0.0-rc.3", + "@abp/ng.tenant-management": "~6.0.0-rc.3", + "@abp/ng.theme.basic": "~6.0.0-rc.3", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index 14425dd6d5..aebab1daa7 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=6.0.0-rc.2", - "@abp/ng.theme.shared": ">=6.0.0-rc.2" + "@abp/ng.core": ">=6.0.0-rc.3", + "@abp/ng.theme.shared": ">=6.0.0-rc.3" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index c2997ba3a8..c920638942 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.3" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index 65cfa23f1f..43759f8de6 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.2.tgz#0a80531a46e08719ef90b4f9013b8bb5ec2fe2f0" - integrity sha512-uktT9FXlDzJ0HGleYCnvUhSMgkSHiwrjVnztbx6zRvrhNsq/UNWPhYoGti8He9tQO1dLi2cRq1aTawtMIjgVow== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.2.tgz#a7a69d3bb4aa09809b3362a045c1adba5b04d17c" - integrity sha512-sszTiRfJxy6EQ2C2xe3GwrfaVfZgSw8xOZcIFScBvW0fDMAfJCTJA+HMcaBTsng9EqHfc7622mWaPlWCD5ImEg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.2" - "@abp/bootstrap" "~6.0.0-rc.2" - "@abp/bootstrap-datepicker" "~6.0.0-rc.2" - "@abp/datatables.net-bs5" "~6.0.0-rc.2" - "@abp/font-awesome" "~6.0.0-rc.2" - "@abp/jquery-form" "~6.0.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.2" - "@abp/lodash" "~6.0.0-rc.2" - "@abp/luxon" "~6.0.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.2" - "@abp/select2" "~6.0.0-rc.2" - "@abp/sweetalert2" "~6.0.0-rc.2" - "@abp/timeago" "~6.0.0-rc.2" - "@abp/toastr" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.2.tgz#14d5da45b01af77caab45b01a43f07db6a5425f3" - integrity sha512-AIXP1FP/VvBGRzoslTRTnD4I1oei4Ufh5qVWKG+PwmrFJ6/XoarNV6FCKLePm7NETd1VSrq20uPCrfuZx2WKQg== +"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318" + integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075" + integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3" + "@abp/bootstrap" "~6.0.0-rc.3" + "@abp/bootstrap-datepicker" "~6.0.0-rc.3" + "@abp/datatables.net-bs5" "~6.0.0-rc.3" + "@abp/font-awesome" "~6.0.0-rc.3" + "@abp/jquery-form" "~6.0.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3" + "@abp/lodash" "~6.0.0-rc.3" + "@abp/luxon" "~6.0.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3" + "@abp/select2" "~6.0.0-rc.3" + "@abp/sweetalert2" "~6.0.0-rc.3" + "@abp/timeago" "~6.0.0-rc.3" + "@abp/toastr" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41" + integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.2.tgz#74785434be987d4579dcf66b52752d23d3dcc928" - integrity sha512-BvJEChBRwf7vuXap1s/hOi3PrlWkZYtpnZLKNjNpEfLLHa3LPrSLn9GAfVLS92/qxeB+S6Vk49HiwcOtuIeEOA== +"@abp/bootstrap-datepicker@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a" + integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.2.tgz#ef9e6fb40eb884dd69581bfd08a2523f274cbab8" - integrity sha512-cf1ttQV6gQX0UNoWIKxaJ7tk8dJAQ79WhklsuDWROl0KtkjQ/oCi14363YvWezMQe82xnps1m4ViX87JqNIM4w== +"@abp/bootstrap@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969" + integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" bootstrap "^5.1.3" -"@abp/core@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.2.tgz#6339637a278fc19e10d468aba118e2384a8310af" - integrity sha512-2t7rhjpRvByoAnkdSVEdN4ZVotHSRanv9fZRqK6yOQpHEZ4LDgByKi+eNdc3kiT0+VU3mHxMgq+FO+pxaBHSAA== +"@abp/core@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825" + integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ== dependencies: - "@abp/utils" "~6.0.0-rc.2" + "@abp/utils" "~6.0.0-rc.3" -"@abp/datatables.net-bs5@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.2.tgz#76ab55e97bc4d25f8bbfc6564f5e61f8404ab52c" - integrity sha512-Wdt22BSDqFvrZb5x2gcH8JG4jJ0++pN7M+t3jqSM3f9IZMOWHZ5GsUegUt+j60Cvqw7ItjP/BmBySQtmh3WbOg== +"@abp/datatables.net-bs5@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd" + integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg== dependencies: - "@abp/datatables.net" "~6.0.0-rc.2" + "@abp/datatables.net" "~6.0.0-rc.3" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.2.tgz#4364d099f2fc1f647fe40eb5cace2fe8c13281dd" - integrity sha512-exHwF0pmJnT83d2X3NcHFewT8ZyK1TWfwNNBVn+j3jwcm4/5KT9a308CAahV9hTz/Z6ZsjRdCRwdv0eU5VHPkQ== +"@abp/datatables.net@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1" + integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" datatables.net "^1.11.4" -"@abp/font-awesome@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.2.tgz#bc522149abafb82935094c8fcd72a8201f98a315" - integrity sha512-sPA9urlcUl2868zmABa7X1rA6aPYkihVEt1h/XSSYpjL/hu7I1RtDDEJ2k6GFjgd2AZ+8xKRkI4bpOE5HKtbsg== +"@abp/font-awesome@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217" + integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.2.tgz#cfeb8a300d2c350854689481c15404c37dfcb428" - integrity sha512-Okl0z6MibakfSH4Mzq2fDA0kj97tWSDpVcJLN+K5CkROhob2ZpkBiAysY7hqEMItAMruDa2SsrANxW65r4mi4Q== +"@abp/jquery-form@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a" + integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.2.tgz#a66677d87e3214086483853845c1bb609bbb4f3b" - integrity sha512-ymGMzH/kwfcvw749znmiE4I4jesJScEZu2LR1IrFcJUV9s4ThJEgSGnyjUAXZrt2jNSuWTUCXp4dI0PSm5iU3Q== +"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403" + integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg== dependencies: - "@abp/jquery-validation" "~6.0.0-rc.2" + "@abp/jquery-validation" "~6.0.0-rc.3" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.2.tgz#bcc7fbfbac2bc8e7efc94177e1a1a405d18ac387" - integrity sha512-RIeNdhDDa7fQunE9BnBxcdicQpcpcn/l7Rl6q8IuA18PN4z4DueXt3A6Qzl9zPl931yXzs7v28iW7j81/4Xpyw== +"@abp/jquery-validation@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260" + integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-validation "^1.19.3" -"@abp/jquery@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.2.tgz#6d641604a1687d2e8e3220171329960b7e40a315" - integrity sha512-FMCdtl3nPZDaTGZ7aKHzOYIzzYQvhDrdTm0bKD+5nKv70sL8TRQV16hzcARGFoA/9PoBLBfnVPcSYSEN/nL5Dw== +"@abp/jquery@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016" + integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" jquery "~3.6.0" -"@abp/lodash@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.2.tgz#939d667bc96a268344df16e12e458ae376ae0154" - integrity sha512-Q2+rVGolS+00Zsww/qTo+k2oqAIDzAVZCAaamgTCJ8mliho7wFvW8LWFwII3so/nKWiTb8Gwf7bW0nMKeCnvuw== +"@abp/lodash@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a" + integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" lodash "^4.17.21" -"@abp/luxon@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.2.tgz#7703887dcdee26cb1e972386ea295b879e3c51f6" - integrity sha512-ckGfUo7ZD19LjKmrKneYQSO8Mjp5rh4sM/587MdTtc0ZA3nyqX98DtE0nkm8MegTvoVUGYBKWhhIlqTb6VpI4w== +"@abp/luxon@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6" + integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.2.tgz#22af6c68067671714abdb52537487cd5cc73af43" - integrity sha512-rz3herKYP2KccHSUHpbkF1adfaECSR7TDOkOeFghpM/t5TCv/fs9uSroeteKyCMufWmYswY/1Yi4doYEQWcdfA== +"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db" + integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.2.tgz#8553c085f087c83cadf0f25a80660db2236387f5" - integrity sha512-im0T2Uah4QkqWOBqiu1fpm6SvV9Id5pV3qup3AFFKRcwhH9rvGGPjpSqq+Fh0sG23P1BSHw/lEedYwAPfxcR0w== +"@abp/select2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53" + integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.2.tgz#1e0603c7edefe72e32a11b96fc0f5095e9273f12" - integrity sha512-BsiCrj32DQjMBgx9L5FOBDK2xx4x97oEqx5qUAt5lYPtxzIpFUAdn2U3h8WUQfDKRFquQLJxJ993dZai4GfYQg== +"@abp/sweetalert2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4" + integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" sweetalert2 "^11.3.6" -"@abp/timeago@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.2.tgz#21d67d3fa54b930fdf2c6ae7ed1c182ce16f0c0a" - integrity sha512-oOcW0m2xlsDTw6MjJ+4WbN7y4Le3S1H1IRvU+64i5O3fj5WNBpAKxNEO0X0HLD6JJwlr1tzvE2uWqzoRWO9JXg== +"@abp/timeago@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53" + integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.2.tgz#3523b22b6bf473025b2b731eae59491997f2fbe2" - integrity sha512-StjNgLQNttZwm4L8vOOM/pclgMrmYTs1igmXnBXbYqMcE2Q7QfhZeOYwPvWrm0WlVC4pfR9l3ejYYcZljukqEA== +"@abp/toastr@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855" + integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" toastr "^2.1.4" -"@abp/utils@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.2.tgz#f93d7bcccc35335df5c14be10dc23bd7472868c8" - integrity sha512-6YdeptFQR1vZzLVKVjHmGQ+R+pK0iBiZdL7A3GkaC+ad5b+adybf8MJPyrbob96xV77/CEuXFUG88URed1B5Fw== +"@abp/utils@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360" + integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json index 502ba2b69f..34dba93009 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.3" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index 76476d0b6a..d501d9343d 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.2.tgz#0a80531a46e08719ef90b4f9013b8bb5ec2fe2f0" - integrity sha512-uktT9FXlDzJ0HGleYCnvUhSMgkSHiwrjVnztbx6zRvrhNsq/UNWPhYoGti8He9tQO1dLi2cRq1aTawtMIjgVow== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.2.tgz#a7a69d3bb4aa09809b3362a045c1adba5b04d17c" - integrity sha512-sszTiRfJxy6EQ2C2xe3GwrfaVfZgSw8xOZcIFScBvW0fDMAfJCTJA+HMcaBTsng9EqHfc7622mWaPlWCD5ImEg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.2" - "@abp/bootstrap" "~6.0.0-rc.2" - "@abp/bootstrap-datepicker" "~6.0.0-rc.2" - "@abp/datatables.net-bs5" "~6.0.0-rc.2" - "@abp/font-awesome" "~6.0.0-rc.2" - "@abp/jquery-form" "~6.0.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.2" - "@abp/lodash" "~6.0.0-rc.2" - "@abp/luxon" "~6.0.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.2" - "@abp/select2" "~6.0.0-rc.2" - "@abp/sweetalert2" "~6.0.0-rc.2" - "@abp/timeago" "~6.0.0-rc.2" - "@abp/toastr" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.2.tgz#14d5da45b01af77caab45b01a43f07db6a5425f3" - integrity sha512-AIXP1FP/VvBGRzoslTRTnD4I1oei4Ufh5qVWKG+PwmrFJ6/XoarNV6FCKLePm7NETd1VSrq20uPCrfuZx2WKQg== +"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318" + integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075" + integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3" + "@abp/bootstrap" "~6.0.0-rc.3" + "@abp/bootstrap-datepicker" "~6.0.0-rc.3" + "@abp/datatables.net-bs5" "~6.0.0-rc.3" + "@abp/font-awesome" "~6.0.0-rc.3" + "@abp/jquery-form" "~6.0.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3" + "@abp/lodash" "~6.0.0-rc.3" + "@abp/luxon" "~6.0.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3" + "@abp/select2" "~6.0.0-rc.3" + "@abp/sweetalert2" "~6.0.0-rc.3" + "@abp/timeago" "~6.0.0-rc.3" + "@abp/toastr" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41" + integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.2.tgz#74785434be987d4579dcf66b52752d23d3dcc928" - integrity sha512-BvJEChBRwf7vuXap1s/hOi3PrlWkZYtpnZLKNjNpEfLLHa3LPrSLn9GAfVLS92/qxeB+S6Vk49HiwcOtuIeEOA== +"@abp/bootstrap-datepicker@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a" + integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.2.tgz#ef9e6fb40eb884dd69581bfd08a2523f274cbab8" - integrity sha512-cf1ttQV6gQX0UNoWIKxaJ7tk8dJAQ79WhklsuDWROl0KtkjQ/oCi14363YvWezMQe82xnps1m4ViX87JqNIM4w== +"@abp/bootstrap@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969" + integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" bootstrap "^5.1.3" -"@abp/core@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.2.tgz#6339637a278fc19e10d468aba118e2384a8310af" - integrity sha512-2t7rhjpRvByoAnkdSVEdN4ZVotHSRanv9fZRqK6yOQpHEZ4LDgByKi+eNdc3kiT0+VU3mHxMgq+FO+pxaBHSAA== +"@abp/core@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825" + integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ== dependencies: - "@abp/utils" "~6.0.0-rc.2" + "@abp/utils" "~6.0.0-rc.3" -"@abp/datatables.net-bs5@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.2.tgz#76ab55e97bc4d25f8bbfc6564f5e61f8404ab52c" - integrity sha512-Wdt22BSDqFvrZb5x2gcH8JG4jJ0++pN7M+t3jqSM3f9IZMOWHZ5GsUegUt+j60Cvqw7ItjP/BmBySQtmh3WbOg== +"@abp/datatables.net-bs5@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd" + integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg== dependencies: - "@abp/datatables.net" "~6.0.0-rc.2" + "@abp/datatables.net" "~6.0.0-rc.3" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.2.tgz#4364d099f2fc1f647fe40eb5cace2fe8c13281dd" - integrity sha512-exHwF0pmJnT83d2X3NcHFewT8ZyK1TWfwNNBVn+j3jwcm4/5KT9a308CAahV9hTz/Z6ZsjRdCRwdv0eU5VHPkQ== +"@abp/datatables.net@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1" + integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" datatables.net "^1.11.4" -"@abp/font-awesome@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.2.tgz#bc522149abafb82935094c8fcd72a8201f98a315" - integrity sha512-sPA9urlcUl2868zmABa7X1rA6aPYkihVEt1h/XSSYpjL/hu7I1RtDDEJ2k6GFjgd2AZ+8xKRkI4bpOE5HKtbsg== +"@abp/font-awesome@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217" + integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.2.tgz#cfeb8a300d2c350854689481c15404c37dfcb428" - integrity sha512-Okl0z6MibakfSH4Mzq2fDA0kj97tWSDpVcJLN+K5CkROhob2ZpkBiAysY7hqEMItAMruDa2SsrANxW65r4mi4Q== +"@abp/jquery-form@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a" + integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.2.tgz#a66677d87e3214086483853845c1bb609bbb4f3b" - integrity sha512-ymGMzH/kwfcvw749znmiE4I4jesJScEZu2LR1IrFcJUV9s4ThJEgSGnyjUAXZrt2jNSuWTUCXp4dI0PSm5iU3Q== +"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403" + integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg== dependencies: - "@abp/jquery-validation" "~6.0.0-rc.2" + "@abp/jquery-validation" "~6.0.0-rc.3" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.2.tgz#bcc7fbfbac2bc8e7efc94177e1a1a405d18ac387" - integrity sha512-RIeNdhDDa7fQunE9BnBxcdicQpcpcn/l7Rl6q8IuA18PN4z4DueXt3A6Qzl9zPl931yXzs7v28iW7j81/4Xpyw== +"@abp/jquery-validation@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260" + integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-validation "^1.19.3" -"@abp/jquery@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.2.tgz#6d641604a1687d2e8e3220171329960b7e40a315" - integrity sha512-FMCdtl3nPZDaTGZ7aKHzOYIzzYQvhDrdTm0bKD+5nKv70sL8TRQV16hzcARGFoA/9PoBLBfnVPcSYSEN/nL5Dw== +"@abp/jquery@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016" + integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" jquery "~3.6.0" -"@abp/lodash@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.2.tgz#939d667bc96a268344df16e12e458ae376ae0154" - integrity sha512-Q2+rVGolS+00Zsww/qTo+k2oqAIDzAVZCAaamgTCJ8mliho7wFvW8LWFwII3so/nKWiTb8Gwf7bW0nMKeCnvuw== +"@abp/lodash@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a" + integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" lodash "^4.17.21" -"@abp/luxon@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.2.tgz#7703887dcdee26cb1e972386ea295b879e3c51f6" - integrity sha512-ckGfUo7ZD19LjKmrKneYQSO8Mjp5rh4sM/587MdTtc0ZA3nyqX98DtE0nkm8MegTvoVUGYBKWhhIlqTb6VpI4w== +"@abp/luxon@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6" + integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.2.tgz#22af6c68067671714abdb52537487cd5cc73af43" - integrity sha512-rz3herKYP2KccHSUHpbkF1adfaECSR7TDOkOeFghpM/t5TCv/fs9uSroeteKyCMufWmYswY/1Yi4doYEQWcdfA== +"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db" + integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.2.tgz#8553c085f087c83cadf0f25a80660db2236387f5" - integrity sha512-im0T2Uah4QkqWOBqiu1fpm6SvV9Id5pV3qup3AFFKRcwhH9rvGGPjpSqq+Fh0sG23P1BSHw/lEedYwAPfxcR0w== +"@abp/select2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53" + integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.2.tgz#1e0603c7edefe72e32a11b96fc0f5095e9273f12" - integrity sha512-BsiCrj32DQjMBgx9L5FOBDK2xx4x97oEqx5qUAt5lYPtxzIpFUAdn2U3h8WUQfDKRFquQLJxJ993dZai4GfYQg== +"@abp/sweetalert2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4" + integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" sweetalert2 "^11.3.6" -"@abp/timeago@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.2.tgz#21d67d3fa54b930fdf2c6ae7ed1c182ce16f0c0a" - integrity sha512-oOcW0m2xlsDTw6MjJ+4WbN7y4Le3S1H1IRvU+64i5O3fj5WNBpAKxNEO0X0HLD6JJwlr1tzvE2uWqzoRWO9JXg== +"@abp/timeago@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53" + integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.2.tgz#3523b22b6bf473025b2b731eae59491997f2fbe2" - integrity sha512-StjNgLQNttZwm4L8vOOM/pclgMrmYTs1igmXnBXbYqMcE2Q7QfhZeOYwPvWrm0WlVC4pfR9l3ejYYcZljukqEA== +"@abp/toastr@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855" + integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" toastr "^2.1.4" -"@abp/utils@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.2.tgz#f93d7bcccc35335df5c14be10dc23bd7472868c8" - integrity sha512-6YdeptFQR1vZzLVKVjHmGQ+R+pK0iBiZdL7A3GkaC+ad5b+adybf8MJPyrbob96xV77/CEuXFUG88URed1B5Fw== +"@abp/utils@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360" + integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs index 801cc2dd41..0343a3bc58 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs @@ -36,7 +36,6 @@ using Volo.Abp.Threading; using Volo.Abp.VirtualFileSystem; using Volo.CmsKit.Admin.Web; using Volo.CmsKit.Comments; -using Volo.CmsKit.Contents; using Volo.CmsKit.EntityFrameworkCore; using Volo.CmsKit.MediaDescriptors; using Volo.CmsKit.MultiTenancy; @@ -45,6 +44,7 @@ using Volo.CmsKit.Ratings; using Volo.CmsKit.Reactions; using Volo.CmsKit.Tags; using Volo.CmsKit.Web; +using Volo.CmsKit.Web.Contents; namespace Volo.CmsKit; diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index fb34545085..38f9f7fac3 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.2", - "@abp/cms-kit": "6.0.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.3", + "@abp/cms-kit": "6.0.0-rc.3" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index bdbd91dd7b..16b4938438 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.2.tgz#0a80531a46e08719ef90b4f9013b8bb5ec2fe2f0" - integrity sha512-uktT9FXlDzJ0HGleYCnvUhSMgkSHiwrjVnztbx6zRvrhNsq/UNWPhYoGti8He9tQO1dLi2cRq1aTawtMIjgVow== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.2.tgz#a7a69d3bb4aa09809b3362a045c1adba5b04d17c" - integrity sha512-sszTiRfJxy6EQ2C2xe3GwrfaVfZgSw8xOZcIFScBvW0fDMAfJCTJA+HMcaBTsng9EqHfc7622mWaPlWCD5ImEg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.2" - "@abp/bootstrap" "~6.0.0-rc.2" - "@abp/bootstrap-datepicker" "~6.0.0-rc.2" - "@abp/datatables.net-bs5" "~6.0.0-rc.2" - "@abp/font-awesome" "~6.0.0-rc.2" - "@abp/jquery-form" "~6.0.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.2" - "@abp/lodash" "~6.0.0-rc.2" - "@abp/luxon" "~6.0.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.2" - "@abp/select2" "~6.0.0-rc.2" - "@abp/sweetalert2" "~6.0.0-rc.2" - "@abp/timeago" "~6.0.0-rc.2" - "@abp/toastr" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.2.tgz#14d5da45b01af77caab45b01a43f07db6a5425f3" - integrity sha512-AIXP1FP/VvBGRzoslTRTnD4I1oei4Ufh5qVWKG+PwmrFJ6/XoarNV6FCKLePm7NETd1VSrq20uPCrfuZx2WKQg== +"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318" + integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075" + integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3" + "@abp/bootstrap" "~6.0.0-rc.3" + "@abp/bootstrap-datepicker" "~6.0.0-rc.3" + "@abp/datatables.net-bs5" "~6.0.0-rc.3" + "@abp/font-awesome" "~6.0.0-rc.3" + "@abp/jquery-form" "~6.0.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3" + "@abp/lodash" "~6.0.0-rc.3" + "@abp/luxon" "~6.0.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3" + "@abp/select2" "~6.0.0-rc.3" + "@abp/sweetalert2" "~6.0.0-rc.3" + "@abp/timeago" "~6.0.0-rc.3" + "@abp/toastr" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41" + integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,243 +41,243 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.2.tgz#74785434be987d4579dcf66b52752d23d3dcc928" - integrity sha512-BvJEChBRwf7vuXap1s/hOi3PrlWkZYtpnZLKNjNpEfLLHa3LPrSLn9GAfVLS92/qxeB+S6Vk49HiwcOtuIeEOA== +"@abp/bootstrap-datepicker@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a" + integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.2.tgz#ef9e6fb40eb884dd69581bfd08a2523f274cbab8" - integrity sha512-cf1ttQV6gQX0UNoWIKxaJ7tk8dJAQ79WhklsuDWROl0KtkjQ/oCi14363YvWezMQe82xnps1m4ViX87JqNIM4w== +"@abp/bootstrap@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969" + integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" bootstrap "^5.1.3" -"@abp/clipboard@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.2.tgz#99f54676d61fb8b83447b453f69f2c8fedfc07ad" - integrity sha512-oNQ7i8lR0d74t/Hoqt6EgK1dgXfH44TmOuovqyegpqeOXlMPZJVeZ0Kkp2DTV6WgGQeR8rTMFWJyBvGfVFMQdA== +"@abp/clipboard@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.3.tgz#ee3a586b491d89442eefff08aaebbf9d38cb46d4" + integrity sha512-01svpp3mR29z1FTM+2Qe+MUNLPbl95bWlOXY5zz2hvNSbdD45lGud+BiOHfeZwlDk5jjr3FqLel+hxx2ByBvOA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" clipboard "^2.0.8" -"@abp/cms-kit.admin@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-6.0.0-rc.2.tgz#a86da327b1e93068a19976446cd04620a4d7d595" - integrity sha512-/nefUgMno7pndjm3BHy0gMpe8172OobPdz1V1FKnjE5ZX+0aLI4KK1acrIAg9rxbJE19i92GpU+gQjr05CtyfA== +"@abp/cms-kit.admin@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-6.0.0-rc.3.tgz#2e1b05e88846971e73977736635b4fd1c235a092" + integrity sha512-ClVNcpKpOrZSUf0TuEx175ucK3IIxgH7GdqJpGkirqjCxVKyeGWhwyWB1JRCkXfHdE5XUxNJaYitrhQoNuZklw== dependencies: - "@abp/codemirror" "~6.0.0-rc.2" - "@abp/jstree" "~6.0.0-rc.2" - "@abp/slugify" "~6.0.0-rc.2" - "@abp/tui-editor" "~6.0.0-rc.2" - "@abp/uppy" "~6.0.0-rc.2" + "@abp/codemirror" "~6.0.0-rc.3" + "@abp/jstree" "~6.0.0-rc.3" + "@abp/slugify" "~6.0.0-rc.3" + "@abp/tui-editor" "~6.0.0-rc.3" + "@abp/uppy" "~6.0.0-rc.3" -"@abp/cms-kit.public@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-6.0.0-rc.2.tgz#df28c125658dbfcb9ac21ec4064a32de9c128cfd" - integrity sha512-ata7z2O1VXI8vmxMgS1Px3i/gxfOgAX407u9bbTpwvfy9koJIzVWcz0PsGHCxUJfxc/12TKqojUpiibk/ngjug== +"@abp/cms-kit.public@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-6.0.0-rc.3.tgz#18c3e18d094a0c5d6fafb7865f27bfba49bdc420" + integrity sha512-6Pg1Y2UGwsBLLHe37MMerxSg0n8Qa3CLJoyGJndPmRpxfX14Vu465efSPjxENJrhnoU1FEe9xaNssJ9Lb+JdjA== dependencies: - "@abp/highlight.js" "~6.0.0-rc.2" - "@abp/star-rating-svg" "~6.0.0-rc.2" + "@abp/highlight.js" "~6.0.0-rc.3" + "@abp/star-rating-svg" "~6.0.0-rc.3" -"@abp/cms-kit@6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-6.0.0-rc.2.tgz#3d5c0fd0ccb51e56afb0313c007f1eb1ce6e3694" - integrity sha512-s61/GbbTMWzJ8HTzxmZaI6zWogw6h7eMcqb3Y44vaul0B8bn0YBXcAmdLZExch4vBCAlTRLQlWYgRlO9sLQiKQ== +"@abp/cms-kit@6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-6.0.0-rc.3.tgz#3e8883553b57f6daf025cb6fa595984a2f6d0be0" + integrity sha512-WiZrpuNhmh/ei8e6HFneBIH99rFdIE2cCGhFBY9WY+Ne3SzcUGYUjJ8DN4x63OS5P2AtxVDhckIznYZWpAw+kQ== dependencies: - "@abp/cms-kit.admin" "~6.0.0-rc.2" - "@abp/cms-kit.public" "~6.0.0-rc.2" + "@abp/cms-kit.admin" "~6.0.0-rc.3" + "@abp/cms-kit.public" "~6.0.0-rc.3" -"@abp/codemirror@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-6.0.0-rc.2.tgz#5421ff718e85c434b739bf13d40c19c1f94c4f41" - integrity sha512-/yX2qmI2CFvgODIkfbNDi7fv/Fte98WXZLrjiu3HVPTTlSls3kE9Z0ZcOJ8o52oWe66nXRsrLifZNimRpoCo7w== +"@abp/codemirror@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-6.0.0-rc.3.tgz#3624229745308b14fc95b19cf99a7771945d458e" + integrity sha512-FqqYAKFzLCtcRri33YhMcVNuM2zHpV2Qvcu1DTWPL+kdeiw5tPi/Nm9qB0D0aRfefJNkcVLDvP64pnLnVLLWMA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" codemirror "^5.65.1" -"@abp/core@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.2.tgz#6339637a278fc19e10d468aba118e2384a8310af" - integrity sha512-2t7rhjpRvByoAnkdSVEdN4ZVotHSRanv9fZRqK6yOQpHEZ4LDgByKi+eNdc3kiT0+VU3mHxMgq+FO+pxaBHSAA== +"@abp/core@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825" + integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ== dependencies: - "@abp/utils" "~6.0.0-rc.2" + "@abp/utils" "~6.0.0-rc.3" -"@abp/datatables.net-bs5@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.2.tgz#76ab55e97bc4d25f8bbfc6564f5e61f8404ab52c" - integrity sha512-Wdt22BSDqFvrZb5x2gcH8JG4jJ0++pN7M+t3jqSM3f9IZMOWHZ5GsUegUt+j60Cvqw7ItjP/BmBySQtmh3WbOg== +"@abp/datatables.net-bs5@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd" + integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg== dependencies: - "@abp/datatables.net" "~6.0.0-rc.2" + "@abp/datatables.net" "~6.0.0-rc.3" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.2.tgz#4364d099f2fc1f647fe40eb5cace2fe8c13281dd" - integrity sha512-exHwF0pmJnT83d2X3NcHFewT8ZyK1TWfwNNBVn+j3jwcm4/5KT9a308CAahV9hTz/Z6ZsjRdCRwdv0eU5VHPkQ== +"@abp/datatables.net@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1" + integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" datatables.net "^1.11.4" -"@abp/font-awesome@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.2.tgz#bc522149abafb82935094c8fcd72a8201f98a315" - integrity sha512-sPA9urlcUl2868zmABa7X1rA6aPYkihVEt1h/XSSYpjL/hu7I1RtDDEJ2k6GFjgd2AZ+8xKRkI4bpOE5HKtbsg== +"@abp/font-awesome@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217" + integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/highlight.js@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-6.0.0-rc.2.tgz#89bafe48e1cfdb3dd7369fbd02068ec8c8329950" - integrity sha512-ORBYfLWmV+L/Yegh8Q6WNIWUPuU+7SXUgCUh3uaUXp4eZ1lrsZpzq2J2bA3nyyk+CpjfYxpiOW5wxE/6dAe/Zg== +"@abp/highlight.js@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-6.0.0-rc.3.tgz#e7aa8388afb57a1574f2645a7f786000b553562d" + integrity sha512-q0WhsovYfYrlNvIJyyXShXSTaY9cXNMEJbwJmmlQMVSyHUUPMfOf3w4ofBEC92U0mgzeIi7TMx9vJlm9qjSVJA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" "@highlightjs/cdn-assets" "~11.4.0" -"@abp/jquery-form@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.2.tgz#cfeb8a300d2c350854689481c15404c37dfcb428" - integrity sha512-Okl0z6MibakfSH4Mzq2fDA0kj97tWSDpVcJLN+K5CkROhob2ZpkBiAysY7hqEMItAMruDa2SsrANxW65r4mi4Q== +"@abp/jquery-form@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a" + integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.2.tgz#a66677d87e3214086483853845c1bb609bbb4f3b" - integrity sha512-ymGMzH/kwfcvw749znmiE4I4jesJScEZu2LR1IrFcJUV9s4ThJEgSGnyjUAXZrt2jNSuWTUCXp4dI0PSm5iU3Q== +"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403" + integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg== dependencies: - "@abp/jquery-validation" "~6.0.0-rc.2" + "@abp/jquery-validation" "~6.0.0-rc.3" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.2.tgz#bcc7fbfbac2bc8e7efc94177e1a1a405d18ac387" - integrity sha512-RIeNdhDDa7fQunE9BnBxcdicQpcpcn/l7Rl6q8IuA18PN4z4DueXt3A6Qzl9zPl931yXzs7v28iW7j81/4Xpyw== +"@abp/jquery-validation@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260" + integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-validation "^1.19.3" -"@abp/jquery@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.2.tgz#6d641604a1687d2e8e3220171329960b7e40a315" - integrity sha512-FMCdtl3nPZDaTGZ7aKHzOYIzzYQvhDrdTm0bKD+5nKv70sL8TRQV16hzcARGFoA/9PoBLBfnVPcSYSEN/nL5Dw== +"@abp/jquery@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016" + integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" jquery "~3.6.0" -"@abp/jstree@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-6.0.0-rc.2.tgz#f6bd2b79ef12f778dec501b7f5f72e5e2f680479" - integrity sha512-OfeQBg8ApJs01bredzHeVhKjuZ32gMs6f2CxiwpMo2NO3KkcobjRonpQQL8tKOz7/IzMyUCce3q9bc1AjYaghw== +"@abp/jstree@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-6.0.0-rc.3.tgz#b43b83d0b4904daf3f16df6465b26ce38348a62b" + integrity sha512-0N+U/pBWyTg634h2Hfq44ECKvGB2Sryp/JNJAbqbAsIagiaA67xcC2Gj5C/NbNKkPCTTjhC6nh4wNvZX7A+x1Q== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jstree "^3.3.12" -"@abp/lodash@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.2.tgz#939d667bc96a268344df16e12e458ae376ae0154" - integrity sha512-Q2+rVGolS+00Zsww/qTo+k2oqAIDzAVZCAaamgTCJ8mliho7wFvW8LWFwII3so/nKWiTb8Gwf7bW0nMKeCnvuw== +"@abp/lodash@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a" + integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" lodash "^4.17.21" -"@abp/luxon@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.2.tgz#7703887dcdee26cb1e972386ea295b879e3c51f6" - integrity sha512-ckGfUo7ZD19LjKmrKneYQSO8Mjp5rh4sM/587MdTtc0ZA3nyqX98DtE0nkm8MegTvoVUGYBKWhhIlqTb6VpI4w== +"@abp/luxon@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6" + integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.2.tgz#22af6c68067671714abdb52537487cd5cc73af43" - integrity sha512-rz3herKYP2KccHSUHpbkF1adfaECSR7TDOkOeFghpM/t5TCv/fs9uSroeteKyCMufWmYswY/1Yi4doYEQWcdfA== +"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db" + integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/prismjs@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.2.tgz#5c200260038e1e7e7bcf627df840ec8d31efd255" - integrity sha512-zESjrel58EWNoreOvdYmpPLR3TpdPQEw7R8aGPgieTZSKxcM7aHYBa1vbN6czaIeD3RjwIBtaMVCOGhiPYSKug== +"@abp/prismjs@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.3.tgz#e4faf595e29db81c5a66030e59b0e09f09759bfd" + integrity sha512-zzd3iw/Im0M9FUmTviwkTCr4slkoZJExtK+qB1FmLxRY59+hyU9wxd6hwzic/QwhXxFQoYILJ3S3FNxsPIm76A== dependencies: - "@abp/clipboard" "~6.0.0-rc.2" - "@abp/core" "~6.0.0-rc.2" + "@abp/clipboard" "~6.0.0-rc.3" + "@abp/core" "~6.0.0-rc.3" prismjs "^1.26.0" -"@abp/select2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.2.tgz#8553c085f087c83cadf0f25a80660db2236387f5" - integrity sha512-im0T2Uah4QkqWOBqiu1fpm6SvV9Id5pV3qup3AFFKRcwhH9rvGGPjpSqq+Fh0sG23P1BSHw/lEedYwAPfxcR0w== +"@abp/select2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53" + integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" select2 "^4.0.13" -"@abp/slugify@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-6.0.0-rc.2.tgz#3f02fca3fa7722475973c878a0baf3b419d11b55" - integrity sha512-qO2k5CEm4tYcmwGW8PiweiCzqMifVZQOqCac4re5K0pHvc3sToidOonK+GSWdeczKrVj9fa8hbUocJC/lPmnyA== +"@abp/slugify@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-6.0.0-rc.3.tgz#9ab27f563a6f89ba254240f4f0fe7c6a162bf0e8" + integrity sha512-V/lAX81CYe5DDGCv+xFiHuleOW/H/2ntXBByNDOqAFpK74vbEsxLTeCRpJ902intRDlnZFJb2G4khJNPQgb91w== dependencies: slugify "^1.6.5" -"@abp/star-rating-svg@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-6.0.0-rc.2.tgz#4ecc9fa40e82fdc176fe3962aebab6abeafce36a" - integrity sha512-Q8h54OctJLEOh/8wAU3FGLWdJ58lCoinrwfS0eW0w3PJ0D4vpJY/ul4L0YYeuSEgPlgqmmpkn+Tkvp2NNj+ZHQ== +"@abp/star-rating-svg@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-6.0.0-rc.3.tgz#81c6bdcf5161ca269de5b7162c4178d2bac2d877" + integrity sha512-o3ciRL2wID/TZflcAZybGMaXLs76Ed7a4LHmDuvPcN/VP92uUWB/baKcl2bVbYLq+xokyko+Ei2YtkqoysG7/A== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" star-rating-svg "^3.5.0" -"@abp/sweetalert2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.2.tgz#1e0603c7edefe72e32a11b96fc0f5095e9273f12" - integrity sha512-BsiCrj32DQjMBgx9L5FOBDK2xx4x97oEqx5qUAt5lYPtxzIpFUAdn2U3h8WUQfDKRFquQLJxJ993dZai4GfYQg== +"@abp/sweetalert2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4" + integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" sweetalert2 "^11.3.6" -"@abp/timeago@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.2.tgz#21d67d3fa54b930fdf2c6ae7ed1c182ce16f0c0a" - integrity sha512-oOcW0m2xlsDTw6MjJ+4WbN7y4Le3S1H1IRvU+64i5O3fj5WNBpAKxNEO0X0HLD6JJwlr1tzvE2uWqzoRWO9JXg== +"@abp/timeago@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53" + integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.2.tgz#3523b22b6bf473025b2b731eae59491997f2fbe2" - integrity sha512-StjNgLQNttZwm4L8vOOM/pclgMrmYTs1igmXnBXbYqMcE2Q7QfhZeOYwPvWrm0WlVC4pfR9l3ejYYcZljukqEA== +"@abp/toastr@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855" + integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" toastr "^2.1.4" -"@abp/tui-editor@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-6.0.0-rc.2.tgz#019dbb34c60f61e46660c1e6eaf8065919ad86fa" - integrity sha512-C3CkyRcUa0SP4rVNtobfV4lNVFfFib+Lgz9YN+Dz1YvoIIokpfxZr1UX/MqObsNV5gWnAw49fFTowd5e7BFVBA== +"@abp/tui-editor@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-6.0.0-rc.3.tgz#7e913a80139af381d881f2b0205d4938ec6f6ca3" + integrity sha512-FC+gyHMn/FecAb8sVNFwf9FcJ035Lqm+LwiIXckS2VaSTbuKna0K/ADlOoSr1Ntwe5GWptZ93STIgSt1QJPdEw== dependencies: - "@abp/jquery" "~6.0.0-rc.2" - "@abp/prismjs" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" + "@abp/prismjs" "~6.0.0-rc.3" -"@abp/uppy@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-6.0.0-rc.2.tgz#f2617885a86ae9e7b9aec181089914588092c13e" - integrity sha512-aLcl88yQ4trs0hKF7zxZ8csiT/pn6KfZ30btk5tNUvrJn1AaaD/MvqyaVuJnzkEfD+jZ37LK+my0Bbxcl0FC3g== +"@abp/uppy@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-6.0.0-rc.3.tgz#9b978aa86ef4721a4e7b534e92d717c6f594873d" + integrity sha512-RDj30BLUJIQYWUMsJOC6Px0Ez4qqMYBsodmp6SpnayI8V+PRLYBkHvRQGE4cgul9lpMMcAO87fohpL9w0oRm8w== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" uppy "^1.16.1" -"@abp/utils@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.2.tgz#f93d7bcccc35335df5c14be10dc23bd7472868c8" - integrity sha512-6YdeptFQR1vZzLVKVjHmGQ+R+pK0iBiZdL7A3GkaC+ad5b+adybf8MJPyrbob96xV77/CEuXFUG88URed1B5Fw== +"@abp/utils@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360" + integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/IContentAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/IContentAdminAppService.cs deleted file mode 100644 index 28a1e7d992..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/IContentAdminAppService.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; -using Volo.Abp.Application.Services; - -namespace Volo.CmsKit.Admin.Contents; -public interface IContentAdminAppService : IApplicationService -{ - Task> GetWidgetsAsync(); -} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj index 684446b1f0..09faad6247 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj @@ -13,4 +13,8 @@ + + + + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Contents/ContentAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Contents/ContentAdminAppService.cs deleted file mode 100644 index 8d06586e29..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Contents/ContentAdminAppService.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.Options; -using Volo.Abp.Application.Dtos; -using Volo.CmsKit.Contents; - -namespace Volo.CmsKit.Admin.Contents; - -public class ContentAdminAppService : CmsKitAdminAppServiceBase, IContentAdminAppService -{ - private readonly CmsKitContentWidgetOptions _options; - - public ContentAdminAppService(IOptions options) - { - _options = options.Value; - } - - public virtual Task> GetWidgetsAsync() - { - return Task.FromResult(new ListResultDto() - { - Items = _options.WidgetConfigs - .Select(n => - new ContentWidgetDto - { - Key = n.Key, - Details = new WidgetDetailDto() { EditorComponentName = n.Value.EditorComponentName, Name = n.Value.Name }, - - }).ToList() - }); - } -} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.Generated.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.Generated.cs deleted file mode 100644 index 30c6052af3..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.Generated.cs +++ /dev/null @@ -1,22 +0,0 @@ -// This file is automatically generated by ABP framework to use MVC Controllers from CSharp -using System; -using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; -using Volo.Abp.Http.Client; -using Volo.Abp.Http.Modeling; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Http.Client.ClientProxying; -using Volo.CmsKit.Admin.Contents; - -// ReSharper disable once CheckNamespace -namespace Volo.CmsKit.Admin.Contents.ClientProxies; - -[Dependency(ReplaceServices = true)] -[ExposeServices(typeof(IContentAdminAppService), typeof(ContentAdminClientProxy))] -public partial class ContentAdminClientProxy : ClientProxyBase, IContentAdminAppService -{ - public virtual async Task> GetWidgetsAsync() - { - return await RequestAsync>(nameof(GetWidgetsAsync)); - } -} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.cs deleted file mode 100644 index d2caea5777..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.cs +++ /dev/null @@ -1,7 +0,0 @@ -// This file is part of ContentAdminClientProxy, you can customize it here -// ReSharper disable once CheckNamespace -namespace Volo.CmsKit.Admin.Contents.ClientProxies; - -public partial class ContentAdminClientProxy -{ -} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json index 32a833e884..8a9e38e4f9 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json @@ -1191,35 +1191,6 @@ } } }, - "Volo.CmsKit.Admin.Contents.ContentAdminController": { - "controllerName": "ContentAdmin", - "controllerGroupName": "ContentAdmin", - "isRemoteService": true, - "apiVersion": null, - "type": "Volo.CmsKit.Admin.Contents.ContentAdminController", - "interfaces": [ - { - "type": "Volo.CmsKit.Admin.Contents.IContentAdminAppService" - } - ], - "actions": { - "GetWidgetsAsync": { - "uniqueName": "GetWidgetsAsync", - "name": "GetWidgetsAsync", - "httpMethod": "GET", - "url": "api/cms-kit-admin/contents", - "supportedVersions": [], - "parametersOnMethod": [], - "parameters": [], - "returnValue": { - "type": "Volo.Abp.Application.Dtos.ListResultDto", - "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" - }, - "allowAnonymous": null, - "implementFrom": "Volo.CmsKit.Admin.Contents.IContentAdminAppService" - } - } - }, "Volo.CmsKit.Admin.Comments.CommentAdminController": { "controllerName": "CommentAdmin", "controllerGroupName": "CommentAdmin", diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Contents/ContentAdminController.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Contents/ContentAdminController.cs deleted file mode 100644 index 83bfcde600..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Contents/ContentAdminController.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Volo.Abp; -using Volo.Abp.Application.Dtos; - -namespace Volo.CmsKit.Admin.Contents; - -[RemoteService(Name = CmsKitAdminRemoteServiceConsts.RemoteServiceName)] -[Area(CmsKitAdminRemoteServiceConsts.ModuleName)] -[Route("api/cms-kit-admin/contents")] -public class ContentAdminController : CmsKitAdminController, IContentAdminAppService -{ - protected IContentAdminAppService ContentAdminAppService { get; } - - public ContentAdminController(IContentAdminAppService contentAdminAppService) - { - ContentAdminAppService = contentAdminAppService; - } - - [HttpGet] - public virtual Task> GetWidgetsAsync() - { - return ContentAdminAppService.GetWidgetsAsync(); - } -} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml index be33dc698e..6af4cb0a90 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml @@ -14,34 +14,39 @@ @section scripts { } +@{ + bool isDefinedWidget = Model.Widgets.Count() > 1; +} + + + +
+ @if (isDefinedWidget) + { + - - - -
- @if (Model.Widgets.Count() > 1) + foreach (var item in Model.ViewModel.Details) { - - - foreach (var item in Model.ViewModel.Details) + if (item.EditorComponentName is not null) { - if (item.EditorComponentName is not null) - { - - } + } } - else - { -

@L["PleaseConfigureWidgets"].Value

- } + } + else + { +

@L["PleaseConfigureWidgets"].Value

+ }
- + @if (isDefinedWidget) + { + + }
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs index 5b1e8e5ea7..135e9d9257 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs @@ -3,38 +3,48 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.Extensions.Options; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; using Volo.CmsKit.Admin.Contents; using Volo.CmsKit.Contents; +using Volo.CmsKit.Web.Contents; namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Contents; public class AddWidgetModal : AbpPageModel { - protected IContentAdminAppService ContentAdminAppService { get; } [BindProperty] public ContentViewModel ViewModel { get; set; } public List Widgets { get; set; } = new(); - public AddWidgetModal(IContentAdminAppService contentAdminAppService) + private readonly CmsKitContentWidgetOptions _options; + + public AddWidgetModal(IOptions options) { - ContentAdminAppService = contentAdminAppService; + _options = options.Value; } public async Task OnGetAsync() { - var widgets = await ContentAdminAppService.GetWidgetsAsync(); + var widgets = _options.WidgetConfigs + .Select(n => + new ContentWidgetDto + { + Key = n.Key, + Details = new WidgetDetailDto() { EditorComponentName = n.Value.EditorComponentName, Name = n.Value.Name }, + + }).ToList(); + ViewModel = new ContentViewModel() { - Details = widgets.Items.Select(p => p.Details).ToList() + Details = widgets.Select(p => p.Details).ToList() }; Widgets = new List() { new(string.Empty, string.Empty) }; Widgets.AddRange(widgets - .Items .Select(w => new SelectListItem(w.Key, w.Details.Name)) .ToList()); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js index 94017ec7e2..3a61ef6a78 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js @@ -247,21 +247,6 @@ })(); - // controller volo.cmsKit.admin.contents.contentAdmin - - (function(){ - - abp.utils.createNamespace(window, 'volo.cmsKit.admin.contents.contentAdmin'); - - volo.cmsKit.admin.contents.contentAdmin.getWidgets = function(ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/cms-kit-admin/contents', - type: 'GET' - }, ajaxParams)); - }; - - })(); - // controller volo.cmsKit.admin.comments.commentAdmin (function(){ diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/BlogPostCommonDto.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/BlogPostCommonDto.cs index c2b2373d9c..a7bc27d713 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/BlogPostCommonDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/BlogPostCommonDto.cs @@ -1,12 +1,11 @@ using System; -using System.Collections.Generic; using Volo.Abp.Application.Dtos; using Volo.CmsKit.Users; namespace Volo.CmsKit.Contents; [Serializable] -public class BlogPostCommonDto : AuditedEntityDto, IContent +public class BlogPostCommonDto : AuditedEntityDto { public Guid BlogId { get; set; } @@ -16,8 +15,6 @@ public class BlogPostCommonDto : AuditedEntityDto, IContent public string ShortDescription { get; set; } - public List ContentFragments { get; set; } - public string Content { get; set; } public Guid? CoverImageMediaId { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/IContentAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/IContentAppService.cs deleted file mode 100644 index ec2b9bcf42..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/IContentAppService.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Volo.Abp.Application.Services; - -namespace Volo.CmsKit.Contents; - -public interface IContentAppService : IApplicationService -{ - Task> ParseAsync(string content); -} diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/PageDto.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/PageDto.cs index 0b573be372..d495c5de20 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/PageDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/PageDto.cs @@ -5,7 +5,7 @@ using Volo.Abp.Application.Dtos; namespace Volo.CmsKit.Contents; [Serializable] -public class PageDto : EntityDto, IContent +public class PageDto : EntityDto { public string Title { get; set; } @@ -13,8 +13,6 @@ public class PageDto : EntityDto, IContent public string Content { get; set; } - public List ContentFragments { get; set; } - public string Script { get; set; } public string Style { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentAppService.cs deleted file mode 100644 index a227f31e18..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentAppService.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Volo.Abp.GlobalFeatures; -using Volo.CmsKit.GlobalFeatures; - -namespace Volo.CmsKit.Contents; - -[RequiresGlobalFeature(typeof(PagesFeature))] -public class ContentAppService : CmsKitAppServiceBase, IContentAppService -{ - protected ContentParser ContentParser { get; } - - public ContentAppService(ContentParser contentParser) - { - ContentParser = contentParser; - } - - public async Task> ParseAsync(string content) - { - return await ContentParser.ParseAsync(content); - } -} diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/ContentPreview/ContentPreviewViewComponent.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/ContentPreview/ContentPreviewViewComponent.cs index 987c404e31..2251f6d0cd 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/ContentPreview/ContentPreviewViewComponent.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/ContentPreview/ContentPreviewViewComponent.cs @@ -6,21 +6,22 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc; using Volo.CmsKit.Contents; +using Volo.CmsKit.Web.Contents; namespace Volo.CmsKit.Web.Pages.CmsKit.Components.ContentPreview; public class ContentPreviewViewComponent : AbpViewComponent { - protected IContentAppService ContentAppService { get; } + protected ContentParser ContentParser { get; } - public ContentPreviewViewComponent(IContentAppService contentAppService) + public ContentPreviewViewComponent(ContentParser contentParser) { - ContentAppService = contentAppService; + ContentParser = contentParser; } public virtual async Task InvokeAsync(string content) { - var fragments = await ContentAppService.ParseAsync(content); + var fragments = await ContentParser.ParseAsync(content); return View("~/Pages/CmsKit/Components/ContentPreview/Default.cshtml", new DefaultContentDto { diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/CmsKitContentWidgetOptions.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/Contents/CmsKitContentWidgetOptions.cs similarity index 92% rename from modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/CmsKitContentWidgetOptions.cs rename to modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/Contents/CmsKitContentWidgetOptions.cs index 34eb41d3a0..ad643f7770 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/CmsKitContentWidgetOptions.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/Contents/CmsKitContentWidgetOptions.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Volo.CmsKit.Contents; +namespace Volo.CmsKit.Web.Contents; public class CmsKitContentWidgetOptions { diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentParser.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/Contents/ContentParser.cs similarity index 98% rename from modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentParser.cs rename to modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/Contents/ContentParser.cs index aea5cc2a82..290222a376 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentParser.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/Contents/ContentParser.cs @@ -5,9 +5,10 @@ using System.Threading.Tasks; using Microsoft.Extensions.Options; using Volo.Abp.Data; using Volo.Abp.DependencyInjection; +using Volo.CmsKit.Contents; using static Volo.CmsKit.Contents.ContentConsts; -namespace Volo.CmsKit.Contents; +namespace Volo.CmsKit.Web.Contents; public class ContentParser : ITransientDependency { diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentWidgetConfig.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/Contents/ContentWidgetConfig.cs similarity index 87% rename from modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentWidgetConfig.cs rename to modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/Contents/ContentWidgetConfig.cs index e14c1888ac..69be0703fa 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentWidgetConfig.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Components/Contents/ContentWidgetConfig.cs @@ -1,4 +1,4 @@ -namespace Volo.CmsKit.Contents; +namespace Volo.CmsKit.Web.Contents; public class ContentWidgetConfig { diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs index 87e851431d..5041406bd0 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs @@ -6,6 +6,7 @@ using Volo.Abp.Application.Dtos; using Volo.Abp.Features; using Volo.Abp.GlobalFeatures; using Volo.CmsKit.Blogs; + using Volo.CmsKit.Contents; using Volo.CmsKit.Features; using Volo.CmsKit.GlobalFeatures; @@ -20,16 +21,13 @@ public class BlogPostPublicAppService : CmsKitPublicAppServiceBase, IBlogPostPub protected IBlogRepository BlogRepository { get; } protected IBlogPostRepository BlogPostRepository { get; } - protected ContentParser ContentParser { get; } public BlogPostPublicAppService( IBlogRepository blogRepository, - IBlogPostRepository blogPostRepository, - ContentParser contentParser) + IBlogPostRepository blogPostRepository) { BlogRepository = blogRepository; BlogPostRepository = blogPostRepository; - ContentParser = contentParser; } public virtual async Task GetAsync( @@ -39,10 +37,7 @@ public class BlogPostPublicAppService : CmsKitPublicAppServiceBase, IBlogPostPub var blogPost = await BlogPostRepository.GetBySlugAsync(blog.Id, blogPostSlug); - var blogPostDto = ObjectMapper.Map(blogPost); - blogPostDto.ContentFragments = await ContentParser.ParseAsync(blogPost.Content); - - return blogPostDto; + return ObjectMapper.Map(blogPost); } public virtual async Task> GetListAsync([NotNull] string blogSlug, BlogPostGetListInput input) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Pages/PagePublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Pages/PagePublicAppService.cs index f20a181e9b..c93adcd5a7 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Pages/PagePublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Pages/PagePublicAppService.cs @@ -13,12 +13,10 @@ namespace Volo.CmsKit.Public.Pages; public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppService { protected IPageRepository PageRepository { get; } - protected ContentParser ContentParser { get; } - public PagePublicAppService(IPageRepository pageRepository, ContentParser contentParser) + public PagePublicAppService(IPageRepository pageRepository) { PageRepository = pageRepository; - ContentParser = contentParser; } public virtual async Task FindBySlugAsync(string slug) @@ -30,8 +28,6 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe return null; } - var pageDto = ObjectMapper.Map(page); - pageDto.ContentFragments = await ContentParser.ParseAsync(page.Content); - return pageDto; + return ObjectMapper.Map(page); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs index bd0c6d5e6c..92620743ff 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs @@ -30,11 +30,9 @@ public class PublicApplicationAutoMapperProfile : Profile CreateMap(); - CreateMap() - .Ignore(x => x.ContentFragments); - - CreateMap() - .Ignore(x => x.ContentFragments); + CreateMap(); + + CreateMap(); CreateMap(); diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml index fe9227f194..d5dc5a0be8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml @@ -9,9 +9,9 @@ @using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.ReactionSelection @using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating @using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Tags +@using Volo.CmsKit.Web.Renderers @using Volo.Abp.AspNetCore.Mvc.UI.Packages.HighlightJs @using Volo.CmsKit.Contents -@using Volo.CmsKit.Web.Renderers @inherits CmsKitPublicPageBase @@ -21,7 +21,7 @@ @{ - string dummyImageSource = "https://dummyimage.com/1280x720/a3a3a3/fff.png?text=" + Model.BlogPost.Title; + string dummyImageSource = "https://dummyimage.com/1280x720/a3a3a3/fff.png?text=" + Model.ViewModel.Title; var isScrollIndexEnabled = GlobalFeatureManager.Instance.IsEnabled() && Model.BlogPostScrollIndexFeature?.IsEnabled == true; } @@ -32,14 +32,13 @@ } - } -@section scripts{ + @section scripts{ @if (isScrollIndexEnabled) { @@ -55,41 +54,51 @@ } -
-
- - - - -
-

@Model.BlogPost.Title

-

- - @@@Model.BlogPost.Author?.UserName - - @Model.BlogPost.CreationTime -

- @await Component.InvokeAsync("ContentFragment", new { contentDto = Model.BlogPost }) -

- @if (Model.BlogPost.LastModificationTime != null) +

+
+ + + + +
+

@Model.ViewModel.Title

+

+ + @@@Model.ViewModel.Author?.UserName + + @Model.ViewModel.CreationTime +

+ @foreach (var contentFragment in Model.ViewModel.ContentFragments) { - @L["LastModification"].Value : @Model.BlogPost.LastModificationTime + if (contentFragment.Type == ContentConsts.Markdown) + { + @Html.Raw(await MarkdownRenderer.RenderAsync(contentFragment.GetProperty("Content"), allowHtmlTags: true, preventXSS: true)) + } + else if (contentFragment.Type == ContentConsts.Widget) + { + @await Component.InvokeAsync(contentFragment.GetProperty("Type"), contentFragment.ExtraProperties.ConvertToDynamicObject()) + } } -

-
+

+ @if (Model.ViewModel.LastModificationTime != null) + { + @L["LastModification"].Value : @Model.ViewModel.LastModificationTime + } +

+
- @if (GlobalFeatureManager.Instance.IsEnabled()) - { - if (Model.TagsFeature?.IsEnabled == true) + @if (GlobalFeatureManager.Instance.IsEnabled()) { - @await Component.InvokeAsync(typeof(TagViewComponent), new + if (Model.TagsFeature?.IsEnabled == true) { - entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, - entityId = Model.BlogPost.Id.ToString(), - urlFormat = $"/blogs/{Model.BlogSlug}?tagId={{TagId}}" - }) + @await Component.InvokeAsync(typeof(TagViewComponent), new + { + entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, + entityId = Model.ViewModel.Id.ToString(), + urlFormat = $"/blogs/{Model.BlogSlug}?tagId={{TagId}}" + }) + } } - }
@@ -100,10 +109,10 @@ if (Model.ReactionsFeature?.IsEnabled == true) { @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new - { - entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, - entityId = Model.BlogPost.Id.ToString() - }) + { + entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, + entityId = Model.ViewModel.Id.ToString() + }) } } @@ -113,10 +122,10 @@ if (Model.RatingsFeature?.IsEnabled == true) { @await Component.InvokeAsync(typeof(RatingViewComponent), new - { - entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, - entityId = Model.BlogPost.Id.ToString() - }) + { + entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, + entityId = Model.ViewModel.Id.ToString() + }) } } @@ -124,7 +133,6 @@
- @if (isScrollIndexEnabled) {
@@ -132,7 +140,7 @@
@L["InThisDocument"]
- +
@@ -153,7 +161,7 @@ @await Component.InvokeAsync(typeof(DefaultBlogPostCommentViewComponent), new { entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, - entityId = Model.BlogPost.Id.ToString() + entityId = Model.ViewModel.Id.ToString() }) } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml.cs index e1d9a3b0f7..87630f9bd0 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml.cs @@ -1,10 +1,12 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp.GlobalFeatures; +using Volo.Abp.ObjectMapping; using Volo.CmsKit.Blogs; using Volo.CmsKit.Contents; using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.Public.Blogs; +using Volo.CmsKit.Web.Contents; namespace Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Blogs; @@ -16,7 +18,7 @@ public class BlogPostModel : CmsKitPublicPageModelBase [BindProperty(SupportsGet = true)] public string BlogPostSlug { get; set; } - public BlogPostCommonDto BlogPost { get; private set; } + public BlogPostViewModel ViewModel { get; private set; } public BlogFeatureDto CommentsFeature { get; private set; } @@ -25,48 +27,61 @@ public class BlogPostModel : CmsKitPublicPageModelBase public BlogFeatureDto RatingsFeature { get; private set; } public BlogFeatureDto TagsFeature { get; private set; } - + public BlogFeatureDto BlogPostScrollIndexFeature { get; private set; } protected IBlogPostPublicAppService BlogPostPublicAppService { get; } protected IBlogFeatureAppService BlogFeatureAppService { get; } + protected ContentParser ContentParser { get; } + public BlogPostModel( IBlogPostPublicAppService blogPostPublicAppService, - IBlogFeatureAppService blogFeaturePublicAppService) + IBlogFeatureAppService blogFeaturePublicAppService, + ContentParser contentParser) { BlogPostPublicAppService = blogPostPublicAppService; BlogFeatureAppService = blogFeaturePublicAppService; + ContentParser = contentParser; } - public virtual async Task OnGetAsync() + public virtual async Task OnGetAsync() { - BlogPost = await BlogPostPublicAppService.GetAsync(BlogSlug, BlogPostSlug); + var blogPostPublicDto = await BlogPostPublicAppService.GetAsync(BlogSlug, BlogPostSlug); + ViewModel = ObjectMapper.Map(blogPostPublicDto); + if (ViewModel == null) + { + return NotFound(); + } + + ViewModel.ContentFragments = await ContentParser.ParseAsync(blogPostPublicDto.Content); if (GlobalFeatureManager.Instance.IsEnabled()) { - CommentsFeature = await BlogFeatureAppService.GetOrDefaultAsync(BlogPost.BlogId, GlobalFeatures.CommentsFeature.Name); + CommentsFeature = await BlogFeatureAppService.GetOrDefaultAsync(ViewModel.BlogId, GlobalFeatures.CommentsFeature.Name); } if (GlobalFeatureManager.Instance.IsEnabled()) { - ReactionsFeature = await BlogFeatureAppService.GetOrDefaultAsync(BlogPost.BlogId, GlobalFeatures.ReactionsFeature.Name); + ReactionsFeature = await BlogFeatureAppService.GetOrDefaultAsync(ViewModel.BlogId, GlobalFeatures.ReactionsFeature.Name); } if (GlobalFeatureManager.Instance.IsEnabled()) { - RatingsFeature = await BlogFeatureAppService.GetOrDefaultAsync(BlogPost.BlogId, GlobalFeatures.RatingsFeature.Name); + RatingsFeature = await BlogFeatureAppService.GetOrDefaultAsync(ViewModel.BlogId, GlobalFeatures.RatingsFeature.Name); } if (GlobalFeatureManager.Instance.IsEnabled()) { - TagsFeature = await BlogFeatureAppService.GetOrDefaultAsync(BlogPost.BlogId, GlobalFeatures.TagsFeature.Name); + TagsFeature = await BlogFeatureAppService.GetOrDefaultAsync(ViewModel.BlogId, GlobalFeatures.TagsFeature.Name); } if (GlobalFeatureManager.Instance.IsEnabled()) { - BlogPostScrollIndexFeature = await BlogFeatureAppService.GetOrDefaultAsync(BlogPost.BlogId, GlobalFeatures.BlogPostScrollIndexFeature.Name); + BlogPostScrollIndexFeature = await BlogFeatureAppService.GetOrDefaultAsync(ViewModel.BlogId, GlobalFeatures.BlogPostScrollIndexFeature.Name); } + + return Page(); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPostViewModel.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPostViewModel.cs new file mode 100644 index 0000000000..789d2687fc --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPostViewModel.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using AutoMapper; +using Volo.Abp.Application.Dtos; +using Volo.CmsKit.Contents; +using Volo.CmsKit.Users; + +namespace Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Blogs; + +[AutoMap(typeof(BlogPostCommonDto), ReverseMap = true)] +public class BlogPostViewModel : AuditedEntityDto +{ + public Guid BlogId { get; set; } + + public string Title { get; set; } + + public string Slug { get; set; } + + public string ShortDescription { get; set; } + + public string Content { get; set; } + + public List ContentFragments { get; set; } + + public Guid? CoverImageMediaId { get; set; } + + public CmsUserDto Author { get; set; } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml index 250303177b..e14733695a 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml @@ -5,27 +5,39 @@ @using Volo.Abp.Data @using Volo.Abp.AspNetCore.Mvc.UI.Packages.HighlightJs; @using Volo.Abp.AspNetCore.Mvc.UI.Widgets; - +@using Volo.CmsKit.Web.Renderers @model Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Pages.IndexModel +@inject IMarkdownToHtmlRenderer MarkdownRenderer + @section styles{ } @section scripts{ } - @await Component.InvokeAsync("ContentFragment", new { contentDto = Model.PageDto }) + @foreach (ContentFragment contentFragment in Model.ViewModel.ContentFragments) + { + if (contentFragment.Type == ContentConsts.Markdown) + { + @Html.Raw(await MarkdownRenderer.RenderAsync(contentFragment.GetProperty("Content"), allowHtmlTags: true, preventXSS: true)) + } + else if (contentFragment.Type == ContentConsts.Widget) + { + @await Component.InvokeAsync(contentFragment.GetProperty("Type"), contentFragment.ExtraProperties.ConvertToDynamicObject()) + } + } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml.cs index 7ae92d7016..18eb184742 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using Volo.CmsKit.Contents; using Volo.CmsKit.Public.Pages; +using Volo.CmsKit.Web.Contents; using Volo.CmsKit.Web.Pages; namespace Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Pages; @@ -13,21 +14,26 @@ public class IndexModel : CommonPageModel protected IPagePublicAppService PagePublicAppService { get; } - public PageDto PageDto { get; private set; } + protected ContentParser ContentParser { get; } - public IndexModel(IPagePublicAppService pagePublicAppService) + public PageViewModel ViewModel { get; private set; } + + public IndexModel(IPagePublicAppService pagePublicAppService, ContentParser contentParser) { PagePublicAppService = pagePublicAppService; + ContentParser = contentParser; } - public async Task OnGetAsync() + public virtual async Task OnGetAsync() { - PageDto = await PagePublicAppService.FindBySlugAsync(Slug); - - if (PageDto == null) + var pageDto = await PagePublicAppService.FindBySlugAsync(Slug); + ViewModel = ObjectMapper.Map(pageDto); + if (ViewModel == null) { return NotFound(); } + + ViewModel.ContentFragments = await ContentParser.ParseAsync(pageDto.Content); return Page(); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/PageViewModel.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/PageViewModel.cs index 5e5df3e917..3195826093 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/PageViewModel.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/PageViewModel.cs @@ -1,9 +1,12 @@ using System; using System.Collections.Generic; +using AutoMapper; using Volo.CmsKit.Contents; +using Volo.CmsKit.Public.Pages; namespace Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Pages; +[AutoMap(typeof(PageDto), ReverseMap = true)] public class PageViewModel { public Guid Id { get; set; } @@ -11,4 +14,8 @@ public class PageViewModel public string Title { get; set; } public List ContentFragments { get; set; } + + public string Script { get; set; } + + public string Style { get; set; } } \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Contents/ContentAdminAppService_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Contents/ContentAdminAppService_Tests.cs deleted file mode 100644 index f338d3d7d1..0000000000 --- a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Contents/ContentAdminAppService_Tests.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Linq; -using System.Threading.Tasks; -using Shouldly; -using Volo.CmsKit.Admin.Contents; -using Xunit; - -namespace Volo.CmsKit.Contents; - -public class ContentAdminAppService_Tests : CmsKitApplicationTestBase -{ - private readonly IContentAdminAppService _contentAdminAppService; - - public ContentAdminAppService_Tests() - { - _contentAdminAppService = GetRequiredService(); - } - - [Fact] - public async Task ShouldGet_PagedListAsync() - { - var widgets = await _contentAdminAppService.GetWidgetsAsync(); - - widgets.Items.Count.ShouldBe(0); - widgets.Items.Any().ShouldBeFalse(); - } - -} diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Contents/ContentParser_Test.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Contents/ContentParser_Test.cs deleted file mode 100644 index b08a127111..0000000000 --- a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Contents/ContentParser_Test.cs +++ /dev/null @@ -1,138 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.Extensions.Options; -using Shouldly; -using Xunit; - -namespace Volo.CmsKit.Contents; -public class ContentParser_Test : CmsKitDomainTestBase -{ - private readonly CmsKitTestData testData; - private readonly IOptions _options; - private ContentParser contentParser; - - public ContentParser_Test() - { - testData = GetRequiredService(); - _options = GetRequiredService>(); - } - - [Fact] - public async Task ParseAsync_ShouldWorkWithDifferentWidgetTypes() - { - _options.Value.AddWidget(testData.PollName, testData.WidgetName, string.Empty); - _options.Value.AddWidget("ImageGallery", "ImageGallery", string.Empty); - contentParser = new ContentParser(_options); - - var content = @"**ABP Framework** is completely open source and developed in a community-driven manner. - [Widget Type=""Poll"" Code=""poll-name""] - Thanks _for_ *your * feedback. - [Widget GalleryName=""Xyz"" Type=""ImageGallery"" Source=""GoogleDrive""]"; - - var widgets = await contentParser.ParseAsync(content); - - widgets.ShouldNotBeNull(); - widgets.Count.ShouldBe(4); - widgets[1].ExtraProperties.Count.ShouldBe(2); - widgets[3].ExtraProperties.Count.ShouldBe(3); - } - - [Fact] - public async Task ParseAsync_ShouldWorkWithoutConfigOptions() - { - var content = @"**ABP Framework** is completely open source and developed in a community-driven manner. - [Widget Type= ""Poll"" Code =""poll-name""] - Thanks _for_ *your * feedback."; - - contentParser = new ContentParser(_options); - var widgets = await contentParser.ParseAsync(content); - - widgets.ShouldNotBeNull(); - widgets.Count.ShouldBe(1);//Ignored Widget - } - - [Fact] - public async Task ParseAsync_ShouldWorkWithWrongConfigOptions() - { - _options.Value.AddWidget(testData.WidgetName, testData.PollName, string.Empty); - contentParser = new ContentParser(_options); - - var content = @"**ABP Framework** is completely open source and developed in a community-driven manner. - [Widget Type= ""Poll"" Code =""poll-name""] - Thanks _for_ *your * feedback."; - - var widgets = await contentParser.ParseAsync(content); - - widgets.ShouldNotBeNull(); - widgets.Count.ShouldBe(2); - } - - [Fact] - public async Task ParseAsync_ShouldWorkWithWrongWidgetType() - { - _options.Value.AddWidget(testData.PollName, testData.WidgetName, string.Empty); - contentParser = new ContentParser(_options); - - var content = @"**ABP Framework** is completely open source and developed in a community-driven manner. - [Widget Wrong Type= ""Poll"" Code =""poll-name""] - Thanks _for_ *your * feedback."; - - var widgets = await contentParser.ParseAsync(content); - - widgets.ShouldNotBeNull(); - widgets.Count.ShouldBe(2); - } - - [Fact] - public async Task ParseAsync_ShouldWorkWithWrongPollName() - { - _options.Value.AddWidget(testData.PollName, testData.WidgetName, string.Empty); - contentParser = new ContentParser(_options); - - var content = @"**ABP Framework** is completely open source and developed in a community-driven manner. - [Widget Type= ""Poll"" PollWrongName =""poll-name""] - Thanks _for_ *your * feedback."; - - var widgets = await contentParser.ParseAsync(content); - - widgets.ShouldNotBeNull(); - widgets.Count.ShouldBe(3); - } - - [Theory] - [MemberData(nameof(ExampleData))] - public async Task ParseAsync_ShouldWorkProperlyWithCorrectInputs(string content, int expectedLine) - { - _options.Value.AddWidget(testData.PollName, testData.WidgetName, string.Empty); - contentParser = new ContentParser(_options); - - var widgets = await contentParser.ParseAsync(content); - - widgets.ShouldNotBeNull(); - widgets.Count.ShouldBe(expectedLine); - } - - public static IEnumerable ExampleData => - new List - { - new object[] { @"**ABP Framework** is completely open source and developed in a community-driven manner. - [Widget Type=""Poll"" Code=""poll-name""] - Thanks _for_ *your * feedback.", 3}, - - new object[] { @"**ABP Framework** is completely open source and developed in a community-driven manner. - [Widget Type=""Poll"" Code=""poll-name""] - Thanks _for_ *your * feedback. - [Widget Type=""Poll"" Code=""poll-name1""]", 4 }, - - new object[] { @"**ABP Framework** is completely open source and developed in a community-driven manner. - Thanks _for_ *your * feedback. - [Widget Type=""Poll"" Code=""poll-name""]", 2 }, - - new object[] { @"[Widget Type=""Poll"" Code=""poll-name""] gg [Widget Type=""Poll"" Code=""poll-name1""]**ABP Framework** is completely open source and developed in a community-driven manner. - Thanks _for_ *your * feedback. - Thanks _for_ *your * feedback.", 4}, - - new object[] { @"Thanks _for_ *your * feedback. - Thanks _for_ *your * feedback.", 1} - }; -} diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index 2c45c0ce90..8666f1e0fc 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.2", - "@abp/docs": "^6.0.0-rc.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^6.0.0-rc.3", + "@abp/docs": "^6.0.0-rc.3" } } diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index dd75c9f408..6bcbfd7051 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,45 +2,45 @@ # yarn lockfile v1 -"@abp/anchor-js@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-6.0.0-rc.2.tgz#80b788c281581df92fc4e9821d9256478abf46d3" - integrity sha512-mn3ByjpU1SVm1jiB607l9C9T5xYxsTdylHqsS5+egzGuxEgF4dGF1SVJ6GubUh2isStHGpv7oKm2uhoFO02aow== +"@abp/anchor-js@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-6.0.0-rc.3.tgz#1f350b7cb1b73f5c5d07b7a64b5a184b11a62d25" + integrity sha512-1eQZPnANlQgrBqYCUKDXzytUw1MPKBakJnyRFIWknW7IBTMbRTZZFjdqscRV4JaXil3wfrYJJKaa2WWyD4nxbg== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" anchor-js "^4.3.1" -"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.2.tgz#0a80531a46e08719ef90b4f9013b8bb5ec2fe2f0" - integrity sha512-uktT9FXlDzJ0HGleYCnvUhSMgkSHiwrjVnztbx6zRvrhNsq/UNWPhYoGti8He9tQO1dLi2cRq1aTawtMIjgVow== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.2.tgz#a7a69d3bb4aa09809b3362a045c1adba5b04d17c" - integrity sha512-sszTiRfJxy6EQ2C2xe3GwrfaVfZgSw8xOZcIFScBvW0fDMAfJCTJA+HMcaBTsng9EqHfc7622mWaPlWCD5ImEg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.2" - "@abp/bootstrap" "~6.0.0-rc.2" - "@abp/bootstrap-datepicker" "~6.0.0-rc.2" - "@abp/datatables.net-bs5" "~6.0.0-rc.2" - "@abp/font-awesome" "~6.0.0-rc.2" - "@abp/jquery-form" "~6.0.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.2" - "@abp/lodash" "~6.0.0-rc.2" - "@abp/luxon" "~6.0.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.2" - "@abp/select2" "~6.0.0-rc.2" - "@abp/sweetalert2" "~6.0.0-rc.2" - "@abp/timeago" "~6.0.0-rc.2" - "@abp/toastr" "~6.0.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.2.tgz#14d5da45b01af77caab45b01a43f07db6a5425f3" - integrity sha512-AIXP1FP/VvBGRzoslTRTnD4I1oei4Ufh5qVWKG+PwmrFJ6/XoarNV6FCKLePm7NETd1VSrq20uPCrfuZx2WKQg== +"@abp/aspnetcore.mvc.ui.theme.basic@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-6.0.0-rc.3.tgz#b95266387e562c635de795442f90470f8e9e6318" + integrity sha512-vVkEpotDST455E3rynvRQpBKPcNNJ2m1wLkz/B9dQNdUjvm8L4F6s0ls0XFlKUNvQfCVfedkRtGayuvNje/Oxg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui.theme.shared@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-6.0.0-rc.3.tgz#664ca2ee712b7d9e66103c00beb41eb9648a6075" + integrity sha512-KxCsGuoUWKaDo7Oo9aKp51pli2m0DZ2tG8m+zK+m4M9U7g96uC+DOFy3gc7MdPlszvrw32Wwm7I0AughstByNA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~6.0.0-rc.3" + "@abp/bootstrap" "~6.0.0-rc.3" + "@abp/bootstrap-datepicker" "~6.0.0-rc.3" + "@abp/datatables.net-bs5" "~6.0.0-rc.3" + "@abp/font-awesome" "~6.0.0-rc.3" + "@abp/jquery-form" "~6.0.0-rc.3" + "@abp/jquery-validation-unobtrusive" "~6.0.0-rc.3" + "@abp/lodash" "~6.0.0-rc.3" + "@abp/luxon" "~6.0.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3" + "@abp/select2" "~6.0.0-rc.3" + "@abp/sweetalert2" "~6.0.0-rc.3" + "@abp/timeago" "~6.0.0-rc.3" + "@abp/toastr" "~6.0.0-rc.3" + +"@abp/aspnetcore.mvc.ui@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-6.0.0-rc.3.tgz#47c23b57ed3908bd78a232230e53d1f3cba2de41" + integrity sha512-7eJZy2JUGQP94Tz3JJWXRHRmDfTcPZ/lS1/VNbU8B4qvgl5ChIXklVEJLR1fwrBhKXZV8fGVmqT1XlGTGFvFJA== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -49,180 +49,180 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.2.tgz#74785434be987d4579dcf66b52752d23d3dcc928" - integrity sha512-BvJEChBRwf7vuXap1s/hOi3PrlWkZYtpnZLKNjNpEfLLHa3LPrSLn9GAfVLS92/qxeB+S6Vk49HiwcOtuIeEOA== +"@abp/bootstrap-datepicker@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-6.0.0-rc.3.tgz#89198b863dbfccf5f07ac3c4b20ce6199adcb17a" + integrity sha512-NLoUjcR66mqwSWuVftu2yFH4/j6QP+FiElRfZQ9OYmO8DQx2Ue5UZzjrFTrZ1DBBCfzhr2Bffj80dirGvGDyvg== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.2.tgz#ef9e6fb40eb884dd69581bfd08a2523f274cbab8" - integrity sha512-cf1ttQV6gQX0UNoWIKxaJ7tk8dJAQ79WhklsuDWROl0KtkjQ/oCi14363YvWezMQe82xnps1m4ViX87JqNIM4w== +"@abp/bootstrap@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-6.0.0-rc.3.tgz#4574bf574cc3484869e8ff8bc592f6212d20a969" + integrity sha512-Q5v7WRkGhGcjRg267HXtqs1oU7ts9UXPyCXmg5y2y5qMOyioD+m4MKV4iv67DgoQjabudp8X2egTKxkej6Lzkw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" bootstrap "^5.1.3" -"@abp/clipboard@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.2.tgz#99f54676d61fb8b83447b453f69f2c8fedfc07ad" - integrity sha512-oNQ7i8lR0d74t/Hoqt6EgK1dgXfH44TmOuovqyegpqeOXlMPZJVeZ0Kkp2DTV6WgGQeR8rTMFWJyBvGfVFMQdA== +"@abp/clipboard@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-6.0.0-rc.3.tgz#ee3a586b491d89442eefff08aaebbf9d38cb46d4" + integrity sha512-01svpp3mR29z1FTM+2Qe+MUNLPbl95bWlOXY5zz2hvNSbdD45lGud+BiOHfeZwlDk5jjr3FqLel+hxx2ByBvOA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" clipboard "^2.0.8" -"@abp/core@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.2.tgz#6339637a278fc19e10d468aba118e2384a8310af" - integrity sha512-2t7rhjpRvByoAnkdSVEdN4ZVotHSRanv9fZRqK6yOQpHEZ4LDgByKi+eNdc3kiT0+VU3mHxMgq+FO+pxaBHSAA== +"@abp/core@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-6.0.0-rc.3.tgz#5662ce813d449d97d9fb7ea2552b2774c8df7825" + integrity sha512-X/VRdk5SGNYc5gQzPcBEPAvwcuD9WXsI4YIdrqjnes0s8u2/XmfrTixojh8Y5EYUoOblEE3Soj5hBhY1cVwcbQ== dependencies: - "@abp/utils" "~6.0.0-rc.2" + "@abp/utils" "~6.0.0-rc.3" -"@abp/datatables.net-bs5@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.2.tgz#76ab55e97bc4d25f8bbfc6564f5e61f8404ab52c" - integrity sha512-Wdt22BSDqFvrZb5x2gcH8JG4jJ0++pN7M+t3jqSM3f9IZMOWHZ5GsUegUt+j60Cvqw7ItjP/BmBySQtmh3WbOg== +"@abp/datatables.net-bs5@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-6.0.0-rc.3.tgz#22865c7e621de720b71af6265b3193f6c78695bd" + integrity sha512-T+mhLc6uSzWmxDQogVwnJ6VxI4845gmF68/i9TmVKNlCtpa3EEfyuF/hgWT1hYfCb4XOsvd/CWrunbkC3fsmtg== dependencies: - "@abp/datatables.net" "~6.0.0-rc.2" + "@abp/datatables.net" "~6.0.0-rc.3" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.2.tgz#4364d099f2fc1f647fe40eb5cace2fe8c13281dd" - integrity sha512-exHwF0pmJnT83d2X3NcHFewT8ZyK1TWfwNNBVn+j3jwcm4/5KT9a308CAahV9hTz/Z6ZsjRdCRwdv0eU5VHPkQ== +"@abp/datatables.net@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-6.0.0-rc.3.tgz#d036defe6ad7fc989dffa020ae579362ee3150d1" + integrity sha512-4cUU8/Tn0Vz9bx7jjMOD/0Viyr29fcwoQAAkxaaYZp6qiQbENgz46/xpQf2oBCoudk8CLdzpmNa7jWte7PcJJw== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" datatables.net "^1.11.4" -"@abp/docs@^6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-6.0.0-rc.2.tgz#27b6519e9f902ef2a54eb011a4f4a2344ff1cd4a" - integrity sha512-Z2D2fD9y86+u72v6s2hkGR2RC+6/FW+lRHJwW8YwZLlC7bst7qqgYPAsMr2JrwIAmie/Zb6LTqMRGZVnnBeJXQ== +"@abp/docs@^6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-6.0.0-rc.3.tgz#3300578c2bdface9e7672e9093c2a387c11f482f" + integrity sha512-ymLh1jR6qGTB+4G5uttYvbiYWZ853GYLRkRbQ6VtcyBDnX+IpexsxPCtL9Ralp8YGDbxYIHnnRAC5TAvSHn16Q== dependencies: - "@abp/anchor-js" "~6.0.0-rc.2" - "@abp/clipboard" "~6.0.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.2" - "@abp/popper.js" "~6.0.0-rc.2" - "@abp/prismjs" "~6.0.0-rc.2" + "@abp/anchor-js" "~6.0.0-rc.3" + "@abp/clipboard" "~6.0.0-rc.3" + "@abp/malihu-custom-scrollbar-plugin" "~6.0.0-rc.3" + "@abp/popper.js" "~6.0.0-rc.3" + "@abp/prismjs" "~6.0.0-rc.3" -"@abp/font-awesome@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.2.tgz#bc522149abafb82935094c8fcd72a8201f98a315" - integrity sha512-sPA9urlcUl2868zmABa7X1rA6aPYkihVEt1h/XSSYpjL/hu7I1RtDDEJ2k6GFjgd2AZ+8xKRkI4bpOE5HKtbsg== +"@abp/font-awesome@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-6.0.0-rc.3.tgz#803569d1a7e25f8a1c2be018312449c23fb78217" + integrity sha512-lYdh38UCTSkzzw0B/mpPEo7iFXzSKHCNbBOIHe6dd6O/Qli7wYukTtUOFn5Sh+yoydLY1as92HtiGL1ckSdu1g== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.2.tgz#cfeb8a300d2c350854689481c15404c37dfcb428" - integrity sha512-Okl0z6MibakfSH4Mzq2fDA0kj97tWSDpVcJLN+K5CkROhob2ZpkBiAysY7hqEMItAMruDa2SsrANxW65r4mi4Q== +"@abp/jquery-form@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-6.0.0-rc.3.tgz#4ec503c07e2194148c3a7e7cf7ddef2871679e6a" + integrity sha512-Q3uEpflntqrSkYakcdsBnnYYfxJWXD/CDjMiwjbb6gIc8s4qkbIYxVxvYvlEezoIDYQkMSXOn7BS4clWsesiJg== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.2.tgz#a66677d87e3214086483853845c1bb609bbb4f3b" - integrity sha512-ymGMzH/kwfcvw749znmiE4I4jesJScEZu2LR1IrFcJUV9s4ThJEgSGnyjUAXZrt2jNSuWTUCXp4dI0PSm5iU3Q== +"@abp/jquery-validation-unobtrusive@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-6.0.0-rc.3.tgz#01da2a59663d373ff1c69022f4c9c66ad0b29403" + integrity sha512-ij1ML2D9rYF3pJthWO6mGQajsJhbDCtOoBvnh9yCZccuwOYkXP22PqfUxjjxtqL4HqFI31KRpFg0ANMGSzEEBg== dependencies: - "@abp/jquery-validation" "~6.0.0-rc.2" + "@abp/jquery-validation" "~6.0.0-rc.3" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.2.tgz#bcc7fbfbac2bc8e7efc94177e1a1a405d18ac387" - integrity sha512-RIeNdhDDa7fQunE9BnBxcdicQpcpcn/l7Rl6q8IuA18PN4z4DueXt3A6Qzl9zPl931yXzs7v28iW7j81/4Xpyw== +"@abp/jquery-validation@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-6.0.0-rc.3.tgz#724aea9572dcb2faccf8c6355332b0b2a4df9260" + integrity sha512-rTK5oHaMtycvWxunNwzbE/MbsXXIr6qDnOY3rVUmjTHjqUOHYz591t/XeQfjnSXPp4k/SZUjG6viTC3J2jzC1A== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" jquery-validation "^1.19.3" -"@abp/jquery@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.2.tgz#6d641604a1687d2e8e3220171329960b7e40a315" - integrity sha512-FMCdtl3nPZDaTGZ7aKHzOYIzzYQvhDrdTm0bKD+5nKv70sL8TRQV16hzcARGFoA/9PoBLBfnVPcSYSEN/nL5Dw== +"@abp/jquery@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-6.0.0-rc.3.tgz#ba19cc8b802c46490277939e6c674811127d8016" + integrity sha512-MbD38iInyag7/j5k42cvMT4jLZMtXH4lUK0rjvqUDVaxKEks46Ix/90uczQ9XajYONgx0CJKFj2urgM830+CCA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" jquery "~3.6.0" -"@abp/lodash@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.2.tgz#939d667bc96a268344df16e12e458ae376ae0154" - integrity sha512-Q2+rVGolS+00Zsww/qTo+k2oqAIDzAVZCAaamgTCJ8mliho7wFvW8LWFwII3so/nKWiTb8Gwf7bW0nMKeCnvuw== +"@abp/lodash@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-6.0.0-rc.3.tgz#8a5bab02353e5cab4ca06ab82f6dbe6285faa95a" + integrity sha512-c8yhcapzPsXyeiFjeOC+2a4bn5wFjW5gUoN+p/p+tE+FIcH37yEgyw/tAr6aZPCmR770MqQXct4t7S4Czbbk+A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" lodash "^4.17.21" -"@abp/luxon@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.2.tgz#7703887dcdee26cb1e972386ea295b879e3c51f6" - integrity sha512-ckGfUo7ZD19LjKmrKneYQSO8Mjp5rh4sM/587MdTtc0ZA3nyqX98DtE0nkm8MegTvoVUGYBKWhhIlqTb6VpI4w== +"@abp/luxon@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-6.0.0-rc.3.tgz#ba515e122c61918d481467d5be39f08a363822f6" + integrity sha512-2lRSSC0DYShlnKdbJ/Pmha/azjt09ZRPx57NQ01dc7ungChPry5EJL6pC3kXWnJrCkrPCF0V5+A3+taut9+l3A== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.2.tgz#22af6c68067671714abdb52537487cd5cc73af43" - integrity sha512-rz3herKYP2KccHSUHpbkF1adfaECSR7TDOkOeFghpM/t5TCv/fs9uSroeteKyCMufWmYswY/1Yi4doYEQWcdfA== +"@abp/malihu-custom-scrollbar-plugin@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-6.0.0-rc.3.tgz#0798e37ec6a852748118692a5fbd30c99d9745db" + integrity sha512-FlyShmRxG3wGk1OJCjHIZAdi2/Y2FJPkVxaE72CVIceQSmg0nebGTv3a7bhd4QzKkDsSA3+t6gHjnuKlTlDFLA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/popper.js@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-6.0.0-rc.2.tgz#9c05de9d662129ce99e518d6959b41976a898c0d" - integrity sha512-l4LlDPfu0nt2TzzGhKfTLyHe2lRsFTgY4hm0W3hdFteC6Sh5q+yw1Rlolb3HD7bIHYp92dRfV2hxgYvH06/COw== +"@abp/popper.js@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-6.0.0-rc.3.tgz#de55a85186f720e16607a3d2445885accb8c1527" + integrity sha512-YggzPKVWaERf5esSzAsa9Qi6+BCSfNPULkwXAPa3qoP/OtXuI6e+U12CzhTWrcFLp4Xv6Wq8Y+iNNSkVhj/n2w== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" "@popperjs/core" "^2.11.2" -"@abp/prismjs@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.2.tgz#5c200260038e1e7e7bcf627df840ec8d31efd255" - integrity sha512-zESjrel58EWNoreOvdYmpPLR3TpdPQEw7R8aGPgieTZSKxcM7aHYBa1vbN6czaIeD3RjwIBtaMVCOGhiPYSKug== +"@abp/prismjs@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-6.0.0-rc.3.tgz#e4faf595e29db81c5a66030e59b0e09f09759bfd" + integrity sha512-zzd3iw/Im0M9FUmTviwkTCr4slkoZJExtK+qB1FmLxRY59+hyU9wxd6hwzic/QwhXxFQoYILJ3S3FNxsPIm76A== dependencies: - "@abp/clipboard" "~6.0.0-rc.2" - "@abp/core" "~6.0.0-rc.2" + "@abp/clipboard" "~6.0.0-rc.3" + "@abp/core" "~6.0.0-rc.3" prismjs "^1.26.0" -"@abp/select2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.2.tgz#8553c085f087c83cadf0f25a80660db2236387f5" - integrity sha512-im0T2Uah4QkqWOBqiu1fpm6SvV9Id5pV3qup3AFFKRcwhH9rvGGPjpSqq+Fh0sG23P1BSHw/lEedYwAPfxcR0w== +"@abp/select2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-6.0.0-rc.3.tgz#deb8332bfce2102a562004893321a48d5194bf53" + integrity sha512-rb0qElmmhiP09xX8ZbjzNLF6ygFBwErysGWt6Bbgzz5waX2sGe575Cgoz53FaMQ4JaRBg1N0/nCejKyDtiINRA== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" select2 "^4.0.13" -"@abp/sweetalert2@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.2.tgz#1e0603c7edefe72e32a11b96fc0f5095e9273f12" - integrity sha512-BsiCrj32DQjMBgx9L5FOBDK2xx4x97oEqx5qUAt5lYPtxzIpFUAdn2U3h8WUQfDKRFquQLJxJ993dZai4GfYQg== +"@abp/sweetalert2@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-6.0.0-rc.3.tgz#e61fc6c1bed1316c1d44ca5c92f590e422db24d4" + integrity sha512-+SNpBb4XrQlWzRQK9lfdJqA9IfJrlgoqmHwPDgf3Q+P922MzO33TgDlZWbeE7MzVj2y2WmNsPuCKwhjSjSL2rw== dependencies: - "@abp/core" "~6.0.0-rc.2" + "@abp/core" "~6.0.0-rc.3" sweetalert2 "^11.3.6" -"@abp/timeago@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.2.tgz#21d67d3fa54b930fdf2c6ae7ed1c182ce16f0c0a" - integrity sha512-oOcW0m2xlsDTw6MjJ+4WbN7y4Le3S1H1IRvU+64i5O3fj5WNBpAKxNEO0X0HLD6JJwlr1tzvE2uWqzoRWO9JXg== +"@abp/timeago@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-6.0.0-rc.3.tgz#0ef8c4801bfd4623e6895b1d047b1437063bda53" + integrity sha512-P3YRDVKjR5/Fz+cXiPg3IiUr7XGbNh7mgmJ1ywRXmKVmVMJmhQ2RsKmmtkGJn4TfVHu/l5iJXe4rqgL21/yX/g== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" timeago "^1.6.7" -"@abp/toastr@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.2.tgz#3523b22b6bf473025b2b731eae59491997f2fbe2" - integrity sha512-StjNgLQNttZwm4L8vOOM/pclgMrmYTs1igmXnBXbYqMcE2Q7QfhZeOYwPvWrm0WlVC4pfR9l3ejYYcZljukqEA== +"@abp/toastr@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-6.0.0-rc.3.tgz#6010d4247937531ebf7c8659d6254cd3db6c4855" + integrity sha512-sC9eCzYVgDrLSFIhJGe9hshzfwA1BkZNah4NQhyq+V6HQ8YF7goMS79N+/XmSoLQ9zzRhusqnPFnb+4FHjr7iA== dependencies: - "@abp/jquery" "~6.0.0-rc.2" + "@abp/jquery" "~6.0.0-rc.3" toastr "^2.1.4" -"@abp/utils@~6.0.0-rc.2": - version "6.0.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.2.tgz#f93d7bcccc35335df5c14be10dc23bd7472868c8" - integrity sha512-6YdeptFQR1vZzLVKVjHmGQ+R+pK0iBiZdL7A3GkaC+ad5b+adybf8MJPyrbob96xV77/CEuXFUG88URed1B5Fw== +"@abp/utils@~6.0.0-rc.3": + version "6.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-6.0.0-rc.3.tgz#6d3515694314175218606e9518618ce335b4b360" + integrity sha512-K2geJ9P1ztk4Ehzb9YG3CqqLOi+z8/4iBLUzooNZLQqS+KdlUhCmqfuCoI/A5Aq9DGbTYesalp+Fwoh3S2Dl8A== dependencies: just-compare "^1.3.0" diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/DocumentDto.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/DocumentDto.cs index c415efa860..b574870fd8 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/DocumentDto.cs +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/DocumentDto.cs @@ -8,6 +8,8 @@ namespace Volo.Docs.Admin.Documents public class DocumentDto : EntityDto { public virtual Guid ProjectId { get; set; } + + public virtual string ProjectName { get; set; } public virtual string Name { get; set; } diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/DocumentInfoDto.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/DocumentInfoDto.cs new file mode 100644 index 0000000000..545e665869 --- /dev/null +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/DocumentInfoDto.cs @@ -0,0 +1,11 @@ +using System; + +namespace Volo.Docs.Admin.Documents; + +public class DocumentInfoDto +{ + public string Version { get; set; } + public string Format { get; set; } + public string LanguageCode { get; set; } + public Guid ProjectId { get; set; } +} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/IDocumentAdminAppService.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/IDocumentAdminAppService.cs index 0770ec5d72..12bdbc87be 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/IDocumentAdminAppService.cs +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/IDocumentAdminAppService.cs @@ -19,5 +19,7 @@ namespace Volo.Docs.Admin.Documents Task RemoveFromCacheAsync(Guid documentId); Task ReindexAsync(Guid documentId); + + Task> GetFilterItemsAsync(); } } diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/IProjectAdminAppService.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/IProjectAdminAppService.cs index 9b832165d1..6f3d503f44 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/IProjectAdminAppService.cs +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/IProjectAdminAppService.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; @@ -20,5 +21,6 @@ namespace Volo.Docs.Admin.Projects Task ReindexAsync(ReindexInput input); Task ReindexAllAsync(); + Task> GetListWithoutDetailsAsync(); } } diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/ProjectWithoutDetailsDto.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/ProjectWithoutDetailsDto.cs new file mode 100644 index 0000000000..b6e6a301cb --- /dev/null +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/ProjectWithoutDetailsDto.cs @@ -0,0 +1,9 @@ +using System; + +namespace Volo.Docs.Admin.Projects; + +public class ProjectWithoutDetailsDto +{ + public Guid Id { get; set; } + public string Name { get; set; } +} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/DocsAdminApplicationAutoMapperProfile.cs b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/DocsAdminApplicationAutoMapperProfile.cs index 86e6d46e0c..01a7250ce5 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/DocsAdminApplicationAutoMapperProfile.cs +++ b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/DocsAdminApplicationAutoMapperProfile.cs @@ -1,4 +1,5 @@ using AutoMapper; +using Volo.Abp.AutoMapper; using Volo.Docs.Admin.Documents; using Volo.Docs.Admin.Projects; using Volo.Docs.Documents; @@ -11,8 +12,10 @@ namespace Volo.Docs.Admin public DocsAdminApplicationAutoMapperProfile() { CreateMap(); - CreateMap(); + CreateMap().Ignore(x => x.ProjectName); CreateMap(); + CreateMap(); + CreateMap(); } } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs index af515b4be7..7d68681b1d 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs +++ b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Logging; using Volo.Abp; -using Volo.Abp.Uow; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Caching; @@ -217,6 +216,13 @@ namespace Volo.Docs.Admin.Documents await _elasticSearchService.AddOrUpdateAsync(document); } + public async Task> GetFilterItemsAsync() + { + var documents = await _documentRepository.GetUniqueListDocumentInfoAsync(); + return ObjectMapper.Map, List>(documents); + } + + private async Task UpdateDocumentUpdateInfoCache(Document document) { var cacheKey = $"DocumentUpdateInfo{document.ProjectId}#{document.Name}#{document.LanguageCode}#{document.Version}"; diff --git a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs index 14833cd3e4..540ecfe275 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs +++ b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs @@ -156,5 +156,11 @@ namespace Volo.Docs.Admin.Projects await ReindexProjectAsync(project.Id); } } + + public async Task> GetListWithoutDetailsAsync() + { + var projects = await _projectRepository.GetListWithoutDetailsAsync(); + return ObjectMapper.Map, List>(projects); + } } } diff --git a/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/DocumentsAdminClientProxy.Generated.cs b/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/DocumentsAdminClientProxy.Generated.cs index 7bb1ef0e87..e2b9fa2783 100644 --- a/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/DocumentsAdminClientProxy.Generated.cs +++ b/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/DocumentsAdminClientProxy.Generated.cs @@ -7,6 +7,7 @@ using Volo.Abp.Http.Modeling; using Volo.Abp.DependencyInjection; using Volo.Abp.Http.Client.ClientProxying; using Volo.Docs.Admin.Documents; +using System.Collections.Generic; // ReSharper disable once CheckNamespace namespace Volo.Docs.Admin.ClientProxies; @@ -62,4 +63,9 @@ public partial class DocumentsAdminClientProxy : ClientProxyBase> GetFilterItemsAsync() + { + return await RequestAsync>(nameof(GetFilterItemsAsync)); + } } diff --git a/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/ProjectsAdminClientProxy.Generated.cs b/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/ProjectsAdminClientProxy.Generated.cs index cb8d5c3947..072106df0e 100644 --- a/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/ProjectsAdminClientProxy.Generated.cs +++ b/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/ProjectsAdminClientProxy.Generated.cs @@ -7,6 +7,7 @@ using Volo.Abp.Http.Modeling; using Volo.Abp.DependencyInjection; using Volo.Abp.Http.Client.ClientProxying; using Volo.Docs.Admin.Projects; +using System.Collections.Generic; // ReSharper disable once CheckNamespace namespace Volo.Docs.Admin.ClientProxies; @@ -61,6 +62,11 @@ public partial class ProjectsAdminClientProxy : ClientProxyBase> GetListWithoutDetailsAsync() + { + return await RequestAsync>(nameof(GetListWithoutDetailsAsync)); + } + public virtual async Task ReindexAsync(ReindexInput input) { await RequestAsync(nameof(ReindexAsync), new ClientProxyRequestTypeValue diff --git a/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/docs-admin-generate-proxy.json b/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/docs-admin-generate-proxy.json index e85e6fbb43..c6cf885b09 100644 --- a/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/docs-admin-generate-proxy.json +++ b/modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/docs-admin-generate-proxy.json @@ -7,6 +7,8 @@ "Volo.Docs.Admin.DocumentsAdminController": { "controllerName": "DocumentsAdmin", "controllerGroupName": "DocumentsAdmin", + "isRemoteService": true, + "apiVersion": null, "type": "Volo.Docs.Admin.DocumentsAdminController", "interfaces": [ { @@ -427,12 +429,29 @@ }, "allowAnonymous": null, "implementFrom": "Volo.Docs.Admin.Documents.IDocumentAdminAppService" + }, + "GetFilterItemsAsync": { + "uniqueName": "GetFilterItemsAsync", + "name": "GetFilterItemsAsync", + "httpMethod": "GET", + "url": "api/docs/admin/documents/GetFilterItems", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "System.Collections.Generic.List", + "typeSimple": "[Volo.Docs.Admin.Documents.DocumentInfoDto]" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Docs.Admin.Documents.IDocumentAdminAppService" } } }, "Volo.Docs.Admin.ProjectsAdminController": { "controllerName": "ProjectsAdmin", "controllerGroupName": "ProjectsAdmin", + "isRemoteService": true, + "apiVersion": null, "type": "Volo.Docs.Admin.ProjectsAdminController", "interfaces": [ { @@ -684,6 +703,21 @@ "allowAnonymous": null, "implementFrom": "Volo.Docs.Admin.Projects.IProjectAdminAppService" }, + "GetListWithoutDetailsAsync": { + "uniqueName": "GetListWithoutDetailsAsync", + "name": "GetListWithoutDetailsAsync", + "httpMethod": "GET", + "url": "api/docs/admin/projects/GetListProjectWithoutDetailsAsync", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "System.Collections.Generic.List", + "typeSimple": "[Volo.Docs.Admin.Projects.ProjectWithoutDetailsDto]" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Docs.Admin.Projects.IProjectAdminAppService" + }, "ReindexAsyncByInput": { "uniqueName": "ReindexAsyncByInput", "name": "ReindexAsync", diff --git a/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocumentsAdminController.cs b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocumentsAdminController.cs index 9404ac0bde..c0586ed699 100644 --- a/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocumentsAdminController.cs +++ b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocumentsAdminController.cs @@ -63,5 +63,12 @@ namespace Volo.Docs.Admin { await _documentAdminAppService.ReindexAsync(documentId); } + + [HttpGet] + [Route("GetFilterItems")] + public async Task> GetFilterItemsAsync() + { + return await _documentAdminAppService.GetFilterItemsAsync(); + } } } diff --git a/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/ProjectsAdminController.cs b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/ProjectsAdminController.cs index 1696229bf8..ea0c7f1afd 100644 --- a/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/ProjectsAdminController.cs +++ b/modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/ProjectsAdminController.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp; @@ -61,6 +62,13 @@ namespace Volo.Docs.Admin return _projectAppService.ReindexAllAsync(); } + [HttpGet] + [Route("GetListProjectWithoutDetailsAsync")] + public Task> GetListWithoutDetailsAsync() + { + return _projectAppService.GetListWithoutDetailsAsync(); + } + [HttpPost] [Route("Reindex")] public Task ReindexAsync(ReindexInput input) diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/Index.cshtml b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/Index.cshtml index 738327def9..c740a7ab07 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/Index.cshtml +++ b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/Index.cshtml @@ -34,50 +34,70 @@ - +
@L["Project"].Value
- +
- +
-
@L["Name"].Value
+
@L["Version"].Value
- +
- - + +
-
@L["Version"].Value
+
@L["Name"].Value
- - + +
@L["LanguageCode"].Value
- +
- + + +
@L["AdvancedFilters"] @@ -85,7 +105,7 @@