diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index ee66fbcf2c..cd48c0448a 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -27,12 +27,12 @@ jobs: with: fetch-depth: 0 - - uses: actions/cache@v2 + - uses: actions/cache@v4 with: path: 'npm/ng-packs/node_modules' key: ${{ runner.os }}-${{ hashFiles('npm/ng-packs/yarn.lock') }} - - uses: actions/cache@v2 + - uses: actions/cache@v4 with: path: 'templates/app/angular/node_modules' key: ${{ runner.os }}-${{ hashFiles('templates/app/angular/yarn.lock') }} diff --git a/Directory.Packages.props b/Directory.Packages.props index 9bc9b9a26a..5c3539ec40 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,190 +3,190 @@ true - + - - + + - + - - + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - - + + - + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - + + + - - - - - - - - + + + + + + + + - - - - + + + + - - - - - - - - + + + + + + + + - + - - - + + + - - - - + + + + - + - + - - - - - + + + + + - - - - + + + + - + \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index 1ea52ff5f5..d056e70b09 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -690,6 +690,33 @@ "Permission:Campaigns": "Campaigns", "Permission:Licenses": "License Settings", "BlockUserPolicy": "User Block Policies", - "Permission:BlockUserPolicy": "User Block Policy" + "Permission:BlockUserPolicy": "User Block Policy", + "ManageImages" : "Manage Image", + "ModuleMainImage": "Module Main Image", + "ModuleImageInfo1": "Accepted file types : JPEG, JPG, PNG, SVG ", + "ModuleImageInfo2": "Max file size : 1 MB ", + "ModuleImageInfo3": "Image Proportion : 1:1 ", + "ModuleImageInfo4": " Download a sample cover image ", + "AreYouSureToDeleteImage": "Are you sure you want to delete this image?", + "CompactPercentage": "Compact Percentage", + "CompactPercentageDescription": "Percentage of cache entries to remove during compaction (1-100)", + "Settings": "Settings", + "MaxSizeOfInMemoryCache": "Max Size Of In Memory Cache", + "MaxSizeOfInMemoryCacheInfo": "Gets or sets the maximum size of the memory cache.", + "SizeOfTriggerAutoCompact": "Size Of Trigger Auto Compact", + "SizeOfTriggerAutoCompactInfo": "Gets or sets the size threshold that triggers auto-compaction. When the cache size exceeds this value, auto-compaction will be performed", + "AutoCompactPercentage": "Auto Compact Percentage", + "AutoCompactPercentageInfo": "Gets or sets the percentage of items to remove when auto-compaction is triggered (1-100)", + "ClearCaches": "This clears all NuGet content cache", + "CacheLatestVersions": "Cache Latest Versions", + "VersionCount": "Version Count", + "VersionCountInfo": "Gets or sets the number of versions to cache", + "IncludeLeptonX": "Include LeptonX", + "IncludeLeptonXInfo": "Gets or sets whether to include LeptonX in the cache", + "IncludePrerelease": "Include Prerelease", + "IncludePrereleaseInfo": "Gets or sets whether to include prerelease versions in the cache", + "CacheVersionCount": "Cache Version Count", + "CacheVersionCountInfo": "Gets or sets the number of versions to cache", + "CacheLatestVersionsInfo": "This caches the latest versions of the NuGet packages" } } diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index efbc35f15a..e60ed4cf59 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -1888,7 +1888,7 @@ "FaqIyzicoPaymentIssuesExplanation7": "Alternatively, you can send the license amount directly via bank wire transfer. For our bank account details, please visit: Bank Account Information (use USD currency).", "FaqIyzicoPaymentIssuesExplanation8": "ABP website doesn't save or process your credit card. We use payment gateways for this and the entire transaction is handled by payment gateways. We have no authority to interfere with the payment process or fix the payment steps. If you have further questions or need additional support, feel free to contact us at abp.io/contact.", "BiographyContainsUrlValidationMessage": "Biography cannot contain URL.", - "CreatePostSEOTitleInfo": "The SEO Title is what appears in search engine results as the clickable headline. By default, it matches the article’s title, but you can customize it here for better search visibility. Keep it clear, compelling, and include target keywords—ideally near the beginning. Aim for around 60 characters to avoid truncation in search results.", + "CreatePostSEOTitleInfo": "SEO URL is a clean, readable, keyword-rich URL that helps both users and search engines understand what this post is about. Keep it short with 60 characters. SEO titles over 60 characters will be truncated. Use hyphens (-) to separate words (not underscores). Include target keywords near the start. Lowercase only. No stop words unless needed (e.g: \"and\", \"or\", \"the\").", "SEOTitle": "SEO Title" } } diff --git a/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/POST.md b/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/POST.md index b6a99a8997..e59e75f44a 100644 --- a/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/POST.md +++ b/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/POST.md @@ -25,6 +25,7 @@ Here is a brief list of titles explained in the next sections: * Docs Module: Added "Alternative Words" to Filter Items * Introducing the Bunny BLOB Storage Provider * Upgraded `MongoDB.Driver` to v3.1.0 +* Using Timezone Settings to Display Datetime * Identity Pro Module: Require Email Verification to Register * Switching users during OAuth login @@ -114,6 +115,49 @@ The upgrade provides: We have prepared a [migration guide](https://abp.io/docs/9.2/release-info/migration-guides/MongoDB-Driver-2-to-3) for this upgrade. Please refer to it to learn more about the changes and how to migrate your application. +### Using Timezone Settings to Display Datetime + +A significant enhancement in ABP v9.2 is the ability to use timezone settings to display `DateTime` values according to the user's or application's configured timezone. Introduced in `v9.2.0-rc.2`, this feature addresses the common challenge of ensuring users see accurate time information, regardless of their geographical location. + +Previously, `DateTime` values were often shown in the server's timezone or in UTC, which could cause confusion for users in different timezones. With this new feature, ABP applications can now respect the configured timezone and automatically convert and display datetime values accordingly. + +**Before setting the timezone:** + +Consider a scenario where you have a list of books, and the `CreationTime` property is displayed without any timezone consideration. It may appear in the server's default timezone: + +![before.png](before.png) +*(Screenshot of a Books page showing the CreationTime in a default timezone.)* + +**Setting the timezone:** + +To set the timezone, start by configuring the `AbpClockOptions` in your module's `ConfigureServices` method: + +```csharp +Configure(options => +{ + options.Kind = DateTimeKind.Utc; +}); +``` + +> By setting the `Kind` property of `AbpClockOptions` to `DateTimeKind.Utc`, ABP will normalize all datetime values. Times stored in the database and returned to the frontend will be in UTC. Additionally, the `SupportsMultipleTimezone` property of the `IClock` service will be **true**, and you’ll be able to configure the timezone from the UI under the _Settings_ page. + +After setting the `Kind` property, you can run your application and configure the timezone from the UI under the _Settings_ page. For example, set the timezone to "Asia/Tokyo (+09:00)": + +![configure-timezone.png](configure-timezone.png) +*(Screenshot showing the configuration setting for Abp.Timing.TimeZone, set to "Asia/Tokyo (+09:00)".)* + +> ABP provides the `Abp.Timing.TimeZone` setting, which allows you to configure the desired timezone at the application, tenant, or user level and this setting can be configured in the UI under the _Settings_ page, inside of the _Time Zone_ tab. + +**After setting the timezone:** + +Once the timezone is configured, ABP automatically handles the conversion and display of `DateTime` values. The `CreationTime` on the _Books_ page will now be shown in the **"Asia/Tokyo"** timezone. + +![after.png](after.png) +*(Screenshot of the _Books_ page after setting the timezone, showing the `CreationTime` adjusted to the "Asia/Tokyo" timezone.)* + +This feature utilizes the `IClock` service, which provides methods like `ConvertToUserTime` and `ConvertToUtc` to facilitate timezone conversions. By configuring the `Abp.Timing.TimeZone` setting, developers can ensure a consistent and user-friendly experience across applications with a global user base. +> For a more detailed guide on implementing and using this feature, refer to the article: [Developing a Multi-Timezone Application Using the ABP Framework](https://abp.io/community/articles/developing-a-multitimezone-application-using-the-abp-framework-zk7fnrdq). It offers step-by-step instructions and examples for handling multi-timezone scenarios in ABP applications. + ### Identity Pro Module: Require Email Verification to Register [ABP Identity Pro module](https://abp.io/docs/9.2/modules/identity-pro) has been enhanced with a new feature that allows administrators to require email verification during the registration process. This security improvement ensures that users must verify their email addresses before their registration is considered complete. Enabling this feature is especially important for applications that want to prevent spam registrations. diff --git a/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/after.png b/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/after.png new file mode 100644 index 0000000000..f9f72302a5 Binary files /dev/null and b/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/after.png differ diff --git a/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/before.png b/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/before.png new file mode 100644 index 0000000000..14340f91ee Binary files /dev/null and b/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/before.png differ diff --git a/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/configure-timezone.png b/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/configure-timezone.png new file mode 100644 index 0000000000..d383eee6f6 Binary files /dev/null and b/docs/en/Blog-Posts/2025-03-27 v9_2_Preview/configure-timezone.png differ diff --git a/docs/en/Community-Articles/2025-04-20-IDX10204/POST.md b/docs/en/Community-Articles/2025-04-20-IDX10204/POST.md new file mode 100644 index 0000000000..5de0650d11 --- /dev/null +++ b/docs/en/Community-Articles/2025-04-20-IDX10204/POST.md @@ -0,0 +1,170 @@ +# Common Errors in JWT Bearer Authentication + +When implementing JWT Bearer authentication in an ABP(tiered) application, you might occasionally encounter errors starting with `IDX`. These errors are related to JWT Bearer Token validation and this article will help you understand and resolve them. + +## Enable JWT Bearer authentication + +Your API project usually contains the following code, which enables JWT Bearer authentication and makes it as the default authentication scheme. + +We simply configure the JWT's `Authority` and `Audience` properties, and it will work fine. + +```csharp +context.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddJwtBearer(options => + { + options.Authority = "https://localhost:44301/"; //configuration["AuthServer:Authority"]; + options.Audience = "MyProjectName"; + }); +``` + +> `AddJwtBearer` and `AddAbpJwtBearer` will do the same thing, but `AddAbpJwtBearer` is recommended. + +## JWT authentication process + +Let's take a look at how the above code works. + +A JWT Token usually consists of three parts: `Header`, `Payload`, and `Signature`. + +- `Header`: Contains the type and signing algorithm of the token +- `Payload`: Contains the claims of the token, including `sub`, `aud`, `exp`, `iat`, `iss`, `jti`, `preferred_username`, `given_name`, `role`, `email`, etc. +- `Signature`: The cryptographic signature of the token used to verify its authenticity + +Here is an example of a JWT Token issued by `AuthServer(OpenIddict)`: + +The `Header` part: + +![JWT Header](header.png) + +The `Payload` part: + +![JWT Payload](payload.png) + +### TokenValidationParameters + +In the `JwtBearerOptions`, there is a `TokenValidationParameters` property, which is used to validate the JWT Token. + +The default implementation for JWT Token validation is `JsonWebTokenHandler`, which comes from the [Microsoft.IdentityModel.JsonWebTokens](https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/) package. + +We didn't set the `TokenValidationParameters` property in the code above, so the default values below will be used: + +```csharp +//... +TokenValidationParameters.ValidateAudience = true +TokenValidationParameters.ValidAudience = "MyProjectName" +TokenValidationParameters.ValidAudiences = null + +TokenValidationParameters.ValidateIssuer = true +TokenValidationParameters.ValidIssuer = null +TokenValidationParameters.ValidIssuers = null +//... +``` + +### JWT Bearer Token Validation Process + +During JWT Bearer authentication, API website will get the token from the HTTP request and validate it. + +The `JsonWebTokenHandler` will get the `OpenID Connect` metadata from the `AuthServer`, it will be used in the validation process, the current metadata request address is: https://localhost:44301/.well-known/openid-configuration , it is a fixed address calculated from the `Authority` property. + +First, the token's Signature is verified using the public key obtained from `OpenID Connect` metadata(https://localhost:44301/.well-known/jwks). + +Then, the payload is validated. The payload is a JSON object containing essential information such as the `token type`, `expiration time`, `issuer`, and `audience` etc. + +Most of the validation problems we may encounter are payload validation failures, for example: + +#### Lifetime + +If the token in your request has expired, the validation will fail. You will see the exception information like `IDX10230` in the log. + +#### Audience + +The `ValidAudience` of `TokenValidationParameters` is `MyProjectName`, the `aud` in the payload of the token is also `MyProjectName`, if the token does not contain `aud` or the `aud` does not match, the validation will fail. You may see the exception information like `IDX10206`, `IDX10277` or `IDX10208`. + +> If the `ValidateAudience` of `TokenValidationParameters` is `false`, then the `aud` will not be validated. + +#### Issuer + +The default value of `TokenValidationParameters.ValidateIssuer` is `true`, it requires the token's payload to contain the `issuer` field, and it must match one of `TokenValidationParameters.ValidIssuer` or `TokenValidationParameters.ValidIssuers`. + +> The default value of `ValidIssuer` or `ValidIssuers` is `null`, it will use the `issuer` from the `OpenID Connect` metadata as the default value. + +1. If the token's payload does not contain the `issuer` field, you may see the error `IDX10211`. +2. If the API website cannot get the `OpenID Connect` metadata from AuthServer website, the validation will fail. You may see the error `IDX10204`, the full exception message is: `IDX10204: Unable to validate issuer. validationParameters.ValidIssuer is null or whitespace AND validationParameters.ValidIssuers is null or empty.` +3. If the `issuer` does not match, the validation will fail. You may see the error `IDX10205` in the log. + +> If the `ValidateIssuer` of `TokenValidationParameters` is `false`, then the `issuer` will not be validated. + +> Please note that `OpenIddict` will use the current HTTP request information as the value of `issuer`. If the AuthServer website is deployed behind a reverse proxy or similar deployment configurations, the `issuer` in the token may not be the value you expect. In this case, please specify it manually. + +```csharp +PreConfigure(serverBuilder => +{ + serverBuilder.SetIssuer("https://localhost:44301/"); +}); +``` + +## Troubleshooting + +To troubleshoot any `IDX` errors during JWT authentication, you can enable detailed logging by configuring the `identitymodel` logs as follows: + +```csharp +using System.Diagnostics.Tracing; +using Microsoft.IdentityModel.Logging; + +public class Program +{ + public async static Task Main(string[] args) + { + IdentityModelEventSource.ShowPII = true; + IdentityModelEventSource.Logger.LogLevel = EventLevel.Verbose; + var wilsonTextLogger = newTextWriterEventListener("Logs/identitymodel.txt"); + wilsonTextLogger.EnableEvents(IdentityModelEventSource.Logger, EventLevel.Verbose); + + //... + } +} +``` + +Additionally, you can enable `OpenIddict`'s `Verbose` logs for more detailed debugging information: + +```csharp +var loggerConfiguration = new LoggerConfiguration() + .MinimumLevel.Debug() + .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) + .MinimumLevel.Override("OpenIddict", LogEventLevel.Verbose) + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) +``` + +## Summary + +For JWT authentication, you need to pay attention to the following key points: + +1. Ensure your API website can communicate with the AuthServer properly +2. Verify that the `aud` claim in your token matches the expected audience +3. Confirm that the `issuer` claim in your token is valid and matches the configuration + +You can customize the `JwtBearerOptions`'s `TokenValidationParameters` to modify the validation rules to meet your actual needs. + +For example, if your `issuer` needs to support multiple subdomains, you can use the [Owl.TokenWildcardIssuerValidator](https://github.com/maliming/Owl.TokenWildcardIssuerValidator) library to customize the validation. + +```csharp +services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddJwtBearer(options => + { + options.Authority = "https://abp.io"; + options.Audience = "abp_io"; + + options.TokenValidationParameters.IssuerValidator = TokenWildcardIssuerValidator.IssuerValidator; + options.TokenValidationParameters.ValidIssuers = new[] + { + "https://{0}.abp.io" + }; + }); +``` + +## References + +- [Configure JWT bearer authentication in ASP.NET Core]([https://learn.microsoft.com/en-us/aspnet/core/security/authentication/jwt-auth?view=aspnetcore-8.0](https://learn.microsoft.com/en-us/aspnet/core/security/authentication/configure-jwt-bearer-authentication)) +- [OpenIddict](https://github.com/openiddict/openiddict-core) +- [IdentityModel](https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet) +- [Owl.TokenWildcardIssuerValidator](https://github.com/maliming/Owl.TokenWildcardIssuerValidator) diff --git a/docs/en/Community-Articles/2025-04-20-IDX10204/header.png b/docs/en/Community-Articles/2025-04-20-IDX10204/header.png new file mode 100644 index 0000000000..a71c9a66ff Binary files /dev/null and b/docs/en/Community-Articles/2025-04-20-IDX10204/header.png differ diff --git a/docs/en/Community-Articles/2025-04-20-IDX10204/payload.png b/docs/en/Community-Articles/2025-04-20-IDX10204/payload.png new file mode 100644 index 0000000000..a83d6e1051 Binary files /dev/null and b/docs/en/Community-Articles/2025-04-20-IDX10204/payload.png differ diff --git a/docs/en/Community-Articles/2025-04-25-AI-Comment-Summarization/POST.md b/docs/en/Community-Articles/2025-04-25-AI-Comment-Summarization/POST.md new file mode 100644 index 0000000000..f79fa21ce8 --- /dev/null +++ b/docs/en/Community-Articles/2025-04-25-AI-Comment-Summarization/POST.md @@ -0,0 +1,262 @@ +# Using Microsoft AI Extensions Library and OpenAI to Summarize User Comments + +Either you are building an e-commerce application or a simple blog, **user comments** (about your products or blog posts) **can grow rapidly**, making it harder for users to get the gist of discussions at a glance. AI is a pretty good tool to solve the problem. By using AI, you can **summarize all the user comments** and show a single paragraph to your users, so they can easily understand the overall thought of users about the product or the blog post. + +In this tutorial, we’ll walk through a real-life implementation of using AI to summarize multiple user comments in an application. I will implement the solution based on ABP's **[CMS Kit](https://abp.io/docs/latest/modules/cms-kit)** library, as it already features a **[commenting system](https://abp.io/docs/latest/modules/cms-kit/comments)** and a [demo application](https://cms-kit-demo.abpdemo.com/) that displays user comments on **[gallery images](https://cms-kit-demo.abpdemo.com/image-gallery)** (it has not a comment summary feature yet, we will implement it in this tutorial). + +## A Screenshot + +Here, an example screenshot from the application with the comment summary feature: + +![comment-example](comment-example.png) + +## Cloning the Repository + +If you want to follow the development, you can clone the [CMS Kit Demo repository](https://github.com/abpframework/cms-kit-demo) to your computer and make it running by following the instructions on the [README file](https://github.com/abpframework/cms-kit-demo?tab=readme-ov-file#cms-kit-demo). + +I suggest to you to play a little with [the application](https://cms-kit-demo.abpdemo.com/) (create a new user for yourself, add some comments to the images in the gallery), so you understand how it works. + +## Preparing the Solution for AI + +I will use [Microsoft AI Extensions Library](https://learn.microsoft.com/en-us/dotnet/ai/ai-extensions) to use the AI features. It is an abstraction library that can work with multiple AI models and tools. I will use an OpenAI model in the demo. + +The first step is to add the [Microsoft.Extensions.AI.OpenAI](http://nuget.org/packages/Microsoft.Extensions.AI.OpenAI) NuGet package to the project: + +````bash +dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease +```` + +>The Microsoft AI Extensions Library was in preview at the time when I wrote this article. If it has a stable release now, you can remove the `--prerelease` parameter for the preceding command. + +We will store the OpenAI key and model name in user secrets. So, locate the root path of the CMS Kit project (`src\CmsKitDemo` folder) and execute the following commands in order in a command-line terminal: + +````bash +dotnet user-secrets init +dotnet user-secrets set OpenAIKey +dotnet user-secrets set ModelName +```` + +For this example, you need to have an [OpenAI API Key](https://platform.openai.com/). That's all. Now, we are ready to use the AI. + +## Implementing the AI Summarization + +Let's start from the most important point of this article: Comment summarization. I will create a class named `AiCommentSummarizer` to implement the summarization work. Here, the full content of that class: + +````csharp +using System.Text; +using Microsoft.Extensions.AI; +using OpenAI; +using Volo.Abp.DependencyInjection; + +namespace CmsKitDemo.Utils; + +public class AiCommentSummarizer : ITransientDependency +{ + private readonly IConfiguration _configuration; + + public AiCommentSummarizer(IConfiguration configuration) + { + _configuration = configuration; + } + + public async Task SummarizeAsync(string[] commentTexts) + { + // Get the model and key from the configuration + var aiModel = _configuration["ModelName"]; + var apiKey = _configuration["OpenAIKey"]; + + if (aiModel.IsNullOrEmpty() || apiKey.IsNullOrEmpty()) + { + return ""; + } + + // Create the IChatClient + var client = new OpenAIClient(apiKey) + .GetChatClient(aiModel) + .AsIChatClient(); + + // Create a prompt (input for AI) + var promptBuilder = new StringBuilder(); + + promptBuilder.AppendLine( + @"There are comments from different users of our website about an image. +We want to summarize the comments into a single comment. +Return a single comment with a maximum of 512 characters. Comments are separated by a newline character and given below." + ); + promptBuilder.AppendLine(); + + foreach (var commentText in commentTexts) + { + promptBuilder.AppendLine("User comment:"); + promptBuilder.AppendLine(commentText); + promptBuilder.AppendLine(); + } + + // Submit the prompt and get the response + var response = await client.GetResponseAsync( + promptBuilder.ToString(), + new ChatOptions { MaxOutputTokens = 1024 } + ); + + return response.Text; + } +} +```` + +That class is pretty simple and already decorated with comments: + +* First, we are getting the API Key and an OpenAI model name from user secrets. I used `gpt-4.1` as the model name, but you can use another available model. +* Then we are obtaining an `IChatClient` reference for OpenAI. `IChatClient` interface is an abstraction that is provided by the [Microsoft AI Extensions Library](https://learn.microsoft.com/en-us/dotnet/ai/ai-extensions) library, so we can implement rest of the code independently from OpenAI. +* Then we continue by building a proper prompt (input) for the AI operation. +* And finally we are using the AI to generate a response (the summary). + +At this point, all the AI-related work has already been done. The rest of this article explains how to integrate that summarization feature with the [CMS Kit Demo application](https://cms-kit-demo.abpdemo.com/). + +## Adding a CommentsSummary Property to the GalleryImage Entity + +The `GalleryImage` entity is used to represent an image on [the image gallery](https://cms-kit-demo.abpdemo.com/image-gallery). I add a `CommentsSummary` property to that entity: + +````csharp +public class GalleryImage : CreationAuditedAggregateRoot +{ + public string Description { get; set; } + + public Guid CoverImageMediaId { get; set; } + + public string CommentsSummary { get; set; } // The new property is here + + //... +} +```` + +Since the CMS Kit Demo application uses Entity Framework Core, I need to add a new database schema migration and update the database: + +````bash +dotnet ef migrations add Added_Summary_To_GalleryImage +dotnet ef database update +```` + +## Updating the Summary + +Great, we have a `GalleryImage.CommentsSummary` property now. But, how will it be updated when a users adds or removes a comment for an image? To implement that; + +* We will listen all the change events for user comments (when a user adds, removes or updates a comment). +* Whenever a comment is changed, we will find the related gallery image, retrieve all the user comments for this image, use the `AiCommentSummarizer` class to summarize all the comments. +* Finally, we wil set the `GalleryImage.CommentsSummary` property with the generated summary text. + +Here, the implementation: + +````csharp +using CmsKitDemo.Entities; +using CmsKitDemo.Utils; +using Microsoft.EntityFrameworkCore; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Entities.Events; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.EventBus; +using Volo.CmsKit.Comments; + +namespace CmsKitDemo.EventHandlers; + +public class GalleryImageCommentListener : + ILocalEventHandler>, + ITransientDependency +{ + private readonly IRepository _galleryImageRepository; + private readonly IRepository _commentRepository; + private readonly AiCommentSummarizer _aiCommentSummarizer; + + public GalleryImageCommentListener( + IRepository galleryImageRepository, + IRepository commentRepository, + AiCommentSummarizer aiCommentSummarizer) + { + _galleryImageRepository = galleryImageRepository; + _commentRepository = commentRepository; + _aiCommentSummarizer = aiCommentSummarizer; + } + + public async Task HandleEventAsync(EntityChangedEventData eventData) + { + var comment = eventData.Entity; + + //Here, we only interest in comments related to image gallery items + if (comment.EntityType != CmsKitDemoConsts.ImageGalleryEntityType) + { + return; + } + + if (!Guid.TryParse(comment.EntityId, out var galleryImageId)) + { + return; + } + + // Get the related image from database + var galleryImage = await _galleryImageRepository.FindAsync(galleryImageId); + if (galleryImage == null) + { + return; + } + + // Get all the comments related to the image + var queryable = await _commentRepository.GetQueryableAsync(); + var allCommentTexts = await queryable + .Where(c => c.EntityType == CmsKitDemoConsts.ImageGalleryEntityType && + c.EntityId == comment.EntityId) + .Select(c => c.Text) + .ToArrayAsync(); + + // Update the summary of comments related to the image + if (allCommentTexts.Length <= 0) + { + galleryImage.CommentsSummary = ""; + } + else + { + galleryImage.CommentsSummary = + await _aiCommentSummarizer.SummarizeAsync(allCommentTexts); + } + + // Update the image in database + await _galleryImageRepository.UpdateAsync(galleryImage); + } +} +```` + +Let's explain that class: + +* `GalleryImageCommentListener` implements the `ILocalEventHandler>` interface. In this way, it can handle an event whenever a `Comment` [entity](https://abp.io/docs/latest/framework/architecture/domain-driven-design/entities) is changed (created, updated or deleted). We are using ABP's [local event bus](https://abp.io/docs/latest/framework/infrastructure/event-bus/local) and its [pre-defined events](https://abp.io/docs/latest/framework/infrastructure/event-bus/local#pre-built-events). +* `HandleEventAsync` is called by the ABP Framework whenever a new `Comment` is created, or an existing `Comment` is deleted or updated. +* ABP's `Comment` entity is reusable and it can be associated with any kind of objects (blog posts, images, etc). So, first we are checking if this comment is related to an image gallery item. +* Then we are getting the related `GalleryImage` entity from the database. +* And getting all comments (including the new one) from the database for this image. +* Finally, using the `AiCommentSummarizer` class to generate the summary and set the `CommentsSummary` property. + +## Show the Summary Card on the UI + +Everything is ready on the backend. Now, we can show the summary text on the user interface. To do, that, I added `CommentsSummary` property also to the `GalleryImageDto` class and used it on the `/Pages/Gallery/Detail.cshtml` view: + +````csharp +@if (!Model.Image.CommentsSummary.IsNullOrEmpty()) +{ +
+
+
Summary of the User Comments
+

@Model.Image.CommentsSummary

+
+
+} +```` + +That section renders the following card on the user interface: + +![summary-card](summary-card.png) + +## Conclusion + +In this article, I demonstrated how to use [Microsoft AI Extensions Library](https://learn.microsoft.com/en-us/dotnet/ai/ai-extensions) to work with OpenAI for summarization of multiple user comments. I reused the [ABP's CMS Kit Demo application](https://github.com/abpframework/cms-kit-demo) to show it in a more real world example. + +## Source Code + +* [Source code of the CMS Kit Demo application](https://github.com/abpframework/cms-kit-demo) +* [All the changes made for this article (as a pull request)](https://github.com/abpframework/cms-kit-demo/pull/18) \ No newline at end of file diff --git a/docs/en/Community-Articles/2025-04-25-AI-Comment-Summarization/comment-example.png b/docs/en/Community-Articles/2025-04-25-AI-Comment-Summarization/comment-example.png new file mode 100644 index 0000000000..4ac33b60f9 Binary files /dev/null and b/docs/en/Community-Articles/2025-04-25-AI-Comment-Summarization/comment-example.png differ diff --git a/docs/en/Community-Articles/2025-04-25-AI-Comment-Summarization/summary-card.png b/docs/en/Community-Articles/2025-04-25-AI-Comment-Summarization/summary-card.png new file mode 100644 index 0000000000..35151efafb Binary files /dev/null and b/docs/en/Community-Articles/2025-04-25-AI-Comment-Summarization/summary-card.png differ diff --git a/docs/en/cli/index.md b/docs/en/cli/index.md index 44cab0caa4..02521e72cb 100644 --- a/docs/en/cli/index.md +++ b/docs/en/cli/index.md @@ -342,6 +342,7 @@ Note that this command can upgrade your solution from a previous version, and al * `--solution-name` or `-sn`: Specify the solution name. Search `*.sln` files in the directory by default. * `--check-all`: Check the new version of each package separately. Default is `false`. * `--version` or `-v`: Specifies the version to use for update. If not specified, latest version is used. +* * `--leptonx-version` or `-lv`: Specifies the LeptonX version to use for update. If not specified, latest version or the version that is compatible with `--version` argument is used. ### clean diff --git a/docs/en/framework/api-development/static-csharp-clients.md b/docs/en/framework/api-development/static-csharp-clients.md index c8eaea4231..b3cf80fcfc 100644 --- a/docs/en/framework/api-development/static-csharp-clients.md +++ b/docs/en/framework/api-development/static-csharp-clients.md @@ -47,7 +47,7 @@ Implement this class in your service application. You can use [auto API controll First, add [Volo.Abp.Http.Client](https://www.nuget.org/packages/Volo.Abp.Http.Client) nuget package to your client project: ```` -Install-Package Volo.Abp.Http.Client +dotnet add package Volo.Abp.Http.Client ```` Then add `AbpHttpClientModule` dependency to your module: diff --git a/docs/en/framework/api-development/swagger.md b/docs/en/framework/api-development/swagger.md index 1699e4d0d2..fb27bcf27b 100644 --- a/docs/en/framework/api-development/swagger.md +++ b/docs/en/framework/api-development/swagger.md @@ -29,7 +29,7 @@ If you want to manually install; 1. Add the [Volo.Abp.Swashbuckle](https://www.nuget.org/packages/Volo.Abp.Swashbuckle) NuGet package to your `Web` or `HttpApi.Host` project: - `Install-Package Volo.Abp.Swashbuckle` + `dotnet add package Volo.Abp.Swashbuckle` 2. Add the `AbpSwashbuckleModule` to the dependency list of your module: diff --git a/docs/en/framework/architecture/modularity/basics.md b/docs/en/framework/architecture/modularity/basics.md index f92e6edc3b..2b3aaad214 100644 --- a/docs/en/framework/architecture/modularity/basics.md +++ b/docs/en/framework/architecture/modularity/basics.md @@ -1,7 +1,5 @@ # Modularity -## Introduction - ABP was designed to support to build fully modular applications and systems where every module may have entities, services, database integration, APIs, UI components and so on; * This document introduces the basics of the module system. diff --git a/docs/en/framework/architecture/modularity/extending/module-entity-extensions.md b/docs/en/framework/architecture/modularity/extending/module-entity-extensions.md index 8a5b50652e..ac041895d7 100644 --- a/docs/en/framework/architecture/modularity/extending/module-entity-extensions.md +++ b/docs/en/framework/architecture/modularity/extending/module-entity-extensions.md @@ -151,6 +151,17 @@ property => > Tip: Use `DefaultValueFactory` option only if the default value may change over the time (like `DateTime.Now` in this example). If it is a constant value, then use the `DefaultValue` option. +### DataTypeAttribute + +`DataTypeAttribute` is used to specify the type of the property. It is used to determine how to render the property on the user interface: + +```csharp +property => +{ + property.Attributes.Add(new DataTypeAttribute(DataType.Date)); +} +``` + ### Validation Entity extension system allows you to define validation for extension properties in a few ways. diff --git a/docs/en/framework/data/entity-framework-core/index.md b/docs/en/framework/data/entity-framework-core/index.md index 293e58daad..a50edb2d4a 100644 --- a/docs/en/framework/data/entity-framework-core/index.md +++ b/docs/en/framework/data/entity-framework-core/index.md @@ -755,7 +755,17 @@ public static class QADbContextModelCreatingExtensions > The `Object Extension` feature need the `Change Tracking`, which means you can't use the read-only repositories for the entities that have `extension properties(MapEfCoreProperty)`, Please see the [Repositories documentation](../../architecture/domain-driven-design/repositories.md) to learn the change tracking behavior. -See the "*ConfigureByConvention Method*" section above for more information. +See the **ConfigureByConvention Method** section above for more information. + +### Accessing Extra Properties(Shadow Properties) + +Extra properties stored in separate fields in the database are known as **Shadow Properties**. These properties are not defined in the entity class, but are part of the EF Core model and can be referenced in LINQ queries using the EF.Property static method + +```csharp +var query = (await GetQueryableAsync()).Where(x => EF.Property(x, "Title") == "MyTitle"); +``` + +See the [EF Core Shadow and Indexer Properties document](https://learn.microsoft.com/en-us/ef/core/modeling/shadow-properties) for more information. ## Advanced Topics diff --git a/docs/en/framework/data/entity-framework-core/postgresql.md b/docs/en/framework/data/entity-framework-core/postgresql.md index 8561e8bada..e25cc2c5fb 100644 --- a/docs/en/framework/data/entity-framework-core/postgresql.md +++ b/docs/en/framework/data/entity-framework-core/postgresql.md @@ -21,6 +21,15 @@ Find `UseSqlServer()` call in *YourProjectName*DbContextFactory.cs inside the `. > Depending on your solution structure, you may find more `UseSqlServer()` calls that needs to be changed. + +## EnableLegacyTimestampBehavior + +Please enable the `Npgsql.EnableLegacyTimestampBehavior` in `PreConfigureServices` method of your EF Core module and `DbContextFactory(IDesignTimeDbContextFactory)` class. + +`AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);` + +See https://www.npgsql.org/efcore/release-notes/6.0.html#opting-out-of-the-new-timestamp-mapping-logic + ## Change the Connection Strings PostgreSql connection strings are different than SQL Server connection strings. So, check all `appsettings.json` files in your solution and replace the connection strings inside them. See the [connectionstrings.com](https://www.connectionstrings.com/postgresql/) for details of PostgreSql connection string options. diff --git a/docs/en/framework/fundamentals/caching.md b/docs/en/framework/fundamentals/caching.md index bdef675f64..c1a720b394 100644 --- a/docs/en/framework/fundamentals/caching.md +++ b/docs/en/framework/fundamentals/caching.md @@ -270,7 +270,7 @@ Distributed cache service provides an interesting feature. Assume that you've up ### IDistributedCacheSerializer -`IDistributedCacheSerializer` service is used to serialize and deserialize the cache items. The default implementation is the `Utf8JsonDistributedCacheSerializer` class that uses `IJsonSerializer` service to convert objects to [JSON](../../json-serialization.md) and vice verse. Then it uses UTC8 encoding to convert the JSON string to a byte array which is accepted by the distributed cache. +`IDistributedCacheSerializer` service is used to serialize and deserialize the cache items. The default implementation is the `Utf8JsonDistributedCacheSerializer` class that uses `IJsonSerializer` service to convert objects to [JSON](../../json-serialization.md) and vice verse. Then it uses UTF8 encoding to convert the JSON string to a byte array which is accepted by the distributed cache. You can [replace](./dependency-injection.md) this service with your own implementation if you want to implement your own serialization logic. diff --git a/docs/en/framework/fundamentals/configuration.md b/docs/en/framework/fundamentals/configuration.md index 7611017b7e..997d347d2a 100644 --- a/docs/en/framework/fundamentals/configuration.md +++ b/docs/en/framework/fundamentals/configuration.md @@ -1,3 +1,52 @@ # Configuration -ASP.NET Core has an flexible and extensible key-value based configuration system. In fact, the configuration system is a part of Microsoft.Extensions libraries and it is independent from ASP.NET Core. That means it can be used in any type of application. See [Microsoft's documentation](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/) to learn the configuration infrastructure. ABP is 100% compatible with the configuration system. \ No newline at end of file +ASP.NET Core has an flexible and extensible key-value based configuration system. The configuration system is a part of Microsoft.Extensions libraries and it is independent from ASP.NET Core. That means it can be used in any type of application. + +See [Microsoft's documentation](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/) to learn the configuration infrastructure. ABP is 100% compatible with the configuration system. + +## Getting the Configuration + +You may need to get the `IConfiguration` service in various places in your codebase. The following section shows two common ways. + +### In Module Classes + +You typically need to get configuration while initializing your application. You can get the `IConfiguration` service using the `ServiceConfigurationContext.Configuration` property inside your [module class](../architecture/modularity/basics.md) as the following example: + +````csharp +public class MyAppModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + var connectionString = context.Configuration["ConnectionStrings:Default"]; + } +} +```` + +`context.Configuration` is a shortcut property for the `context.Services.GetConfiguration()` method. In general, prefer using `context.Configuration` for simplicity and readability when working within module classes. Use `context.Services.GetConfiguration()` in other contexts where you have an `IServiceCollection` object but do not have access to the `context.Configuration` property. (`IServiceCollection.GetConfiguration` is an extension method that can be used whenever you have an `IServiceCollection` object). + +### In Your Services + +You can directly [inject](dependency-injection.md) the `IConfiguration` service into your services: + +````csharp +public class MyService : ITransientDependency +{ + private readonly IConfiguration _configuration; + + public MyService(IConfiguration configuration) + { + _configuration = configuration; + } + + public string? GetConnectionString() + { + return _configuration["ConnectionStrings:Default"]; + } +} +```` + +## See Also + +* [Microsoft's Configuration Documentation](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/) +* [The Options Pattern](options.md) + diff --git a/docs/en/framework/fundamentals/fluent-validation.md b/docs/en/framework/fundamentals/fluent-validation.md index d3af69bae9..207cddcbd3 100644 --- a/docs/en/framework/fundamentals/fluent-validation.md +++ b/docs/en/framework/fundamentals/fluent-validation.md @@ -21,7 +21,7 @@ If you want to manually install; 1. Add the [Volo.Abp.FluentValidation](https://www.nuget.org/packages/Volo.Abp.FluentValidation) NuGet package to your project: ```` - Install-Package Volo.Abp.FluentValidation + dotnet add package Volo.Abp.FluentValidation ```` 2. Add the `AbpFluentValidationModule` to the dependency list of your module: diff --git a/docs/en/framework/fundamentals/localization.md b/docs/en/framework/fundamentals/localization.md index 61118fd742..6e8a3f678a 100644 --- a/docs/en/framework/fundamentals/localization.md +++ b/docs/en/framework/fundamentals/localization.md @@ -248,6 +248,17 @@ namespace MyProject The `L` property is also available for some other base classes like `AbpController` and `AbpPageModel`. +## Supported Languages + +You can configure the `AbpLocalizationOptions`'s `Languages` property to add the languages supported by the application. The template already sets common languages, but you can add new languages as shown below: + +```csharp +Configure(options => +{ + options.Languages.Add(new LanguageInfo("uz", "uz", "Uzbek")); +}); +``` + ## The Client Side See the following documents to learn how to reuse the same localization texts in the JavaScript side; diff --git a/docs/en/framework/infrastructure/background-jobs/hangfire.md b/docs/en/framework/infrastructure/background-jobs/hangfire.md index 396c7498b5..f5991ee19b 100644 --- a/docs/en/framework/infrastructure/background-jobs/hangfire.md +++ b/docs/en/framework/infrastructure/background-jobs/hangfire.md @@ -25,7 +25,7 @@ If you want to manually install; 1. Add the [Volo.Abp.BackgroundJobs.HangFire](https://www.nuget.org/packages/Volo.Abp.BackgroundJobs.HangFire) NuGet package to your project: ```` - Install-Package Volo.Abp.BackgroundJobs.HangFire + dotnet add package Volo.Abp.BackgroundJobs.HangFire ```` 2. Add the `AbpBackgroundJobsHangfireModule` to the dependency list of your module: @@ -84,6 +84,24 @@ After you have installed these NuGet packages, you need to configure your projec } ```` +### AbpHangfireOptions + +You can configure the [BackgroundJobServerOptions](https://api.hangfire.io/html/T_Hangfire_BackgroundJobServerOptions.htm) of `AbpHangfireOptions` to customize the server. + +````csharp +Configure(options => +{ + // If no ServerOptions is set, ABP will use the default BackgroundJobServerOptions instance. + options.ServerOptions = new BackgroundJobServerOptions + { + Queues = ["default", "alpha"], + //... other properties + }; +}); +```` + +> You don't need to call `AddHangfireServer` method, ABP will use AbpHangfireOptions's `ServerOptions` to create a server. + ### Specifying Queue You can use the [`QueueAttribute`](https://docs.hangfire.io/en/latest/background-processing/configuring-queues.html) to specify the queue: diff --git a/docs/en/framework/infrastructure/background-jobs/quartz.md b/docs/en/framework/infrastructure/background-jobs/quartz.md index 93cf5d53bf..1b18fd36ae 100644 --- a/docs/en/framework/infrastructure/background-jobs/quartz.md +++ b/docs/en/framework/infrastructure/background-jobs/quartz.md @@ -25,7 +25,7 @@ If you want to manually install; 1. Add the [Volo.Abp.BackgroundJobs.Quartz](https://www.nuget.org/packages/Volo.Abp.BackgroundJobs.Quartz) NuGet package to your project: ```` - Install-Package Volo.Abp.BackgroundJobs.Quartz + dotnet add package Volo.Abp.BackgroundJobs.Quartz ```` 2. Add the `AbpBackgroundJobsQuartzModule` to the dependency list of your module: diff --git a/docs/en/framework/infrastructure/background-workers/hangfire.md b/docs/en/framework/infrastructure/background-workers/hangfire.md index 3ccbaf35bd..7fec8be273 100644 --- a/docs/en/framework/infrastructure/background-workers/hangfire.md +++ b/docs/en/framework/infrastructure/background-workers/hangfire.md @@ -23,7 +23,7 @@ If you want to manually install; 1. Add the [Volo.Abp.BackgroundWorkers.Hangfire](https://www.nuget.org/packages/Volo.Abp.BackgroundWorkers.Hangfire) NuGet package to your project: ```` - Install-Package Volo.Abp.BackgroundWorkers.Hangfire + dotnet add package Volo.Abp.BackgroundWorkers.Hangfire ```` 2. Add the `AbpBackgroundWorkersHangfireModule` to the dependency list of your module: @@ -84,6 +84,24 @@ After you have installed these NuGet packages, you need to configure your projec } ```` +### AbpHangfireOptions + +You can configure the [BackgroundJobServerOptions](https://api.hangfire.io/html/T_Hangfire_BackgroundJobServerOptions.htm) of `AbpHangfireOptions` to customize the server. + +````csharp +Configure(options => +{ + // If no ServerOptions is set, ABP will use the default BackgroundJobServerOptions instance. + options.ServerOptions = new BackgroundJobServerOptions + { + Queues = ["default", "alpha"], + //... other properties + }; +}); +```` + +> You don't need to call `AddHangfireServer` method, ABP will use AbpHangfireOptions's `ServerOptions` to create a server. + ## Create a Background Worker `HangfireBackgroundWorkerBase` is an easy way to create a background worker. diff --git a/docs/en/framework/infrastructure/background-workers/quartz.md b/docs/en/framework/infrastructure/background-workers/quartz.md index 663fe22a7f..909371adb0 100644 --- a/docs/en/framework/infrastructure/background-workers/quartz.md +++ b/docs/en/framework/infrastructure/background-workers/quartz.md @@ -21,7 +21,7 @@ If you want to manually install; 1. Add the [Volo.Abp.BackgroundWorkers.Quartz](https://www.nuget.org/packages/Volo.Abp.BackgroundWorkers.Quartz) NuGet package to your project: ```` - Install-Package Volo.Abp.BackgroundWorkers.Quartz + dotnet add package Volo.Abp.BackgroundWorkers.Quartz ```` 2. Add the `AbpBackgroundWorkersQuartzModule` to the dependency list of your module: diff --git a/docs/en/framework/infrastructure/current-user.md b/docs/en/framework/infrastructure/current-user.md index d9082633f5..aa1974ab92 100644 --- a/docs/en/framework/infrastructure/current-user.md +++ b/docs/en/framework/infrastructure/current-user.md @@ -138,7 +138,7 @@ public class MyAppService : ApplicationService { new Claim(AbpClaimTypes.UserId, Guid.NewGuid().ToString()), new Claim(AbpClaimTypes.UserName, "john"), - new Claim("MyCustomCliam", "42") + new Claim("Claim", "42") } ) ); diff --git a/docs/en/framework/infrastructure/image-manipulation.md b/docs/en/framework/infrastructure/image-manipulation.md index 7ab8dc562e..a1ee6e1584 100644 --- a/docs/en/framework/infrastructure/image-manipulation.md +++ b/docs/en/framework/infrastructure/image-manipulation.md @@ -22,7 +22,7 @@ If you want to manually install; 1. Add the [Volo.Abp.Imaging.Abstractions](https://www.nuget.org/packages/Volo.Abp.Imaging.Abstractions) NuGet package to your project: ``` -Install-Package Volo.Abp.Imaging.Abstractions +dotnet add package Volo.Abp.Imaging.Abstractions ``` 2. Add the `AbpImagingAbstractionsModule` to the dependency list of your module: @@ -240,7 +240,7 @@ If you want to manually install; 1. Add the [Volo.Abp.Imaging.MagickNet](https://www.nuget.org/packages/Volo.Abp.Imaging.MagickNet) NuGet package to your project: ``` -Install-Package Volo.Abp.Imaging.MagickNet +dotnet add package Volo.Abp.Imaging.MagickNet ``` 2. Add `AbpImagingMagickNetModule` to your [module](../architecture/modularity/basics.md)'s dependency list: @@ -284,7 +284,7 @@ If you want to manually install; 1. Add the [Volo.Abp.Imaging.ImageSharp](https://www.nuget.org/packages/Volo.Abp.Imaging.ImageSharp) NuGet package to your project: ``` -Install-Package Volo.Abp.Imaging.ImageSharp +dotnet add package Volo.Abp.Imaging.ImageSharp ``` 2. Add `AbpImagingImageSharpModule` to your [module](../architecture/modularity/basics.md)'s dependency list: @@ -350,7 +350,7 @@ If you want to manually install; 1. Add the [Volo.Abp.Imaging.AspNetCore](https://www.nuget.org/packages/Volo.Abp.Imaging.AspNetCore) NuGet package to your project: ``` -Install-Package Volo.Abp.Imaging.AspNetCore +dotnet add package Volo.Abp.Imaging.AspNetCore ``` 2. Add `AbpImagingAspNetCoreModule` to your [module](../architecture/modularity/basics.md)'s dependency list: diff --git a/docs/en/framework/infrastructure/sms-sending.md b/docs/en/framework/infrastructure/sms-sending.md index e6bc9135e5..ef2a86445f 100644 --- a/docs/en/framework/infrastructure/sms-sending.md +++ b/docs/en/framework/infrastructure/sms-sending.md @@ -26,7 +26,7 @@ If you want to manually install; 1. Add the [Volo.Abp.Sms](https://www.nuget.org/packages/Volo.Abp.Sms) NuGet package to your project: ``` -Install-Package Volo.Abp.Sms +dotnet add package Volo.Abp.Sms ``` 2. Add the `AbpSmsModule` to the dependency list of your module: diff --git a/docs/en/framework/infrastructure/string-encryption.md b/docs/en/framework/infrastructure/string-encryption.md index 5f37f1fa99..bb398425f6 100644 --- a/docs/en/framework/infrastructure/string-encryption.md +++ b/docs/en/framework/infrastructure/string-encryption.md @@ -22,7 +22,7 @@ If you want to manually install; 1. Add the [Volo.Abp.Security](https://www.nuget.org/packages/Volo.Abp.Security) NuGet package to your project: - `Install-Package Volo.Abp.Security` + `dotnet add package Volo.Abp.Security` 2. Add the `AbpSecurityModule` to the dependency list of your module: @@ -52,11 +52,11 @@ All encryption operations are included in `IStringEncryptionService`. You can in public string Encrypt(string value) { - // To enrcypt a value + // To encrypt a value return StringEncryptionService.Encrypt(value); } - public string Decrpyt(string value) + public string Decrypt(string value) { // To decrypt a value return StringEncryptionService.Decrypt(value); @@ -122,4 +122,4 @@ Configure(opts => - **Keysize:** This constant is used to determine the keysize of the encryption algorithm. - Default value: `256` \ No newline at end of file + Default value: `256` diff --git a/docs/en/framework/infrastructure/text-templating/razor.md b/docs/en/framework/infrastructure/text-templating/razor.md index 1d17d4337e..77db5467aa 100644 --- a/docs/en/framework/infrastructure/text-templating/razor.md +++ b/docs/en/framework/infrastructure/text-templating/razor.md @@ -25,7 +25,7 @@ If you want to manually install; 1. Add the [Volo.Abp.TextTemplating.Razor](https://www.nuget.org/packages/Volo.Abp.TextTemplating.Razor) NuGet package to your project: ```` -Install-Package Volo.Abp.TextTemplating.Razor +dotnet add package Volo.Abp.TextTemplating.Razor ```` 2. Add the `AbpTextTemplatingRazorModule` to the dependency list of your module: diff --git a/docs/en/framework/infrastructure/text-templating/scriban.md b/docs/en/framework/infrastructure/text-templating/scriban.md index bd54914411..99d160ce85 100644 --- a/docs/en/framework/infrastructure/text-templating/scriban.md +++ b/docs/en/framework/infrastructure/text-templating/scriban.md @@ -19,7 +19,7 @@ If you want to manually install; 1. Add the [Volo.Abp.TextTemplating.Scriban](https://www.nuget.org/packages/Volo.Abp.TextTemplating.Scriban) NuGet package to your project: ```` -Install-Package Volo.Abp.TextTemplating.Scriban +dotnet add package Volo.Abp.TextTemplating.Scriban ```` 2. Add the `AbpTextTemplatingScribanModule` to the dependency list of your module: diff --git a/docs/en/framework/real-time/signalr.md b/docs/en/framework/real-time/signalr.md index d6cbbfbada..2d2710c77d 100644 --- a/docs/en/framework/real-time/signalr.md +++ b/docs/en/framework/real-time/signalr.md @@ -27,7 +27,7 @@ If you want to manually install; 1. Add the [Volo.Abp.AspNetCore.SignalR](https://www.nuget.org/packages/Volo.Abp.AspNetCore.SignalR) NuGet package to your project: ``` - Install-Package Volo.Abp.AspNetCore.SignalR + dotnet add package Volo.Abp.AspNetCore.SignalR ``` Or use the Visual Studio NuGet package management UI to install it. diff --git a/docs/en/framework/ui/maui/index.md b/docs/en/framework/ui/maui/index.md index 573278a060..28f74aa6a3 100644 --- a/docs/en/framework/ui/maui/index.md +++ b/docs/en/framework/ui/maui/index.md @@ -37,10 +37,15 @@ Open a command line terminal and run the `adb reverse` command to expose a port `adb reverse tcp:44305 tcp:44305` -> You should replace "44305" with the real port. -> You should run the command after starting the emulator. +> Replace `44305` with the port number your backend application is running on. +> +> Run this command **after** the Android emulator has started. -> If you don't have a separate installation of Android Debug Bridge, you can open it from **Visual Studio** by following toolbar menu `Tools` > `Android` > `Android Adb Command Prompt`. Android emulator has to be running for this operation. +> [!IMPORTANT] +> If your project uses a **tiered** or **microservice** architecture, ensure that both the **auth server** and all **remote service ports** are properly proxied using the `adb reverse` command. You can find all the required remote service ports and AuthServer configurations in your `YourProjectName.Maui/appsettings.json` file. + +> [!NOTE] +> If you don't have a separate installation of **Android Debug Bridge** _(adb)_, you can open it from **Visual Studio** by following toolbar menu `Tools` > `Android` > `Android Adb Command Prompt`. Android emulator has to be running for this operation. ### iOS diff --git a/docs/en/framework/ui/mvc-razor-pages/customization-user-interface.md b/docs/en/framework/ui/mvc-razor-pages/customization-user-interface.md index bc3b7d8fc2..c279f685c0 100644 --- a/docs/en/framework/ui/mvc-razor-pages/customization-user-interface.md +++ b/docs/en/framework/ui/mvc-razor-pages/customization-user-interface.md @@ -89,7 +89,10 @@ This example overrides the **login page** defined by the [Account Module](../../ Create a page model class deriving from the ` LoginModel ` (defined in the ` Volo.Abp.Account.Web.Pages.Account ` namespace): +> If you are using the `AbpAccountWebOpenIddictModule` or `AbpAccountPublicWebOpenIddictModule`, the base class is `OpenIddictSupportedLoginModel` instead of `LoginModel`. And you should change the `ExposeServices` attribute to `[ExposeServices(typeof (MyLoginModel), typeof(OpenIddictSupportedLoginModel), typeof(LoginModel))]` + ````csharp +[ExposeServices(typeof (MyLoginModel), typeof(LoginModel))] public class MyLoginModel : LoginModel { public MyLoginModel( @@ -114,8 +117,6 @@ public class MyLoginModel : LoginModel You can override any method or add new properties/methods if needed. -> Notice that we didn't use `[Dependency(ReplaceServices = true)]` or `[ExposeServices(typeof(LoginModel))]` since we don't want to replace the existing class in the dependency injection, we define a new one. - Copy `Login.cshtml` file into your solution as just described above. Change the **@model** directive to point to the `MyLoginModel`: ````xml diff --git a/docs/en/get-started/empty-aspnet-core-application.md b/docs/en/get-started/empty-aspnet-core-application.md index b0457db71b..95861719ce 100644 --- a/docs/en/get-started/empty-aspnet-core-application.md +++ b/docs/en/get-started/empty-aspnet-core-application.md @@ -104,7 +104,7 @@ Replacing ASP.NET Core's DI system by Autofac and integrating to ABP is pretty e 1. Install [Volo.Abp.Autofac](https://www.nuget.org/packages/Volo.Abp.Autofac) package ```` -Install-Package Volo.Abp.Autofac +dotnet add package Volo.Abp.Autofac ```` 2. Add the ``AbpAutofacModule`` Dependency diff --git a/docs/en/images/samples-cms-kit.png b/docs/en/images/samples-cms-kit.png new file mode 100644 index 0000000000..0c4e3e5877 Binary files /dev/null and b/docs/en/images/samples-cms-kit.png differ diff --git a/docs/en/images/samples-easycrm.png b/docs/en/images/samples-easycrm.png new file mode 100644 index 0000000000..72924ae3e7 Binary files /dev/null and b/docs/en/images/samples-easycrm.png differ diff --git a/docs/en/images/samples-eshoponabp.png b/docs/en/images/samples-eshoponabp.png new file mode 100644 index 0000000000..f8e22fff7d Binary files /dev/null and b/docs/en/images/samples-eshoponabp.png differ diff --git a/docs/en/images/samples-eventhub.png b/docs/en/images/samples-eventhub.png new file mode 100644 index 0000000000..548412d62c Binary files /dev/null and b/docs/en/images/samples-eventhub.png differ diff --git a/docs/en/modules/cms-kit-pro/url-forwarding.md b/docs/en/modules/cms-kit-pro/url-forwarding.md index a059ef1305..10ca0a7f98 100644 --- a/docs/en/modules/cms-kit-pro/url-forwarding.md +++ b/docs/en/modules/cms-kit-pro/url-forwarding.md @@ -37,6 +37,20 @@ You can create new forwardings or update/delete existing ones, in the admin side ![url-forwarding-page](../../images/url-forwarding-page.png) + +## Options + +### ShortenedUrlCacheOptions + +`ShortenedUrlCacheOptions` is used to configure the cache settings for the URL forwarding system. Example: + +```csharp +Configure(options => +{ + options.CacheAllOnStartup = true; // Cache all shortened URLs on startup +}); +``` + # Internals ## Domain Layer diff --git a/docs/en/modules/docs.md b/docs/en/modules/docs.md index 69de3362a6..b564980ba3 100644 --- a/docs/en/modules/docs.md +++ b/docs/en/modules/docs.md @@ -73,25 +73,25 @@ Or you can also manually install nuget package to each project: * Install [Volo.Docs.Domain](https://www.nuget.org/packages/Volo.Docs.Domain/) nuget package to `Acme.MyProject.Domain` project. ```bash - Install-Package Volo.Docs.Domain + dotnet add package Volo.Docs.Domain ``` * Install [Volo.Docs.EntityFrameworkCore](https://www.nuget.org/packages/Volo.Docs.EntityFrameworkCore/) nuget package to `Acme.MyProject.EntityFrameworkCore` project. ```bash - Install-Package Volo.Docs.EntityFrameworkCore + dotnet add package Volo.Docs.EntityFrameworkCore ``` * Install [Volo.Docs.Application](https://www.nuget.org/packages/Volo.Docs.Application/) nuget package to `Acme.MyProject.Application` project. ```bash - Install-Package Volo.Docs.Application + dotnet add package Volo.Docs.Application ``` * Install [Volo.Docs.Web](https://www.nuget.org/packages/Volo.Docs.Domain/) nuget package to `Acme.MyProject.Web` project. ```bash - Install-Package Volo.Docs.Web + dotnet add package Volo.Docs.Web ``` ##### 3.2.1- Adding Module Dependencies diff --git a/docs/en/modules/gdpr.md b/docs/en/modules/gdpr.md index c94fcbb4a0..bef763a41a 100644 --- a/docs/en/modules/gdpr.md +++ b/docs/en/modules/gdpr.md @@ -260,9 +260,11 @@ If you want to override the texts in the Cookie Consent component, you just need > Refer to the [Localization documentation](../framework/fundamentals/localization.md) for more info about defining localization resources and overriding existing localization entries that comes from pre-built modules. -### Configuring the Cookie Consent +### Configuring Cookie Consent -You can add Cookie Consent to your application by configuring the `AddAbpCookieConsent` in your module class as below: +To enable cookie consent in your application, follow these two steps: + +**1. Configure the service in your module class (inside the `ConfigureServices` method):** ```csharp context.Services.AddAbpCookieConsent(options => @@ -273,4 +275,23 @@ context.Services.AddAbpCookieConsent(options => }); ``` -After configuring the `AddAbpCookieConsent` and setting it enabled, a cookie consent text will be prepared according to the options and a cookie consent banner will be seen at the bottom of the page. Thus, the users of the application will be informed about the Cookie Policy and Privacy Policy of the company/application. +**2. Add the middleware (`UseAbpCookieConsent`) to the request pipeline (in the `OnApplicationInitialization` method):** + +```diff +public override void OnApplicationInitialization(ApplicationInitializationContenxt context) +{ + var app = context.GetApplicationBuilder(); + //... + ++ app.UseAbpCookieConsent(); + app.UseCorrelationId(); + app.UseRouting(); + app.MapAbpStaticAssets(); + app.UseAbpSecurityHeaders(); + app.UseAuthentication(); + + //... +} +``` + +Once configured, a cookie consent banner will be shown at the bottom of the page. It includes links to your _Cookie Policy_ and _Privacy Policy_, helping inform users and support GDPR compliance. diff --git a/docs/en/modules/language-management.md b/docs/en/modules/language-management.md index 77490f28ef..3bce0d46b0 100644 --- a/docs/en/modules/language-management.md +++ b/docs/en/modules/language-management.md @@ -62,7 +62,7 @@ This module adds some initial data (see [the data seed system](../framework/infr * Creates language records configured using `AbpLocalizationOptions`. -If you want to change the seeded language list, see the next section. +If you want to change the seeded language list, see the [Localization](../framework/fundamentals/localization.md#Supported-Languages) document. ## Internals diff --git a/docs/en/modules/virtual-file-explorer.md b/docs/en/modules/virtual-file-explorer.md index 21bccfd999..3157198c30 100644 --- a/docs/en/modules/virtual-file-explorer.md +++ b/docs/en/modules/virtual-file-explorer.md @@ -24,7 +24,7 @@ Or you can also manually install nuget package to `Acme.MyProject.Web` project: * Install [Volo.Abp.VirtualFileExplorer.Web](https://www.nuget.org/packages/Volo.Abp.VirtualFileExplorer.Web/) nuget package to `Acme.MyProject.Web` project. - `Install-Package Volo.Abp.VirtualFileExplorer.Web` + `dotnet add package Volo.Abp.VirtualFileExplorer.Web` ##### 2.1- Adding Module Dependencies diff --git a/docs/en/release-info/migration-guides/abp-8-2.md b/docs/en/release-info/migration-guides/abp-8-2.md index 15de922d4f..5f811da2d4 100644 --- a/docs/en/release-info/migration-guides/abp-8-2.md +++ b/docs/en/release-info/migration-guides/abp-8-2.md @@ -28,6 +28,7 @@ With this version on, ABP Framework allows you to use single blog mode, without * `Volo.Blogging.Pages.Members` -> `Volo.Blogging.Pages.Blogs.Members` (members folder) > If you haven't overridden the pages above, then you don't need to make any additional changes. See [#19418](https://github.com/abpframework/abp/pull/19418) for more information. + ## Removed `FlagIcon` property from the `ILanguageInfo` The `FlagIcon` property has been removed from the `ILanguageInfo` interface since we removed the flag icon library in the earlier versions from all of our themes and none of them using it now. @@ -57,11 +58,20 @@ In this version, the Angular UI has been updated to use the Angular version 17.3 The **Session Management** feature allows you to prevent concurrent login and manage user sessions. -In this version, a new entity called `IdentitySession` has been added to the framework and you should create a new migration and apply it to your database. +In this version, a new entity called `IdentitySession` has been added to the framework and you need to add new `DbSet` to your `DbContext` class if it implements `IIdentityDbContext` interface. + +```csharp +public class YourDbContext : AbpDbContext, IIdentityDbContext +{ + public DbSet Sessions { get; set; } +} +``` + +You should also create a new migration and apply it to your database. ## Upgraded NuGet Dependencies -You can see the following list of NuGet libraries that have been upgraded with this release, if you are using one of these packages explicitly, you may consider upgrading them in your solution: +You can see the following list of NuGet libraries that have been upgraded with this release, **if you are using one of these packages explicitly**, you may consider upgrading them in your solution, especially **Microsoft.IdentityModel.*** packages: | Package | Old Version | New Version | | ---------------------------------------------------------- | ----------- | ----------- | diff --git a/docs/en/release-info/release-notes.md b/docs/en/release-info/release-notes.md index 166dd03fc4..4c6bec206e 100644 --- a/docs/en/release-info/release-notes.md +++ b/docs/en/release-info/release-notes.md @@ -1,8 +1,12 @@ # Release Notes -This document contains **brief release notes** for each release. Release notes only include **major features** and **visible enhancements**. They don't include all the development done in the related version. To see raw and detailed change logs for every release, please check the related milestone and [the change logs page](https://abp.io/pro-releases) (only for paid license holders). +This document contains **brief release notes** for each release. Release notes only include **major features** and **visible enhancements**. They don't include all the development done in the related version. + +Also see the following notes about ABP releases: + +* [ABP Studio release notes](../studio/release-notes.md) +* [Change logs for ABP pro packages](https://abp.io/pro-releases) -> If you want to read the release notes for each ABP Studio release, check it out from [here](../studio/release-notes.md). ## 9.2 (2025-03-25) @@ -15,7 +19,7 @@ This is currently a RC (release-candidate) and you can see the detailed **[blog * Identity Pro Module: Require Email Verification to Register * Switching users during OAuth login -## 9.1 (2025-01-16) +## 9.1 (2025-03-05) See the detailed **[blog post / announcement](https://abp.io/community/articles/abp.io-platform-9.1-final-has-been-released-h96a56qa)** for the v9.1 release. diff --git a/docs/en/samples/index.md b/docs/en/samples/index.md index 6aea3d3fa5..39512d0134 100644 --- a/docs/en/samples/index.md +++ b/docs/en/samples/index.md @@ -9,6 +9,8 @@ A reference application built with ABP. It implements the Domain Driven Design w * [Live demo](https://www.openeventhub.com/) * [Source code](https://github.com/abpframework/eventhub) +![samples-event-hub](../images/samples-eventhub.png) + ## eShopOnAbp > ⚠️ **Important Notice** @@ -18,6 +20,8 @@ Reference microservice solution built with ABP and .NET. * [Source code](https://github.com/abpframework/eShopOnAbp) +![eshoponabp](../images/samples-eshoponabp.png) + ## CMS Kit Demo A minimal example website built with the [CMS Kit module](../modules/cms-kit/index.md). @@ -25,6 +29,8 @@ A minimal example website built with the [CMS Kit module](../modules/cms-kit/ind * [Live demo](https://cms-kit-demo.abpdemo.com/) * [Source code](https://github.com/abpframework/cms-kit-demo) +![samples-cms-kit](../images/samples-cms-kit.png) + ## Easy CRM A middle-size CRM application built with ABP. @@ -32,6 +38,8 @@ A middle-size CRM application built with ABP. * [Live demo](http://easycrm.abp.io/) * [Click here](easy-crm.md) to see the details and download the source code. +![samples-easy-crm](../images/samples-easycrm.png) + ## Book Store A simple CRUD application to show basic principles of developing an application with ABP. The same sample was implemented with different technologies and different modules: diff --git a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step3-deployment-github-action.md b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step3-deployment-github-action.md index a9ec807c64..14f2a48d66 100644 --- a/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step3-deployment-github-action.md +++ b/docs/en/solution-templates/layered-web-application/deployment/azure-deployment/step3-deployment-github-action.md @@ -480,7 +480,7 @@ push: workflow_dispatch: jobs: -build: + build: runs-on: ubuntu-latest steps: diff --git a/docs/en/solution-templates/layered-web-application/deployment/deployment-iis.md b/docs/en/solution-templates/layered-web-application/deployment/deployment-iis.md index 3d33cbd7a1..0de00c8d35 100644 --- a/docs/en/solution-templates/layered-web-application/deployment/deployment-iis.md +++ b/docs/en/solution-templates/layered-web-application/deployment/deployment-iis.md @@ -283,6 +283,34 @@ See: - https://learn.microsoft.com/en-us/aspnet/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications#resolve-http-405-errors - https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/iis/site-behavior-performance/http-error-405-website#resolution-for-cause-3 +## Publish the Application(s) as IIS sub-application + +If your MVC application is a sub-application, you need to set the `BaseUrl` property of `AbpThemingOptions` to the sub-application’s path. The `BaseUrl` is used to configure the `base` element in the `head` section of the layout page. + +```csharp +public void ConfigureServices(IServiceCollection services) +{ + Configure(options => + { + options.BaseUrl = "/myapp/"; + }); +} +``` + +```html + + + + ... + + + ... + + +``` + +For Blazor applications, you can to set the `base` tag in the `App.razor` file instead of configure `AbpThemingOptions`. + ## How to get stdout-log If your application is running on IIS and getting errors like `502.5, 500.3x`, you can enable stdout logs to see the error details. diff --git a/docs/en/tutorials/microservice/part-06.md b/docs/en/tutorials/microservice/part-06.md index 18db56cc0b..1cc19bf6d8 100644 --- a/docs/en/tutorials/microservice/part-06.md +++ b/docs/en/tutorials/microservice/part-06.md @@ -107,9 +107,9 @@ public class ProductIntegrationService : ApplicationService, IProductIntegration Now that we have created the `IProductIntegrationService` interface and the `ProductIntegrationService` class, we can consume this service from the Ordering service. -### Adding a Reference to the `CloudCrm.CatalogService.Contracts` Package +### Adding a Reference to the `CloudCrm.OrderingService` Package -First, we need to add a reference to the `CloudCrm.CatalogService.Contracts` package in the Ordering service. Open the ABP Studio, and stop the application(s) if it is running. Then, open the *Solution Explorer* and right-click on the `CloudCrm.OrderingService` package. Select *Add* -> *Package Reference* command: +First, we need to add a reference to the `CloudCrm.OrderingService` package in the Ordering service. Open the ABP Studio, and stop the application(s) if it is running. Then, open the *Solution Explorer* and right-click on the `CloudCrm.OrderingService` package. Select *Add* -> *Package Reference* command: ![add-package-reference-ordering-service](images/add-package-reference-ordering-service.png) diff --git a/docs/en/tutorials/modular-crm/part-03.md b/docs/en/tutorials/modular-crm/part-03.md index 2dabfc54eb..38c6553fa3 100644 --- a/docs/en/tutorials/modular-crm/part-03.md +++ b/docs/en/tutorials/modular-crm/part-03.md @@ -436,7 +436,7 @@ Open the `ModularCrm.Products` .NET solution in your IDE, and find the `Pages/Pr ![visual-studio-products-cshtml](images/visual-studio-products-cshtml.png) -Replace the `IndexModel.cshtml.cs` file with the following content: +Replace the `Index.cshtml.cs` file with the following content: ````csharp using System.Collections.Generic; diff --git a/docs/en/tutorials/modular-crm/part-06.md b/docs/en/tutorials/modular-crm/part-06.md index f06baa93f0..d2820c6bdc 100644 --- a/docs/en/tutorials/modular-crm/part-06.md +++ b/docs/en/tutorials/modular-crm/part-06.md @@ -256,7 +256,7 @@ Let's see what we've changed: * In the last line, we are converting the product list to a dictionary, where the key is `Guid Id` and the value is `string Name`. That way, we can easily find a product's name with its ID. * Finally, we are mapping the orders to `OrderDto` objects and setting the product name by looking up the product ID in the dictionary. -Open the `Index.cshtml` file, and change the `@order.ProductId` part by `@Model.ProductName` to write the product name instead of the product ID. The final `Index.cshtml` content should be the following: +Open the `Index.cshtml` file, and change the `@order.ProductId` part by `@Order.ProductName` to write the product name instead of the product ID. The final `Index.cshtml` content should be the following: ````html @page diff --git a/docs/en/tutorials/todo/layered/index.md b/docs/en/tutorials/todo/layered/index.md index e6e310a39a..86a480ad42 100644 --- a/docs/en/tutorials/todo/layered/index.md +++ b/docs/en/tutorials/todo/layered/index.md @@ -528,7 +528,7 @@ The interesting part here is how we communicate with the server. See the *Dynami ### Index.css -As the final touch, Create a file named `Index.css` in the `Pages` folder of the *TodoApp.Web* project and replace it with the following content: +As the final touch, Create a file named `Index.css` in the `Pages` folder of the *TodoApp.Web* project and add the following content: ```css #TodoList{ @@ -664,7 +664,7 @@ Open the `Index.razor` file in the `Pages` folder of the {{if UI=="Blazor" || UI ### Index.razor.css -As the final touch, open the `Index.razor.css` file in the `Pages` folder of the {{if UI=="Blazor" || UI=="BlazorWebApp"}}*TodoApp.Blazor.Client*{{else if UI=="BlazorServer"}} *TodoApp.Blazor* {{else if UI=="MAUIBlazor"}} *TodoApp.MauiBlazor* {{end}} project and replace it with the following content: +As the final touch, open the `Index.razor.css` file in the `Pages` folder of the {{if UI=="Blazor" || UI=="BlazorWebApp"}}*TodoApp.Blazor.Client*{{else if UI=="BlazorServer"}} *TodoApp.Blazor* {{else if UI=="MAUIBlazor"}} *TodoApp.MauiBlazor* {{end}} project and add the following content: ```css #TodoList{ @@ -827,7 +827,7 @@ Open the `/angular/src/app/home/home.component.html` file and replace its conten ### home.component.scss -As the final touch, open the `/angular/src/app/home/home.component.scss` file and replace its content with the following code block: +As the final touch, open the `/angular/src/app/home/home.component.scss` file and add the following code block: ```css #TodoList{ diff --git a/docs/en/tutorials/todo/single-layer/index.md b/docs/en/tutorials/todo/single-layer/index.md index dc865a0a75..6ce5bec5b0 100644 --- a/docs/en/tutorials/todo/single-layer/index.md +++ b/docs/en/tutorials/todo/single-layer/index.md @@ -309,10 +309,8 @@ public interface ITodoAppService : IApplicationService Create a `TodoAppService` class under the `Services` folder of {{if UI=="Blazor"}}your `TodoApp.Host` project{{else}}your project{{end}}, as shown below: ```csharp -using TodoApp.Services; using TodoApp.Services.Dtos; using TodoApp.Entities; -using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; namespace TodoApp.Services; @@ -517,7 +515,7 @@ The interesting part here is how we communicate with the server. See the *Dynami ### Index.cshtml.css -As for the final touch, open the `Index.cshtml.css` file in the `Pages` folder and replace with the following content: +As for the final touch, open the `Index.cshtml.css` file in the `Pages` folder and add the following code block at the end of the file: ````css #TodoList{ @@ -655,7 +653,7 @@ Open the `Index.razor` file in the `Pages` folder and replace the content with t ### Index.razor.css -As the final touch, open the `Index.razor.css` file in the `Pages` folder and replace it with the following content: +As the final touch, open the `Index.razor.css` file in the `Pages` folder and add the following code block at the end of the file: ````css #TodoList{ @@ -801,7 +799,7 @@ Open the `/angular/src/app/home/home.component.html` file and replace its conten ### home.component.scss -As the final touch, open the `/angular/src/app/home/home.component.scss` file and replace its content with the following code block: +As the final touch, open the `/angular/src/app/home/home.component.scss` file and add the following code block at the end of the file: ````css #TodoList{ diff --git a/docs/en/ui-themes/lepton-x/blazor.md b/docs/en/ui-themes/lepton-x/blazor.md index 5e49752ebb..2287b5aeac 100644 --- a/docs/en/ui-themes/lepton-x/blazor.md +++ b/docs/en/ui-themes/lepton-x/blazor.md @@ -347,8 +347,43 @@ namespace LeptonX.DemoApp.Blazor.MyComponents > Don't forget to remove repeated attributes from the razor page! ---- +#### Customizing the Footer Section + +You can add a new `LeptonXFooter.razor` file and override the `Footer` component as follows: + +```cs +@using Volo.Abp.DependencyInjection +@using Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components.ApplicationLayout.SideMenu + +@inherits Footer +@attribute [ExposeServices(typeof(Footer))] +@attribute [Dependency(ReplaceServices = true)] + +
+
+ + +
+
+``` + +If you are using **Top Menu Layout**, then you can change the namespace as follows: + +```diff +- @using Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components.ApplicationLayout.SideMenu ++ @using Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components.ApplicationLayout.TopMenu +``` +> You can use the same approach customize the other components always. ## Common Components diff --git a/docs/en/ui-themes/lepton-x/images/account-layout-background-style.png b/docs/en/ui-themes/lepton-x/images/account-layout-background-style.png new file mode 100644 index 0000000000..5b2f32661d Binary files /dev/null and b/docs/en/ui-themes/lepton-x/images/account-layout-background-style.png differ diff --git a/docs/en/ui-themes/lepton-x/images/leptonx-mvc-customizing-footer.png b/docs/en/ui-themes/lepton-x/images/leptonx-mvc-customizing-footer.png new file mode 100644 index 0000000000..06721044b8 Binary files /dev/null and b/docs/en/ui-themes/lepton-x/images/leptonx-mvc-customizing-footer.png differ diff --git a/docs/en/ui-themes/lepton-x/mvc.md b/docs/en/ui-themes/lepton-x/mvc.md index ce12a0ea95..e41d12a331 100644 --- a/docs/en/ui-themes/lepton-x/mvc.md +++ b/docs/en/ui-themes/lepton-x/mvc.md @@ -47,7 +47,8 @@ Before starting to customize the theme, you can consider downloading the source --- ### Appearance -You can set a default theme, add or remove appearance styles by using **LeptonXThemeOptions**. + +You can set a default theme, add or remove appearance styles and layout background styles by using **LeptonXThemeOptions**. - `DefaultStyle`: Defines the default fallback theme. The default value is **Dim** @@ -133,15 +134,26 @@ Layout options of the MVC Razor Pages UI can be manageable by using **LeptonXThe - `MobileMenuSelector`: Defines items to be displayed at the mobile menu. The default value is the first 2 items from the main menu items. + ```csharp + Configure(options => + { + options.MobileMenuSelector = items => items.Where(x => x.MenuItem.Name == "MyProjectName.Home" || x.MenuItem.Name == "MyProjectName.Dashboard"); + }); + ``` + ![leptonx-mobile-menu-preview](images/mobile-menu-preview.png) +- `AccountLayoutBackgroundStyle`: Defines the background style of the account layout. + ```csharp Configure(options => { - options.MobileMenuSelector = items => items.Where(x => x.MenuItem.Name == "MyProjectName.Home" || x.MenuItem.Name == "MyProjectName.Dashboard"); + options.AccountLayoutBackgroundStyle = "background-image: url('/images/login-background-image.svg') !important;"; }); ``` + ![leptonx-account-layout-background-style](images/account-layout-background-style.png) + ### Layouts **LeptonX** offers two **ready-made layouts** for your web application. One of them is **placed** with the **menu items** on the **top** and the other with the **menu items** on the **sides**. @@ -162,6 +174,22 @@ Layout options of the MVC Razor Pages UI can be manageable by using **LeptonXThe > - **_Sidebar.cshtml** > - **_Toolbar.cshtml** +#### Customizing the Footer Section + +Add the **_Footer.cshtml** file under the **Themes/LeptonX/Layouts/Application** folder to customize the footer: + +```html + +```` + +![Customizing Footer](images/leptonx-mvc-customizing-footer.png) + +> You can customize the **_Sidebar.cshtml** and **_Toolbar.cshtml** files as well. + ### Account Layout ![Account layout](images/leptonx-account-layout-new.png) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs index 30a69f8d74..74481c9bbd 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs @@ -111,8 +111,7 @@ public partial class PageHeader : ComponentBase, IDisposable public void Dispose() { - PageLayout.ToolbarItems.Clear(); - PageLayout.BreadcrumbItems.Clear(); + PageLayout.Reset(); ToolbarItemRenders.Clear(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageLayout.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageLayout.cs index 077ca5b32c..fc7d372b37 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageLayout.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageLayout.cs @@ -41,4 +41,12 @@ public class PageLayout : IScopedDependency, INotifyPropertyChanged { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } + + public void Reset() + { + Title = string.Empty; + MenuItemName = string.Empty; + BreadcrumbItems.Clear(); + ToolbarItems.Clear(); + } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Theming/DefaultThemeManager.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Theming/DefaultThemeManager.cs index 5abd114f83..76c7bbf556 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Theming/DefaultThemeManager.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Theming/DefaultThemeManager.cs @@ -29,6 +29,6 @@ public class DefaultThemeManager : IThemeManager, IScopedDependency, IServicePro } _currentTheme = (ITheme)ServiceProvider.GetRequiredService(ThemeSelector.GetCurrentThemeInfo().ThemeType); - return CurrentTheme; + return _currentTheme; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpBlazorWebAppServiceCollectionExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpBlazorWebAppServiceCollectionExtensions.cs index 1bcc1c1f45..2027ac1e69 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpBlazorWebAppServiceCollectionExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpBlazorWebAppServiceCollectionExtensions.cs @@ -1,3 +1,4 @@ +using System; using JetBrains.Annotations; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.Extensions.DependencyInjection.Extensions; @@ -19,10 +20,14 @@ public static class AbpBlazorWebAppServiceCollectionExtensions return services; } + [Obsolete("Use AddBlazorWebAppServices instead. See https://github.com/abpframework/abp/issues/22622")] public static IServiceCollection AddBlazorWebAppTieredServices([NotNull] this IServiceCollection services) { Check.NotNull(services, nameof(services)); + // Compatibility with old template code + services.AddTransient(); + services.AddScoped(); services.Replace(ServiceDescriptor.Singleton()); diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebApp/RemoteAuthenticationStateProvider.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebApp/RemoteAuthenticationStateProvider.cs index b35960f071..d3f05820b0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebApp/RemoteAuthenticationStateProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebApp/RemoteAuthenticationStateProvider.cs @@ -1,5 +1,7 @@ +using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Security.Claims; namespace Volo.Abp.AspNetCore.Components.WebAssembly.WebApp; @@ -8,21 +10,26 @@ public class RemoteAuthenticationStateProvider : AuthenticationStateProvider { protected ICurrentPrincipalAccessor CurrentPrincipalAccessor { get; } protected WebAssemblyCachedApplicationConfigurationClient WebAssemblyCachedApplicationConfigurationClient { get; } + protected IServiceProvider ServiceProvider { get; } public RemoteAuthenticationStateProvider( ICurrentPrincipalAccessor currentPrincipalAccessor, - WebAssemblyCachedApplicationConfigurationClient webAssemblyCachedApplicationConfigurationClient) + WebAssemblyCachedApplicationConfigurationClient webAssemblyCachedApplicationConfigurationClient, + IServiceProvider serviceProvider) { CurrentPrincipalAccessor = currentPrincipalAccessor; WebAssemblyCachedApplicationConfigurationClient = webAssemblyCachedApplicationConfigurationClient; + ServiceProvider = serviceProvider; } public async override Task GetAuthenticationStateAsync() { - if (CurrentPrincipalAccessor.Principal.Identity == null || - !CurrentPrincipalAccessor.Principal.Identity.IsAuthenticated) + if (ServiceProvider.GetService() != null) { - await WebAssemblyCachedApplicationConfigurationClient.InitializeAsync(); + if (CurrentPrincipalAccessor.Principal.Identity == null || !CurrentPrincipalAccessor.Principal.Identity.IsAuthenticated) + { + await WebAssemblyCachedApplicationConfigurationClient.InitializeAsync(); + } } return new AuthenticationState(CurrentPrincipalAccessor.Principal); diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebApp/RemoteAuthenticationStateProviderCompatible.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebApp/RemoteAuthenticationStateProviderCompatible.cs new file mode 100644 index 0000000000..780f96c631 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebApp/RemoteAuthenticationStateProviderCompatible.cs @@ -0,0 +1,8 @@ +namespace Volo.Abp.AspNetCore.Components.WebAssembly.WebApp; + +/// +/// This class is used to indicate that the AddBlazorWebAppTieredServices method has been called for compatibility with the old template code +/// +internal sealed class AddBlazorWebAppTieredServicesHasBeenCalled +{ +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs index aa80a5c3b0..acb792d454 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs @@ -73,8 +73,6 @@ public class WebAssemblyCachedApplicationConfigurationClient : ICachedApplicatio await JSRuntime.InvokeVoidAsync("abp.utils.removeOidcUser"); } - ApplicationConfigurationChangedService.NotifyChanged(); - CurrentTenantAccessor.Current = new BasicTenantInfo( configurationDto.CurrentTenant.Id, configurationDto.CurrentTenant.Name @@ -88,6 +86,8 @@ public class WebAssemblyCachedApplicationConfigurationClient : ICachedApplicatio await JSRuntime.InvokeAsync("abp.clock.setBrowserTimeZoneToCookie"); } + + ApplicationConfigurationChangedService.NotifyChanged(); } public virtual Task GetAsync() diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.css b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.css index 08bdc5d283..de679b468a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.css +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.css @@ -10,3 +10,8 @@ .dataTable tbody tr td div.dropdown ul.dropdown-menu li { cursor: pointer; } + +.abp-action-button ui.dropdown-menu[data-popper-reference-hidden]{ + visibility: hidden; + pointer-events: none; +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.min.css b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.min.css index ffc3d272a3..cd5ab5591b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.min.css +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.min.css @@ -1 +1 @@ -.dataTable{width:100% !important;border-spacing:0 !important;}.table td,.table th{padding:8px 10px;}.dataTable tbody tr td button{cursor:pointer;}.dataTable tbody tr td div.dropdown ul.dropdown-menu li{cursor:pointer;} +.dataTable{width:100%!important;border-spacing:0!important}.table td,.table th{padding:8px 10px}.dataTable tbody tr td button{cursor:pointer}.dataTable tbody tr td div.dropdown ul.dropdown-menu li{cursor:pointer}.abp-action-button ui.dropdown-menu[data-popper-reference-hidden]{visibility:hidden;pointer-events:none} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.scss b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.scss index 0ca0771faf..d2498b3cc7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.scss +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.scss @@ -27,3 +27,10 @@ } } } + +.abp-action-button { + ui.dropdown-menu[data-popper-reference-hidden] { + visibility: hidden; + pointer-events: none; + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Theming/AbpThemingOptions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Theming/AbpThemingOptions.cs index 1197ad6e53..bf999be982 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Theming/AbpThemingOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/Theming/AbpThemingOptions.cs @@ -6,6 +6,12 @@ public class AbpThemingOptions public string? DefaultThemeName { get; set; } + /// + /// If set, the base element will be added to the head element of the page. + /// eg: + /// + public string? BaseUrl { get; set; } + public AbpThemingOptions() { Themes = new ThemeDictionary(); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs index 8dfa51768d..73edea9fdf 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs @@ -313,17 +313,42 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp { var timeZone = await _settingProvider.GetOrNullAsync(TimingSettingNames.TimeZone); + string? timeZoneId = null; + string? timeZoneName = null; + if (!timeZone.IsNullOrWhiteSpace()) + { + try + { + if (_timezoneProvider.GetIanaTimezones().Any(x => x.Value == timeZone)) + { + timeZoneId = _timezoneProvider.IanaToWindows(timeZone); + timeZoneName = timeZone; + } + else if (_timezoneProvider.GetWindowsTimezones().Any(x => x.Value == timeZone)) + { + timeZoneId = timeZone; + timeZoneName = _timezoneProvider.WindowsToIana(timeZone); + } + } + catch (Exception ex) + { + timeZoneId = null; + timeZoneName = null; + Logger.LogWarning(ex, $"Exception occurred while getting timezone({timeZone}) information"); + } + } + return new TimingDto { TimeZone = new TimeZone { Windows = new WindowsTimeZone { - TimeZoneId = timeZone.IsNullOrWhiteSpace() ? null : _timezoneProvider.IanaToWindows(timeZone) + TimeZoneId = timeZoneId }, Iana = new IanaTimeZone { - TimeZoneName = timeZone + TimeZoneName = timeZoneName } } }; diff --git a/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Builder/AbpApplicationBuilderExtensions.cs b/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Builder/AbpApplicationBuilderExtensions.cs index d042bb6026..b9142b5aed 100644 --- a/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Builder/AbpApplicationBuilderExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Builder/AbpApplicationBuilderExtensions.cs @@ -115,7 +115,7 @@ public static class AbpApplicationBuilderExtensions return app.UseMiddleware(); } - [Obsolete("Replace with AbpClaimsTransformation")] + [Obsolete("Use the TransformAbpClaims extension method from IServiceCollection instead.")] public static IApplicationBuilder UseAbpClaimsMap(this IApplicationBuilder app) { return app.UseMiddleware(); diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/Claims/AbpClaimsMapMiddleware.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/Claims/AbpClaimsMapMiddleware.cs index 2104edab0a..70fad0d19e 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/Claims/AbpClaimsMapMiddleware.cs +++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/Claims/AbpClaimsMapMiddleware.cs @@ -11,7 +11,7 @@ using Volo.Abp.Security.Claims; namespace Volo.Abp.AspNetCore.Security.Claims; -[Obsolete("Replace with AbpClaimsTransformation")] +[Obsolete("Use the TransformAbpClaims extension method from IServiceCollection instead.")] public class AbpClaimsMapMiddleware : AbpMiddlewareBase, ITransientDependency { public async override Task InvokeAsync(HttpContext context, RequestDelegate next) diff --git a/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs b/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs index 3357d8f95c..e834b3d00d 100644 --- a/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs +++ b/framework/src/Volo.Abp.Autofac/Autofac/Builder/AbpRegistrationBuilderExtensions.cs @@ -38,7 +38,7 @@ public static class AbpRegistrationBuilderExtensions } registrationBuilder = registrationBuilder.EnablePropertyInjection(moduleContainer, implementationType); - registrationBuilder = registrationBuilder.InvokeRegistrationActions(registrationActionList, serviceType, implementationType); + registrationBuilder = registrationBuilder.InvokeRegistrationActions(registrationActionList, serviceType, implementationType, serviceDescriptor.ServiceKey); return registrationBuilder; } @@ -69,10 +69,11 @@ public static class AbpRegistrationBuilderExtensions this IRegistrationBuilder registrationBuilder, ServiceRegistrationActionList registrationActionList, Type serviceType, - Type implementationType) + Type implementationType, + object? serviceKey = null) where TActivatorData : ReflectionActivatorData { - var serviceRegistredArgs = new OnServiceRegistredContext(serviceType, implementationType); + var serviceRegistredArgs = new OnServiceRegistredContext(serviceType, implementationType, serviceKey); foreach (var registrationAction in registrationActionList) { diff --git a/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/AbpBackgroundJobsHangfireModule.cs b/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/AbpBackgroundJobsHangfireModule.cs index ee747e4611..345a69703f 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/AbpBackgroundJobsHangfireModule.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.HangFire/Volo/Abp/BackgroundJobs/Hangfire/AbpBackgroundJobsHangfireModule.cs @@ -25,13 +25,8 @@ public class AbpBackgroundJobsHangfireModule : AbpModule if (!options.IsJobExecutionEnabled) { var hangfireOptions = context.ServiceProvider.GetRequiredService>().Value; - hangfireOptions.BackgroundJobServerFactory = CreateOnlyEnqueueJobServer; + context.ServiceProvider.GetRequiredService(); + hangfireOptions.BackgroundJobServerFactory = _ => null; } } - - private BackgroundJobServer? CreateOnlyEnqueueJobServer(IServiceProvider serviceProvider) - { - serviceProvider.GetRequiredService(); - return null; - } } diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/AbpBackgroundWorkersHangfireModule.cs b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/AbpBackgroundWorkersHangfireModule.cs index 2577181143..433ac699d2 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/AbpBackgroundWorkersHangfireModule.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/AbpBackgroundWorkersHangfireModule.cs @@ -1,5 +1,4 @@ -using System; -using Hangfire; +using Hangfire; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp.Hangfire; @@ -23,17 +22,12 @@ public class AbpBackgroundWorkersHangfireModule : AbpModule if (!options.IsEnabled) { var hangfireOptions = context.ServiceProvider.GetRequiredService>().Value; - hangfireOptions.BackgroundJobServerFactory = CreateOnlyEnqueueJobServer; + context.ServiceProvider.GetRequiredService(); + hangfireOptions.BackgroundJobServerFactory = _ => null; } context.ServiceProvider .GetRequiredService() .Initialize(); } - - private BackgroundJobServer? CreateOnlyEnqueueJobServer(IServiceProvider serviceProvider) - { - serviceProvider.GetRequiredService(); - return null; - } } diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/PageAlert.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/PageAlert.razor index 1a3809c985..51b12dd9f5 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/PageAlert.razor +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/PageAlert.razor @@ -5,16 +5,12 @@ { @alert.AlertMessage.Title - @if (alert.AlertMessage.Dismissible) - { - - } } @alert.AlertMessage.Text @if (alert.AlertMessage.Dismissible) - { - + { + } } diff --git a/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProvider.cs b/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProvider.cs index 1c04fdb755..d20c8d1214 100644 --- a/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProvider.cs +++ b/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProvider.cs @@ -86,7 +86,7 @@ public class AliyunBlobProvider : BlobProviderBase, ITransientDependency return null; } var result = ossClient.GetObject(containerName, blobName); - return await TryCopyToMemoryStreamAsync(result.Content, args.CancellationToken); + return result.ResponseStream; } protected virtual string GetContainerName(BlobProviderArgs args) diff --git a/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProvider.cs b/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProvider.cs index 00a82a0f3e..7c520da471 100644 --- a/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProvider.cs +++ b/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProvider.cs @@ -103,7 +103,7 @@ public class AwsBlobProvider : BlobProviderBase, ITransientDependency Key = blobName }); - return await TryCopyToMemoryStreamAsync(response.ResponseStream, args.CancellationToken); + return response.ResponseStream; } } diff --git a/framework/src/Volo.Abp.BlobStoring.Azure/Volo/Abp/BlobStoring/Azure/AzureBlobProvider.cs b/framework/src/Volo.Abp.BlobStoring.Azure/Volo/Abp/BlobStoring/Azure/AzureBlobProvider.cs index 5d45e749ea..bea55c624d 100644 --- a/framework/src/Volo.Abp.BlobStoring.Azure/Volo/Abp/BlobStoring/Azure/AzureBlobProvider.cs +++ b/framework/src/Volo.Abp.BlobStoring.Azure/Volo/Abp/BlobStoring/Azure/AzureBlobProvider.cs @@ -66,8 +66,7 @@ public class AzureBlobProvider : BlobProviderBase, ITransientDependency } var blobClient = GetBlobClient(args, blobName); - var download = await blobClient.DownloadAsync(); - return await TryCopyToMemoryStreamAsync(download.Value.Content, args.CancellationToken); + return await blobClient.OpenReadAsync(cancellationToken: args.CancellationToken); } protected virtual BlobClient GetBlobClient(BlobProviderArgs args, string blobName) diff --git a/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo/Abp/BlobStoring/FileSystem/FileSystemBlobProvider.cs b/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo/Abp/BlobStoring/FileSystem/FileSystemBlobProvider.cs index a221441749..2a410005db 100644 --- a/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo/Abp/BlobStoring/FileSystem/FileSystemBlobProvider.cs +++ b/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo/Abp/BlobStoring/FileSystem/FileSystemBlobProvider.cs @@ -70,13 +70,7 @@ public class FileSystemBlobProvider : BlobProviderBase, ITransientDependency return await Policy.Handle() .WaitAndRetryAsync(2, retryCount => TimeSpan.FromSeconds(retryCount)) - .ExecuteAsync(async () => - { - using (var fileStream = File.OpenRead(filePath)) - { - return await TryCopyToMemoryStreamAsync(fileStream, args.CancellationToken); - } - }); + .ExecuteAsync(() => Task.FromResult(File.OpenRead(filePath))); } protected virtual Task ExistsAsync(string filePath) diff --git a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/AbpCachingModule.cs b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/AbpCachingModule.cs index de5f60ee4e..632bfa416e 100644 --- a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/AbpCachingModule.cs +++ b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/AbpCachingModule.cs @@ -1,7 +1,5 @@ using Microsoft.Extensions.DependencyInjection; using System; -using Microsoft.Extensions.Caching.Hybrid; -using Microsoft.Extensions.DependencyInjection.Extensions; using Volo.Abp.Caching.Hybrid; using Volo.Abp.Json; using Volo.Abp.Modularity; diff --git a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/Hybrid/AbpHybridCache.cs b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/Hybrid/AbpHybridCache.cs index 2894af9f3d..66506a0b56 100644 --- a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/Hybrid/AbpHybridCache.cs +++ b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/Hybrid/AbpHybridCache.cs @@ -75,7 +75,7 @@ public class AbpHybridCache : IHybridCache : IHybridCache>.Instance; KeyNormalizer = keyNormalizer; @@ -215,10 +215,15 @@ public class AbpHybridCache : IHybridCache(bytes, 0, bytes.Length));; + // Because HybridCache wraps the cache in L2(distributed cache), we can’t unwrap it directly and can only retrieve the value through its API + return await HybridCache.GetOrCreateAsync( + key: NormalizeKey(key), + factory: async cancel => await factory(), + options: optionsFactory?.Invoke(), + tags: null, + cancellationToken: token); } value = await factory(); 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 76bc82f570..3ee7cfdea3 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 @@ -66,7 +66,14 @@ public class BundlingService : IBundlingService, ITransientDependency var frameworkVersion = GetTargetFrameworkVersion(projectFilePath, projectType); var projectName = Path.GetFileNameWithoutExtension(projectFilePath); - var assemblyFilePath = projectType == BundlingConsts.WebAssembly? PathHelper.GetWebAssemblyFilePath(directory, frameworkVersion, projectName) : PathHelper.GetMauiBlazorAssemblyFilePath(directory, projectName); + var assemblyFilePath = projectType == BundlingConsts.WebAssembly + ? PathHelper.GetWebAssemblyFilePath(directory, frameworkVersion, projectName) + : PathHelper.GetMauiBlazorAssemblyFilePath(directory, projectName); + if (assemblyFilePath == null) + { + throw new BundlingException("No assembly file found. Please build the project first."); + } + var startupModule = GetStartupModule(assemblyFilePath); var bundleDefinitions = new List(); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/PathHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/PathHelper.cs index 1b6b56adab..4d3ff3ee77 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/PathHelper.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Bundling/PathHelper.cs @@ -1,4 +1,5 @@ -using System.IO; +using System; +using System.IO; using System.Linq; namespace Volo.Abp.Cli.Bundling; @@ -13,12 +14,16 @@ static internal class PathHelper static internal string GetWebAssemblyFilePath(string directory, string frameworkVersion, string projectFileName) { var outputDirectory = Path.Combine(directory, "bin", "Debug", frameworkVersion); - return Path.Combine(outputDirectory, projectFileName + ".dll"); + var path = Path.Combine(outputDirectory, projectFileName + ".dll"); + return !File.Exists(path) ? null : path; } static internal string GetMauiBlazorAssemblyFilePath(string directory, string projectFileName) { - return Directory.GetFiles(directory, "*.dll", SearchOption.AllDirectories).First(f => !f.Contains("android") && f.EndsWith(projectFileName + ".dll")); + return Directory.GetFiles(Path.Combine(directory, "bin"), "*.dll", SearchOption.AllDirectories).FirstOrDefault(f => + !f.Contains("android") && + !f.Contains("windows10") && + f.EndsWith(projectFileName + ".dll", StringComparison.OrdinalIgnoreCase)); } static internal string GetWwwRootPath(string directory) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliConsts.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliConsts.cs index 8d77675c3c..d968ae6b12 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliConsts.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliConsts.cs @@ -2,24 +2,24 @@ public static class CliConsts { - public const string Command = "AbpCliCommand"; + public static string Command = "AbpCliCommand"; - public const string BranchPrefix = "branch@"; + public static string BranchPrefix = "branch@"; - public const string DocsLink = "https://abp.io/docs"; + public static string DocsLink = "https://abp.io/docs"; - public const string HttpClientName = "AbpHttpClient"; + public static string HttpClientName = "AbpHttpClient"; - public const string GithubHttpClientName = "GithubHttpClient"; + public static string GithubHttpClientName = "GithubHttpClient"; - public const string LogoutUrl = CliUrls.WwwAbpIo + "api/license/logout"; + public static string LogoutUrl = CliUrls.WwwAbpIo + "api/license/logout"; - public const string LicenseCodePlaceHolder = @""; + public static string LicenseCodePlaceHolder = @""; - public const string AppSettingsJsonFileName = "appsettings.json"; + public static string AppSettingsJsonFileName = "appsettings.json"; + + public static string AppSettingsSecretJsonFileName = "appsettings.secrets.json"; - public const string AppSettingsSecretJsonFileName = "appsettings.secrets.json"; - public static class MemoryKeys { public const string LatestCliVersionCheckDate = "LatestCliVersionCheckDate"; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs index 35ae34b895..28cf42c2a2 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs @@ -5,19 +5,18 @@ namespace Volo.Abp.Cli; public static class CliUrls { - public const string WwwAbpIo = WwwAbpIoProduction; - public const string AccountAbpIo = AccountAbpIoProduction; - public const string NuGetRootPath = NuGetRootPathProduction; - public const string LatestVersionCheckFullPath = - "https://raw.githubusercontent.com/abpframework/abp/dev/latest-versions.json"; - - public const string WwwAbpIoProduction = "https://abp.io/"; - public const string AccountAbpIoProduction = "https://account.abp.io/"; - public const string NuGetRootPathProduction = "https://nuget.abp.io/"; - - public const string WwwAbpIoDevelopment = "https://localhost:44328/"; - public const string AccountAbpIoDevelopment = "https://localhost:44333/"; - public const string NuGetRootPathDevelopment = "https://localhost:44373/"; + public static string WwwAbpIo = WwwAbpIoProduction; + public static string AccountAbpIo = AccountAbpIoProduction; + public static string NuGetRootPath = NuGetRootPathProduction; + public static string LatestVersionCheckFullPath = "https://raw.githubusercontent.com/abpframework/abp/dev/latest-versions.json"; + + public static string WwwAbpIoProduction = "https://abp.io/"; + public static string AccountAbpIoProduction = "https://account.abp.io/"; + public static string NuGetRootPathProduction = "https://nuget.abp.io/"; + + public static string WwwAbpIoDevelopment = "https://localhost:44328/"; + public static string AccountAbpIoDevelopment = "https://localhost:44333/"; + public static string NuGetRootPathDevelopment = "https://localhost:44373/"; public static string GetNuGetServiceIndexUrl(string apiKey) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/HelpCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/HelpCommand.cs index 9fb647806b..cc13e9d187 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/HelpCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/HelpCommand.cs @@ -68,7 +68,7 @@ public class HelpCommand : IConsoleCommand, ITransientDependency sb.AppendLine("Command List:"); sb.AppendLine(""); - foreach (var command in AbpCliOptions.Commands.ToArray().Where(NotHiddenFromCommandList)) + foreach (var command in AbpCliOptions.Commands.ToArray().Where(NotHiddenFromCommandList).OrderBy(x => x.Key)) { var method = command.Value.GetMethod("GetShortDescription", BindingFlags.Static | BindingFlags.Public); if (method == null) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs index ad0992af4e..8c6df3b0b9 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs @@ -38,24 +38,25 @@ public class UpdateCommand : IConsoleCommand, ITransientDependency var directory = commandLineArgs.Options.GetOrNull(Options.SolutionPath.Short, Options.SolutionPath.Long) ?? Directory.GetCurrentDirectory(); var version = commandLineArgs.Options.GetOrNull(Options.Version.Short, Options.Version.Long); + var leptonXVersion = commandLineArgs.Options.GetOrNull(Options.LeptonXVersion.Short, Options.LeptonXVersion.Long); if (updateNuget || !updateNpm) { - await UpdateNugetPackages(commandLineArgs, directory, version); + await UpdateNugetPackages(commandLineArgs, directory, version, leptonXVersion); } if (updateNpm || !updateNuget) { - await UpdateNpmPackages(directory, version); + await UpdateNpmPackages(directory, version, leptonXVersion); } } - private async Task UpdateNpmPackages(string directory, string version) + private async Task UpdateNpmPackages(string directory, string version, string leptonXVersion) { - await _npmPackagesUpdater.Update(directory, version: version); + await _npmPackagesUpdater.Update(directory, version: version, leptonXVersion: leptonXVersion); } - private async Task UpdateNugetPackages(CommandLineArgs commandLineArgs, string directory, string version) + private async Task UpdateNugetPackages(CommandLineArgs commandLineArgs, string directory, string version, string leptonXVersion) { var solutions = new List(); var givenSolution = commandLineArgs.Options.GetOrNull(Options.SolutionName.Short, Options.SolutionName.Long); @@ -77,7 +78,7 @@ public class UpdateCommand : IConsoleCommand, ITransientDependency { var solutionName = Path.GetFileName(solution).RemovePostFix(".sln"); - await _nugetPackagesVersionUpdater.UpdateSolutionAsync(solution, checkAll: checkAll, version: version); + await _nugetPackagesVersionUpdater.UpdateSolutionAsync(solution, checkAll: checkAll, version: version, leptonXVersion: leptonXVersion); Logger.LogInformation("Volo packages are updated in {SolutionName} solution", solutionName); } @@ -90,7 +91,7 @@ public class UpdateCommand : IConsoleCommand, ITransientDependency { var projectName = Path.GetFileName(project).RemovePostFix(".csproj"); - await _nugetPackagesVersionUpdater.UpdateProjectAsync(project, checkAll: checkAll, version: version); + await _nugetPackagesVersionUpdater.UpdateProjectAsync(project, checkAll: checkAll, version: version, leptonXVersion: leptonXVersion); Logger.LogInformation("Volo packages are updated in {ProjectName} project", projectName); return; @@ -120,6 +121,7 @@ public class UpdateCommand : IConsoleCommand, ITransientDependency sb.AppendLine("-sn|--solution-name (Specify the solution name)"); sb.AppendLine("--check-all (Check the new version of each package separately)"); sb.AppendLine("-v|--version (default: latest version)"); + sb.AppendLine("-lv|--leptonx-version (default: latest LeptonX version)"); sb.AppendLine(""); sb.AppendLine("Some examples:"); sb.AppendLine(""); @@ -167,5 +169,11 @@ public class UpdateCommand : IConsoleCommand, ITransientDependency public const string Short = "v"; public const string Long = "version"; } + + public static class LeptonXVersion + { + public const string Short = "lv"; + public const string Long = "leptonx-version"; + } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs index 2c88f1e8c5..d543b43d65 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs @@ -50,7 +50,7 @@ public class NpmPackagesUpdater : ITransientDependency public async Task Update(string rootDirectory, bool includePreviews = false, bool includeReleaseCandidates = false, - bool switchToStable = false, string version = null, bool includePreRc = false) + bool switchToStable = false, string version = null, string leptonXVersion = null, bool includePreRc = false) { var fileList = _packageJsonFileFinder.Find(rootDirectory); @@ -80,6 +80,7 @@ public class NpmPackagesUpdater : ITransientDependency var updated = await UpdatePackagesInFile(file, includePreviews, includeReleaseCandidates, switchToStable, version, + leptonXVersion, includePreRc); packagesUpdated.TryAdd(file, updated); @@ -162,6 +163,7 @@ public class NpmPackagesUpdater : ITransientDependency bool includeReleaseCandidates = false, bool switchToStable = false, string specifiedVersion = null, + string specifiedLeptonXVersion = null, bool includePreRc = false) { var packagesUpdated = false; @@ -177,7 +179,7 @@ public class NpmPackagesUpdater : ITransientDependency foreach (var abpPackage in abpPackages) { var updated = await TryUpdatingPackage(filePath, abpPackage, includePreviews, includeReleaseCandidates, - switchToStable, specifiedVersion, includePreRc); + switchToStable, specifiedVersion, specifiedLeptonXVersion, includePreRc); if (updated) { @@ -188,7 +190,7 @@ public class NpmPackagesUpdater : ITransientDependency var updatedContent = packageJson.ToString(Formatting.Indented); File.WriteAllText(filePath, updatedContent); - + return packagesUpdated; } @@ -199,6 +201,7 @@ public class NpmPackagesUpdater : ITransientDependency bool includeReleaseCandidates = false, bool switchToStable = false, string specifiedVersion = null, + string specifiedLeptonXVersion = null, bool includePreRc = false) { var currentVersion = (string)package.Value; @@ -207,18 +210,36 @@ public class NpmPackagesUpdater : ITransientDependency if (!specifiedVersion.IsNullOrWhiteSpace()) { - if (!SpecifiedVersionExists(specifiedVersion, package)) + if (package.Name.IndexOf("leptonx", StringComparison.InvariantCultureIgnoreCase) > 0 && !specifiedLeptonXVersion.IsNullOrWhiteSpace()) { - return false; - } + if (!SpecifiedVersionExists(specifiedLeptonXVersion, package)) + { + return false; + } - if (SemanticVersion.Parse(specifiedVersion) <= - SemanticVersion.Parse(currentVersion.RemovePreFix("~", "^"))) - { - return false; + if (SemanticVersion.Parse(specifiedLeptonXVersion) <= + SemanticVersion.Parse(currentVersion.RemovePreFix("~", "^"))) + { + return false; + } + + version = specifiedLeptonXVersion.EnsureStartsWith('^'); } + else + { + if (!SpecifiedVersionExists(specifiedVersion, package)) + { + return false; + } - version = specifiedVersion.EnsureStartsWith('^'); + if (SemanticVersion.Parse(specifiedVersion) <= + SemanticVersion.Parse(currentVersion.RemovePreFix("~", "^"))) + { + return false; + } + + version = specifiedVersion.EnsureStartsWith('^'); + } } else { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs index 4ece393913..924d6041b1 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs @@ -27,7 +27,14 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency Logger = NullLogger.Instance; } - public async Task UpdateSolutionAsync(string solutionPath, bool includePreviews = false, bool includeReleaseCandidates = false, bool switchToStable = false, bool checkAll = false, string version = null) + public async Task UpdateSolutionAsync( + string solutionPath, + bool includePreviews = false, + bool includeReleaseCandidates = false, + bool switchToStable = false, + bool checkAll = false, + string version = null, + string leptonXVersion = null) { var projectPaths = ProjectFinder.GetProjectFiles(solutionPath); @@ -58,6 +65,7 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency latestReleaseCandidateVersionInfo.Version, latestVersionFromMyGet, version, + leptonXVersion, latestStableVersions: latestStableVersions); fs.Seek(0, SeekOrigin.Begin); @@ -75,7 +83,14 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency } } - public async Task UpdateProjectAsync(string projectPath, bool includeNightlyPreviews = false, bool includeReleaseCandidates = false, bool switchToStable = false, bool checkAll = false, string version = null) + public async Task UpdateProjectAsync( + string projectPath, + bool includeNightlyPreviews = false, + bool includeReleaseCandidates = false, + bool switchToStable = false, + bool checkAll = false, + string version = null, + string leptonXVersion = null) { if (checkAll && version.IsNullOrWhiteSpace()) { @@ -102,6 +117,7 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency latestReleaseCandidateVersionInfo.Version, latestVersionFromMyGet, version, + leptonXVersion, latestStableVersions: latestStableVersions); fs.Seek(0, SeekOrigin.Begin); @@ -166,6 +182,7 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency SemanticVersion latestNugetReleaseCandidateVersion = null, string latestMyGetVersion = null, string specifiedVersion = null, + string specifiedLeptonXVersion = null, List latestStableVersions = null) { string packageId = null; @@ -222,21 +239,35 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency var leptonXPackageVersion = latestStableVersions? .FirstOrDefault(v => v.Version.Equals(specifiedVersion, StringComparison.InvariantCultureIgnoreCase))?.LeptonX?.Version; - if ((isLeptonXPackage && string.IsNullOrWhiteSpace(leptonXPackageVersion)) || isStudioPackage) + if ((isLeptonXPackage && string.IsNullOrWhiteSpace(leptonXPackageVersion) && specifiedLeptonXVersion.IsNullOrWhiteSpace()) || isStudioPackage) { Logger.LogWarning("Package: {PackageId} could not be updated. Please manually update the package version yourself to prevent version mismatches!", packageId); continue; } - var isLeptonXPackageWithVersion = isLeptonXPackage && !string.IsNullOrWhiteSpace(leptonXPackageVersion); - - if (isLeptonXPackageWithVersion || await SpecifiedVersionExists(specifiedVersion, packageId)) + if (isLeptonXPackage) { - TryUpdatingPackage(isLeptonXPackageWithVersion ? leptonXPackageVersion : specifiedVersion); + var isLeptonXPackageWithVersion = isLeptonXPackage && !string.IsNullOrWhiteSpace(leptonXPackageVersion); + + if (isLeptonXPackageWithVersion || await SpecifiedVersionExists(specifiedLeptonXVersion, packageId)) + { + TryUpdatingPackage(specifiedLeptonXVersion ?? leptonXPackageVersion); + } + else + { + Logger.LogWarning($"Package \"{packageId}\" specified version v{specifiedLeptonXVersion} does not exist!"); + } } else { - Logger.LogWarning("Package \"{PackageId}\" specified version v{SpecifiedVersion} does not exist!", packageId, specifiedVersion); + if (await SpecifiedVersionExists(specifiedVersion, packageId)) + { + TryUpdatingPackage(specifiedVersion); + } + else + { + Logger.LogWarning($"Package \"{packageId}\" specified version v{specifiedVersion} does not exist!"); + } } void TryUpdatingPackage(string versionToUpdate) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/IOnServiceRegistredContext.cs b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/IOnServiceRegistredContext.cs index 86dad068b6..a1c50c0c64 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/IOnServiceRegistredContext.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/IOnServiceRegistredContext.cs @@ -9,4 +9,6 @@ public interface IOnServiceRegistredContext ITypeList Interceptors { get; } Type ImplementationType { get; } + + object? ServiceKey { get; } } diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/OnServiceRegistredContext.cs b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/OnServiceRegistredContext.cs index a843b136f6..8491c94e91 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/OnServiceRegistredContext.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/OnServiceRegistredContext.cs @@ -13,10 +13,13 @@ public class OnServiceRegistredContext : IOnServiceRegistredContext public virtual Type ImplementationType { get; } - public OnServiceRegistredContext(Type serviceType, [NotNull] Type implementationType) + public virtual object? ServiceKey { get; } + + public OnServiceRegistredContext(Type serviceType, [NotNull] Type implementationType, object? serviceKey = null) { ServiceType = Check.NotNull(serviceType, nameof(serviceType)); ImplementationType = Check.NotNull(implementationType, nameof(implementationType)); + ServiceKey = serviceKey; Interceptors = new TypeList(); } diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ServiceConfigurationContext.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ServiceConfigurationContext.cs index 6141777cec..f1e55b85d8 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ServiceConfigurationContext.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/ServiceConfigurationContext.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using JetBrains.Annotations; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace Volo.Abp.Modularity; @@ -8,6 +9,13 @@ public class ServiceConfigurationContext { public IServiceCollection Services { get; } + public IConfiguration Configuration { + get { + return _configuration ??= Services.GetConfiguration(); + } + } + private IConfiguration? _configuration; + public IDictionary Items { get; } /// @@ -29,4 +37,4 @@ public class ServiceConfigurationContext Services = Check.NotNull(services, nameof(services)); Items = new Dictionary(); } -} +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheBase.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheBase.cs index 62d0b5304e..7cea931c12 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheBase.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheBase.cs @@ -16,12 +16,12 @@ public abstract class EntityCacheBase : where TEntityCacheItem : class { protected IReadOnlyRepository Repository { get; } - protected IDistributedCache Cache { get; } + protected IDistributedCache, TKey> Cache { get; } protected IUnitOfWorkManager UnitOfWorkManager { get; } protected EntityCacheBase( IReadOnlyRepository repository, - IDistributedCache cache, + IDistributedCache, TKey> cache, IUnitOfWorkManager unitOfWorkManager) { Repository = repository; @@ -31,7 +31,7 @@ public abstract class EntityCacheBase : public virtual async Task FindAsync(TKey id) { - return await Cache.GetOrAddAsync( + return (await Cache.GetOrAddAsync( id, async () => { @@ -41,7 +41,7 @@ public abstract class EntityCacheBase : } return MapToCacheItem(await Repository.FindAsync(id))!; - }); + }))?.Value; } public virtual async Task GetAsync(TKey id) @@ -56,7 +56,7 @@ public abstract class EntityCacheBase : } return MapToCacheItem(await Repository.GetAsync(id))!; - }))!; + }))!.Value!; } protected virtual bool HasObjectExtensionInfo() @@ -65,15 +65,10 @@ public abstract class EntityCacheBase : ObjectExtensionManager.Instance.GetOrNull(typeof(TEntity)) != null; } - protected abstract TEntityCacheItem? MapToCacheItem(TEntity? entity); + protected abstract EntityCacheItemWrapper? MapToCacheItem(TEntity? entity); public async Task HandleEventAsync(EntityChangedEventData eventData) { - if (eventData is EntityCreatedEventData) - { - return; - } - /* Why we are using double remove: * First Cache.RemoveAsync drops the cache item in a unit of work. * Some other application / thread may read the value from database and put it to the cache again diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheItemWrapper.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheItemWrapper.cs new file mode 100644 index 0000000000..e1d12692c8 --- /dev/null +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheItemWrapper.cs @@ -0,0 +1,12 @@ +namespace Volo.Abp.Domain.Entities.Caching; + +public class EntityCacheItemWrapper + where TEntityCacheItem : class +{ + public TEntityCacheItem? Value { get; set; } + + public EntityCacheItemWrapper(TEntityCacheItem? value) + { + Value = value; + } +} diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithObjectMapper.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithObjectMapper.cs index a37ad49b1e..62b3162cdd 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithObjectMapper.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithObjectMapper.cs @@ -15,7 +15,7 @@ public class EntityCacheWithObjectMapper : public EntityCacheWithObjectMapper( IReadOnlyRepository repository, - IDistributedCache cache, + IDistributedCache, TKey> cache, IUnitOfWorkManager unitOfWorkManager, IObjectMapper objectMapper) : base(repository, cache, unitOfWorkManager) @@ -23,7 +23,7 @@ public class EntityCacheWithObjectMapper : ObjectMapper = objectMapper; } - protected override TEntityCacheItem? MapToCacheItem(TEntity? entity) + protected override EntityCacheItemWrapper? MapToCacheItem(TEntity? entity) { if (entity == null) { @@ -32,9 +32,9 @@ public class EntityCacheWithObjectMapper : if (typeof(TEntity) == typeof(TEntityCacheItem)) { - return entity.As(); + return new EntityCacheItemWrapper(entity.As()); } - return ObjectMapper.Map(entity); + return new EntityCacheItemWrapper(ObjectMapper.Map(entity)); } } diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithObjectMapperContext.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithObjectMapperContext.cs index f468598652..2471e1057c 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithObjectMapperContext.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithObjectMapperContext.cs @@ -12,7 +12,7 @@ public class EntityCacheWithObjectMapperContext repository, - IDistributedCache cache, + IDistributedCache, TKey> cache, IUnitOfWorkManager unitOfWorkManager, IObjectMapper objectMapper)// Intentionally injected with TContext : base(repository, cache, unitOfWorkManager, objectMapper) diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithoutCacheItem.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithoutCacheItem.cs index 125273173e..4738534831 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithoutCacheItem.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Caching/EntityCacheWithoutCacheItem.cs @@ -10,14 +10,14 @@ public class EntityCacheWithoutCacheItem : { public EntityCacheWithoutCacheItem( IReadOnlyRepository repository, - IDistributedCache cache, + IDistributedCache, TKey> cache, IUnitOfWorkManager unitOfWorkManager) : base(repository, cache, unitOfWorkManager) { } - protected override TEntity? MapToCacheItem(TEntity? entity) + protected override EntityCacheItemWrapper? MapToCacheItem(TEntity? entity) { - return entity; + return new EntityCacheItemWrapper(entity); } } diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/AbpEntityChangeOptions.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/AbpEntityChangeOptions.cs index a42b921068..2c705a01fd 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/AbpEntityChangeOptions.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/AbpEntityChangeOptions.cs @@ -10,8 +10,18 @@ public class AbpEntityChangeOptions public IEntitySelectorList IgnoredNavigationEntitySelectors { get; set; } + /// + /// Default: true. + /// Update the aggregate root when any navigation property changes. + /// Some properties like ConcurrencyStamp,LastModificationTime,LastModifierId etc. will be updated. + /// + public bool UpdateAggregateRootWhenNavigationChanges { get; set; } = true; + + public IEntitySelectorList IgnoredUpdateAggregateRootSelectors { get; set; } + public AbpEntityChangeOptions() { IgnoredNavigationEntitySelectors = new EntitySelectorList(); + IgnoredUpdateAggregateRootSelectors = new EntitySelectorList(); } } diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs index 626daf0bb4..e91d08b8c9 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/AbpDbContext.cs @@ -274,7 +274,9 @@ public abstract class AbpDbContext : DbContext, IAbpEfCoreDbContext, continue; } - if (entityEntry.State == EntityState.Unchanged) + if (EntityChangeOptions.Value.UpdateAggregateRootWhenNavigationChanges && + EntityChangeOptions.Value.IgnoredUpdateAggregateRootSelectors.All(selector => !selector.Predicate(entityEntry.Entity.GetType())) && + entityEntry.State == EntityState.Unchanged) { ApplyAbpConceptsForModifiedEntity(entityEntry, true); } @@ -446,7 +448,12 @@ public abstract class AbpDbContext : DbContext, IAbpEfCoreDbContext, EntityChangeOptions.Value.IgnoredNavigationEntitySelectors.All(selector => !selector.Predicate(entry.Entity.GetType())) && AbpEfCoreNavigationHelper.IsNavigationEntryModified(entry)) { - ApplyAbpConceptsForModifiedEntity(entry, true); + if (EntityChangeOptions.Value.UpdateAggregateRootWhenNavigationChanges && + EntityChangeOptions.Value.IgnoredUpdateAggregateRootSelectors.All(selector => !selector.Predicate(entry.Entity.GetType()))) + { + ApplyAbpConceptsForModifiedEntity(entry, true); + } + if (entry.Entity is ISoftDelete && entry.Entity.As().IsDeleted) { EntityChangeEventHelper.PublishEntityDeletedEvent(entry.Entity); @@ -478,11 +485,13 @@ public abstract class AbpDbContext : DbContext, IAbpEfCoreDbContext, } } - if (EntityChangeOptions.Value.PublishEntityUpdatedEventWhenNavigationChanges) + if (EntityChangeOptions.Value.PublishEntityUpdatedEventWhenNavigationChanges && + EntityChangeOptions.Value.UpdateAggregateRootWhenNavigationChanges) { foreach (var entry in AbpEfCoreNavigationHelper.GetChangedEntityEntries() .Where(x => x.State == EntityState.Unchanged) - .Where(x=> EntityChangeOptions.Value.IgnoredNavigationEntitySelectors.All(selector => !selector.Predicate(x.Entity.GetType())))) + .Where(x => EntityChangeOptions.Value.IgnoredNavigationEntitySelectors.All(selector => !selector.Predicate(x.Entity.GetType()))) + .Where(x => EntityChangeOptions.Value.IgnoredUpdateAggregateRootSelectors.All(selector => !selector.Predicate(x.Entity.GetType())))) { UpdateConcurrencyStamp(entry); } diff --git a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageCompressorContributor.cs b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageCompressorContributor.cs index 9a2f53b988..da6b75b4b8 100644 --- a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageCompressorContributor.cs +++ b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageCompressorContributor.cs @@ -5,9 +5,6 @@ using System.Threading.Tasks; using Microsoft.Extensions.Options; using SixLabors.ImageSharp; using SixLabors.ImageSharp.Formats; -using SixLabors.ImageSharp.Formats.Jpeg; -using SixLabors.ImageSharp.Formats.Png; -using SixLabors.ImageSharp.Formats.Webp; using Volo.Abp.DependencyInjection; using Volo.Abp.Http; @@ -32,7 +29,7 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor, return new ImageCompressResult(stream, ImageProcessState.Unsupported); } - var image = await Image.LoadAsync(stream, cancellationToken); + using var image = await Image.LoadAsync(stream, cancellationToken); if (!CanCompress(image.Metadata.DecodedImageFormat!.DefaultMimeType)) { @@ -46,7 +43,7 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor, return new ImageCompressResult(memoryStream, ImageProcessState.Done); } - memoryStream.Dispose(); + await memoryStream.DisposeAsync(); return new ImageCompressResult(stream, ImageProcessState.Canceled); } @@ -69,7 +66,7 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor, } var newBytes = await result.Result.GetAllBytesAsync(cancellationToken); - result.Result.Dispose(); + await result.Result.DisposeAsync(); return new ImageCompressResult(newBytes, result.State); } @@ -100,7 +97,7 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor, } catch { - memoryStream.Dispose(); + await memoryStream.DisposeAsync(); throw; } } @@ -110,11 +107,11 @@ public class ImageSharpImageCompressorContributor : IImageCompressorContributor, switch (format.DefaultMimeType) { case MimeTypes.Image.Jpeg: - return Options.JpegEncoder ?? new JpegEncoder(); + return Options.JpegEncoder; case MimeTypes.Image.Png: - return Options.PngEncoder ?? new PngEncoder(); + return Options.PngEncoder; case MimeTypes.Image.Webp: - return Options.WebpEncoder ?? new WebpEncoder(); + return Options.WebpEncoder; default: throw new NotSupportedException($"No encoder available for the given format: {format.Name}"); } diff --git a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageResizerContributor.cs b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageResizerContributor.cs index 6e17ddc9a8..e52155eaeb 100644 --- a/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageResizerContributor.cs +++ b/framework/src/Volo.Abp.Imaging.ImageSharp/Volo/Abp/Imaging/ImageSharpImageResizerContributor.cs @@ -23,7 +23,7 @@ public class ImageSharpImageResizerContributor : IImageResizerContributor, ITran return new ImageResizeResult(stream, ImageProcessState.Unsupported); } - var image = await Image.LoadAsync(stream, cancellationToken); + using var image = await Image.LoadAsync(stream, cancellationToken); if (!CanResize(image.Metadata.DecodedImageFormat!.DefaultMimeType)) { @@ -49,7 +49,7 @@ public class ImageSharpImageResizerContributor : IImageResizerContributor, ITran } catch { - memoryStream.Dispose(); + await memoryStream.DisposeAsync(); throw; } } @@ -76,7 +76,7 @@ public class ImageSharpImageResizerContributor : IImageResizerContributor, ITran var newBytes = await result.Result.GetAllBytesAsync(cancellationToken); - result.Result.Dispose(); + await result.Result.DisposeAsync(); return new ImageResizeResult(newBytes, result.State); } diff --git a/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/SkiaSharpImageResizerContributor.cs b/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/SkiaSharpImageResizerContributor.cs index 760acd0916..0ba2c7c833 100644 --- a/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/SkiaSharpImageResizerContributor.cs +++ b/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/SkiaSharpImageResizerContributor.cs @@ -25,21 +25,19 @@ public class SkiaSharpImageResizerContributor : IImageResizerContributor, ITrans return new ImageResizeResult(bytes, ImageProcessState.Unsupported); } - using (var memoryStream = new MemoryStream(bytes)) - { - var result = await TryResizeAsync(memoryStream, resizeArgs, mimeType, cancellationToken); + using var memoryStream = new MemoryStream(bytes); + var result = await TryResizeAsync(memoryStream, resizeArgs, mimeType, cancellationToken); - if (result.State != ImageProcessState.Done) - { - return new ImageResizeResult(bytes, result.State); - } + if (result.State != ImageProcessState.Done) + { + return new ImageResizeResult(bytes, result.State); + } - var newBytes = await result.Result.GetAllBytesAsync(cancellationToken); + var newBytes = await result.Result.GetAllBytesAsync(cancellationToken); - result.Result.Dispose(); + result.Result.Dispose(); - return new ImageResizeResult(newBytes, result.State); - } + return new ImageResizeResult(newBytes, result.State); } public virtual async Task> TryResizeAsync(Stream stream, ImageResizeArgs resizeArgs, string? mimeType = null, CancellationToken cancellationToken = default) @@ -51,21 +49,14 @@ public class SkiaSharpImageResizerContributor : IImageResizerContributor, ITrans var (memoryBitmapStream, memorySkCodecStream) = await CreateMemoryStream(stream); - using (var original = SKBitmap.Decode(memoryBitmapStream)) - { - using (var resized = original.Resize(new SKImageInfo(resizeArgs.Width, resizeArgs.Height), Options.SKFilterQuality)) - { - using (var image = SKImage.FromBitmap(resized)) - { - using (var codec = SKCodec.Create(memorySkCodecStream)) - { - var memoryStream = new MemoryStream(); - image.Encode(codec.EncodedFormat, Options.Quality).SaveTo(memoryStream); - return new ImageResizeResult(memoryStream, ImageProcessState.Done); - } - } - } - } + using var original = SKBitmap.Decode(memoryBitmapStream); + using var resized = original.Resize(new SKImageInfo(resizeArgs.Width, resizeArgs.Height), Options.SKFilterQuality); + using var image = SKImage.FromBitmap(resized); + using var codec = SKCodec.Create(memorySkCodecStream); + var memoryStream = new MemoryStream(); + using var skData = image.Encode(codec.EncodedFormat, Options.Quality); + skData.SaveTo(memoryStream); + return new ImageResizeResult(memoryStream, ImageProcessState.Done); } protected virtual async Task<(MemoryStream, MemoryStream)> CreateMemoryStream(Stream stream) diff --git a/framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/AbpSystemTextJsonSerializer.cs b/framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/AbpSystemTextJsonSerializer.cs index 6f433ce918..7f72f0de71 100644 --- a/framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/AbpSystemTextJsonSerializer.cs +++ b/framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/AbpSystemTextJsonSerializer.cs @@ -40,21 +40,10 @@ public class AbpSystemTextJsonSerializer : IJsonSerializer, ITransientDependency camelCase, indented, Options.JsonSerializerOptions - }, _ => + }, _ => new JsonSerializerOptions(Options.JsonSerializerOptions) { - var settings = new JsonSerializerOptions(Options.JsonSerializerOptions); - - if (camelCase) - { - settings.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; - } - - if (indented) - { - settings.WriteIndented = true; - } - - return settings; + PropertyNamingPolicy = camelCase ? JsonNamingPolicy.CamelCase : null, + WriteIndented = indented }); } } diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpGuidCustomBsonTypeMapper.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpGuidCustomBsonTypeMapper.cs new file mode 100644 index 0000000000..4cfacc39fd --- /dev/null +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpGuidCustomBsonTypeMapper.cs @@ -0,0 +1,13 @@ +using System; +using MongoDB.Bson; + +namespace Volo.Abp.MongoDB; + +public class AbpGuidCustomBsonTypeMapper : ICustomBsonTypeMapper +{ + public bool TryMapToBsonValue(object value, out BsonValue bsonValue) + { + bsonValue = new BsonBinaryData((Guid)value, GuidRepresentation.Standard); + return true; + } +} diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs index 8e8ad345fc..195491d989 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.DependencyInjection; +using System; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using MongoDB.Bson; using MongoDB.Bson.Serialization; @@ -16,6 +17,12 @@ namespace Volo.Abp.MongoDB; [DependsOn(typeof(AbpDddDomainModule))] public class AbpMongoDbModule : AbpModule { + static AbpMongoDbModule() + { + BsonSerializer.TryRegisterSerializer(new GuidSerializer(GuidRepresentation.Standard)); + BsonTypeMapper.RegisterCustomTypeMapper(typeof(Guid), new AbpGuidCustomBsonTypeMapper()); + } + public override void PreConfigureServices(ServiceConfigurationContext context) { context.Services.AddConventionalRegistrar(new AbpMongoDbConventionalRegistrar()); @@ -23,8 +30,6 @@ public class AbpMongoDbModule : AbpModule public override void ConfigureServices(ServiceConfigurationContext context) { - BsonSerializer.TryRegisterSerializer(new GuidSerializer(GuidRepresentation.Standard)); - context.Services.TryAddTransient( typeof(IMongoDbContextProvider<>), typeof(UnitOfWorkMongoDbContextProvider<>) diff --git a/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.js b/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.js index 0e13317cbf..11cbe56803 100644 --- a/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.js +++ b/framework/src/Volo.Abp.Swashbuckle/wwwroot/swagger/ui/abp.js @@ -4,7 +4,9 @@ var abp = abp || {}; /* Application paths *****************************************/ //Current application root path (including virtual directory if exists). - abp.appPath = abp.appPath || '/'; + var baseElement = document.querySelector('base'); + var baseHref = baseElement ? baseElement.getAttribute('href') : null; + abp.appPath = baseHref || abp.appPath || '/'; /* UTILS ***************************************************/ diff --git a/framework/test/Volo.Abp.Autofac.Tests/Volo/Abp/Autofac/AutoFac_OnActivated_Tests.cs b/framework/test/Volo.Abp.Autofac.Tests/Volo/Abp/Autofac/AutoFac_OnActivated_Tests.cs index b2af6d85da..46c9ea2e8c 100644 --- a/framework/test/Volo.Abp.Autofac.Tests/Volo/Abp/Autofac/AutoFac_OnActivated_Tests.cs +++ b/framework/test/Volo.Abp.Autofac.Tests/Volo/Abp/Autofac/AutoFac_OnActivated_Tests.cs @@ -31,9 +31,9 @@ public class AutoFac_OnActivated_Tests : Autofac_Interception_Test var server = ServiceProvider.GetRequiredService(); server.Name.ShouldBe("MyServer12"); } -} -class MyServer -{ - public string Name { get; set; } = "MyServer"; + class MyServer + { + public string Name { get; set; } = "MyServer"; + } } diff --git a/framework/test/Volo.Abp.Autofac.Tests/Volo/Abp/Autofac/AutoFac_OnRegistred_Tests.cs b/framework/test/Volo.Abp.Autofac.Tests/Volo/Abp/Autofac/AutoFac_OnRegistred_Tests.cs new file mode 100644 index 0000000000..34b739cb7f --- /dev/null +++ b/framework/test/Volo.Abp.Autofac.Tests/Volo/Abp/Autofac/AutoFac_OnRegistred_Tests.cs @@ -0,0 +1,30 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Shouldly; +using Volo.Abp.Autofac.Interception; +using Xunit; + +namespace Volo.Abp.Autofac; + +public class AutoFac_OnRegistred_Tests : Autofac_Interception_Test +{ + protected override Task AfterAddApplicationAsync(IServiceCollection services) + { + services.Add(ServiceDescriptor.KeyedTransient("key")); + services.OnRegistered(onServiceRegistredContext => + { + if (onServiceRegistredContext.ImplementationType == typeof(MyServer)) + { + onServiceRegistredContext.ServiceKey.ShouldBe("key"); + } + }); + + return base.AfterAddApplicationAsync(services); + } + + class MyServer + { + public string Name { get; set; } = "MyServer"; + } +} diff --git a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/DomainEvents/DomainEvents_Tests.cs b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/DomainEvents/DomainEvents_Tests.cs index d82fb195ab..6249d588f5 100644 --- a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/DomainEvents/DomainEvents_Tests.cs +++ b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/DomainEvents/DomainEvents_Tests.cs @@ -396,3 +396,134 @@ public class AbpEfCoreDomainEvents_Tests : EntityFrameworkCoreTestBase entityUpdatedEventTriggered.ShouldBeTrue(); } } + + +public abstract class AbpEfCoreDomainEvents_Disable_UpdateAggregateRoot_Tests : EntityFrameworkCoreTestBase +{ + protected readonly IRepository AppEntityWithNavigationsRepository; + protected readonly IRepository AppEntityWithNavigationForeignRepository; + protected readonly ILocalEventBus LocalEventBus; + + protected AbpEfCoreDomainEvents_Disable_UpdateAggregateRoot_Tests() + { + AppEntityWithNavigationsRepository = GetRequiredService>(); + AppEntityWithNavigationForeignRepository = GetRequiredService>(); + LocalEventBus = GetRequiredService(); + } + + protected override void AfterAddApplication(IServiceCollection services) + { + services.Configure(options => + { + options.PublishEntityUpdatedEventWhenNavigationChanges = true; + options.UpdateAggregateRootWhenNavigationChanges = false; + }); + + base.AfterAddApplication(services); + } + + [Fact] + public async Task Should_Trigger_Domain_Events_But_Do_Not_Change_Aggregate_Root_When_Navigation_Changes_Tests() + { + var entityId = Guid.NewGuid(); + + var newEntity = await AppEntityWithNavigationsRepository.InsertAsync(new AppEntityWithNavigations(entityId, "TestEntity")); + + var latestConcurrencyStamp = newEntity.ConcurrencyStamp; + var lastModificationTime = newEntity.LastModificationTime; + + var entityUpdatedEventTriggered = false; + + LocalEventBus.Subscribe>(data => + { + entityUpdatedEventTriggered = true; + + // The Aggregate will not be updated + data.Entity.ConcurrencyStamp.ShouldBe(latestConcurrencyStamp); + data.Entity.LastModificationTime.ShouldBe(lastModificationTime); + return Task.CompletedTask; + }); + + // Test with value object + entityUpdatedEventTriggered = false; + await WithUnitOfWorkAsync(async () => + { + var entity = await AppEntityWithNavigationsRepository.GetAsync(entityId); + entity.AppEntityWithValueObjectAddress = new AppEntityWithValueObjectAddress("Turkey"); + await AppEntityWithNavigationsRepository.UpdateAsync(entity); + }); + entityUpdatedEventTriggered.ShouldBeTrue(); + + // Test with one to one + entityUpdatedEventTriggered = false; + await WithUnitOfWorkAsync(async () => + { + var entity = await AppEntityWithNavigationsRepository.GetAsync(entityId); + entity.OneToOne = new AppEntityWithNavigationChildOneToOne + { + ChildName = "ChildName" + }; + await AppEntityWithNavigationsRepository.UpdateAsync(entity); + }); + entityUpdatedEventTriggered.ShouldBeTrue(); + + // Test with one to many + entityUpdatedEventTriggered = false; + await WithUnitOfWorkAsync(async () => + { + var entity = await AppEntityWithNavigationsRepository.GetAsync(entityId); + entity.OneToMany = new List() + { + new AppEntityWithNavigationChildOneToMany + { + AppEntityWithNavigationId = entity.Id, + ChildName = "ChildName1" + } + }; + await AppEntityWithNavigationsRepository.UpdateAsync(entity); + }); + entityUpdatedEventTriggered.ShouldBeTrue(); + + // Test with many to many + entityUpdatedEventTriggered = false; + await WithUnitOfWorkAsync(async () => + { + var entity = await AppEntityWithNavigationsRepository.GetAsync(entityId); + entity.ManyToMany = new List() + { + new AppEntityWithNavigationChildManyToMany + { + ChildName = "ChildName1" + } + }; + await AppEntityWithNavigationsRepository.UpdateAsync(entity); + }); + entityUpdatedEventTriggered.ShouldBeTrue(); + } +} + +public class AbpEfCoreDomainEvents_UpdateAggregateRootWhenNavigationChanges_Tests : AbpEfCoreDomainEvents_Disable_UpdateAggregateRoot_Tests +{ + protected override void AfterAddApplication(IServiceCollection services) + { + services.Configure(options => + { + options.UpdateAggregateRootWhenNavigationChanges = false; + }); + + base.AfterAddApplication(services); + } +} + +public class AbpEfCoreDomainEvents_IgnoredUpdateAggregateRootSelectors_Test : AbpEfCoreDomainEvents_Disable_UpdateAggregateRoot_Tests +{ + protected override void AfterAddApplication(IServiceCollection services) + { + services.Configure(options => + { + options.IgnoredUpdateAggregateRootSelectors.Add("AppEntityWithValueObjectAddress", x => x == typeof(AppEntityWithNavigations)); + }); + + base.AfterAddApplication(services); + } +} diff --git a/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpJsonTestBase.cs b/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpJsonTestBase.cs index ebae706aca..e442ce48ad 100644 --- a/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpJsonTestBase.cs +++ b/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpJsonTestBase.cs @@ -1,4 +1,9 @@ -using Volo.Abp.Testing; +using System; +using System.Collections.Concurrent; +using System.Reflection; +using Newtonsoft.Json; +using Volo.Abp.Json.Newtonsoft; +using Volo.Abp.Testing; namespace Volo.Abp.Json; @@ -12,6 +17,16 @@ public abstract class AbpJsonSystemTextJsonTestBase : AbpIntegratedTest { + protected AbpJsonNewtonsoftJsonTestBase() + { + var cache = typeof(AbpNewtonsoftJsonSerializer).GetField("JsonSerializerOptionsCache", BindingFlags.NonPublic | BindingFlags.Static); + if (cache != null) + { + var cacheValue = cache.GetValue(null)?.As>(); + cacheValue?.Clear(); + } + } + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) { options.UseAutofac(); diff --git a/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpNewtonsoftSerializerProviderTests.cs b/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpNewtonsoftSerializerProviderTests.cs new file mode 100644 index 0000000000..9dc0c0afd3 --- /dev/null +++ b/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpNewtonsoftSerializerProviderTests.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Json; + +[Collection("AbpJsonNewtonsoftJsonTest")] +public class AbpNewtonsoftSerializerProviderTests : AbpJsonNewtonsoftJsonTestBase +{ + protected IJsonSerializer JsonSerializer; + + public AbpNewtonsoftSerializerProviderTests() + { + JsonSerializer = GetRequiredService(); + } + + public class File + { + public string FileName { get; set; } + + public Dictionary ExtraProperties { get; set; } + } + + [Fact] + public void Serialize_Deserialize_Test() + { + var defaultIndent = " "; // Default indent is 2 spaces + var newLine = Environment.NewLine; + var file = new File() + { + FileName = "abp", + ExtraProperties = new Dictionary() + { + { "One", 1 }, + { "Two", 2 } + } + }; + + var json = JsonSerializer.Serialize(file, camelCase: true); + json.ShouldBe("{\"fileName\":\"abp\",\"extraProperties\":{\"One\":1,\"Two\":2}}"); + + json = JsonSerializer.Serialize(file, camelCase: true, indented: true); + json.ShouldBe($"{{{newLine}{defaultIndent}\"fileName\": \"abp\",{newLine}{defaultIndent}\"extraProperties\": {{{newLine}{defaultIndent}{defaultIndent}\"One\": 1,{newLine}{defaultIndent}{defaultIndent}\"Two\": 2{newLine}{defaultIndent}}}{newLine}}}"); + + json = JsonSerializer.Serialize(file, camelCase: false); + json.ShouldBe("{\"FileName\":\"abp\",\"ExtraProperties\":{\"One\":1,\"Two\":2}}"); + + json = JsonSerializer.Serialize(file, camelCase: false, indented: true); + json.ShouldBe($"{{{newLine}{defaultIndent}\"FileName\": \"abp\",{newLine}{defaultIndent}\"ExtraProperties\": {{{newLine}{defaultIndent}{defaultIndent}\"One\": 1,{newLine}{defaultIndent}{defaultIndent}\"Two\": 2{newLine}{defaultIndent}}}{newLine}}}"); + } +} diff --git a/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpSystemTextJsonSerializerProvider_Tests.cs b/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpSystemTextJsonSerializerProvider_Tests.cs index e32df85d7f..49b321d46d 100644 --- a/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpSystemTextJsonSerializerProvider_Tests.cs +++ b/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpSystemTextJsonSerializerProvider_Tests.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.Text.Json; using Microsoft.Extensions.DependencyInjection; using Shouldly; using Volo.Abp.Data; @@ -11,11 +13,11 @@ namespace Volo.Abp.Json; public abstract class AbpSystemTextJsonSerializerProviderTestBase : AbpJsonSystemTextJsonTestBase { - protected AbpSystemTextJsonSerializer JsonSerializer; + protected IJsonSerializer JsonSerializer; public AbpSystemTextJsonSerializerProviderTestBase() { - JsonSerializer = GetRequiredService(); + JsonSerializer = GetRequiredService(); } public class TestExtensibleObjectClass : ExtensibleObject @@ -23,6 +25,13 @@ public abstract class AbpSystemTextJsonSerializerProviderTestBase : AbpJsonSyste public string Name { get; set; } } + public class File + { + public string FileName { get; set; } + + public Dictionary ExtraProperties { get; set; } + } + public class FileWithBoolean { public string Name { get; set; } @@ -74,6 +83,34 @@ public abstract class AbpSystemTextJsonSerializerProviderTestBase : AbpJsonSyste public class AbpSystemTextJsonSerializerProviderTests : AbpSystemTextJsonSerializerProviderTestBase { + [Fact] + public void Serialize_Deserialize_Test() + { + var defaultIndent = " "; // Default indent is 2 spaces + var newLine = Environment.NewLine; + var file = new File() + { + FileName = "abp", + ExtraProperties = new Dictionary() + { + { "One", 1 }, + { "Two", 2 } + } + }; + + var json = JsonSerializer.Serialize(file, camelCase: true); + json.ShouldBe("{\"fileName\":\"abp\",\"extraProperties\":{\"One\":1,\"Two\":2}}"); + + json = JsonSerializer.Serialize(file, camelCase: true, indented: true); + json.ShouldBe($"{{{newLine}{defaultIndent}\"fileName\": \"abp\",{newLine}{defaultIndent}\"extraProperties\": {{{newLine}{defaultIndent}{defaultIndent}\"One\": 1,{newLine}{defaultIndent}{defaultIndent}\"Two\": 2{newLine}{defaultIndent}}}{newLine}}}"); + + json = JsonSerializer.Serialize(file, camelCase: false); + json.ShouldBe("{\"FileName\":\"abp\",\"ExtraProperties\":{\"One\":1,\"Two\":2}}"); + + json = JsonSerializer.Serialize(file, camelCase: false, indented: true); + json.ShouldBe($"{{{newLine}{defaultIndent}\"FileName\": \"abp\",{newLine}{defaultIndent}\"ExtraProperties\": {{{newLine}{defaultIndent}{defaultIndent}\"One\": 1,{newLine}{defaultIndent}{defaultIndent}\"Two\": 2{newLine}{defaultIndent}}}{newLine}}}"); + } + [Fact] public void Serialize_Deserialize_With_Boolean() { @@ -223,6 +260,8 @@ public class AbpSystemTextJsonSerializerProviderDateTimeFormatTests : AbpSystemT options.InputDateTimeFormats.Add("yyyy*MM*dd"); options.OutputDateTimeFormat = "yyyy*MM*dd HH*mm*ss"; }); + + base.AfterAddApplication(services); } [Fact] @@ -289,6 +328,8 @@ public class AbpSystemTextJsonSerializerProviderDatetimeKindUtcTests : AbpSystem { Kind = DateTimeKind.Utc; services.Configure(x => x.Kind = Kind); + + base.AfterAddApplication(services); } } @@ -298,6 +339,8 @@ public class AbpSystemTextJsonSerializerProviderDatetimeKindLocalTests : AbpSyst { Kind = DateTimeKind.Local; services.Configure(x => x.Kind = Kind); + + base.AfterAddApplication(services); } } diff --git a/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/InputAndOutputDateTimeFormat_Tests.cs b/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/InputAndOutputDateTimeFormat_Tests.cs index cf6356477d..189a82cae0 100644 --- a/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/InputAndOutputDateTimeFormat_Tests.cs +++ b/framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/InputAndOutputDateTimeFormat_Tests.cs @@ -31,6 +31,8 @@ public class InputAndOutputDateTimeFormatSystemTextJsonTests : AbpJsonSystemText { options.Kind = DateTimeKind.Utc; }); + + base.AfterAddApplication(services); } [Fact] @@ -59,6 +61,7 @@ public class InputAndOutputDateTimeFormatSystemTextJsonTests : AbpJsonSystemText } } +[Collection("AbpJsonNewtonsoftJsonTest")] public class InputAndOutputDateTimeFormatNewtonsoftTests : AbpJsonNewtonsoftJsonTestBase { private readonly IJsonSerializer _jsonSerializer; @@ -83,6 +86,8 @@ public class InputAndOutputDateTimeFormatNewtonsoftTests : AbpJsonNewtonsoftJson { options.Kind = DateTimeKind.Utc; }); + + base.AfterAddApplication(services); } [Fact] diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Repositories/Repository_Basic_Tests.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Repositories/Repository_Basic_Tests.cs index e2ad9088cb..3df8699f6d 100644 --- a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Repositories/Repository_Basic_Tests.cs +++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Repositories/Repository_Basic_Tests.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Threading.Tasks; using MongoDB.Driver.Linq; using Shouldly; +using Volo.Abp.Data; using Volo.Abp.Domain.Repositories; using Volo.Abp.TestApp; using Volo.Abp.TestApp.Domain; @@ -52,10 +53,12 @@ public class Repository_Basic_Tests : Repository_Basic_Tests p.PersonId == person.Id && p.Number == "1234567890").ShouldBeTrue(); + person.GetProperty("test-guid-property").ShouldBe(person.Id); + person.GetProperty("test-nullable-guid-property").ShouldBe(person.Id); } - + [Fact] public async Task Filter_Case_Insensitive() { (await CityRepository.GetQueryableAsync()).FirstOrDefault(c => c.Name == "ISTANBUL").ShouldBeNull(); (await CityRepository.GetQueryableAsync()).FirstOrDefault(c => c.Name == "istanbul").ShouldBeNull(); (await CityRepository.GetQueryableAsync()).FirstOrDefault(c => c.Name == "Istanbul").ShouldNotBeNull(); - + (await PersonRepository.GetQueryableAsync()).FirstOrDefault(p => p.Name == "douglas").ShouldNotBeNull(); (await PersonRepository.GetQueryableAsync()).FirstOrDefault(p => p.Name == "DOUGLAS").ShouldNotBeNull(); (await PersonRepository.GetQueryableAsync()).FirstOrDefault(p => p.Name == "Douglas").ShouldNotBeNull(); diff --git a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/EntityCache_Tests.cs b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/EntityCache_Tests.cs index f1bd602102..679590ac31 100644 --- a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/EntityCache_Tests.cs +++ b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Testing/EntityCache_Tests.cs @@ -70,6 +70,29 @@ public abstract class EntityCache_Tests : TestAppTestBase MultiTenancyStringLocalizer @inject ITenantResolveResultAccessor TenantResolveResultAccessor +@inject IOptions ThemingOptions @{ Layout = null; @@ -34,6 +35,10 @@ + @if (!ThemingOptions.Value.BaseUrl.IsNullOrWhiteSpace()) + { + + } @(ViewBag.Title == null ? BrandingProvider.AppName : ViewBag.Title) diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml index c694c68424..c56c563017 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml @@ -1,4 +1,6 @@ -@using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook +@using Microsoft.Extensions.Options +@using Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers +@using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook @using Volo.Abp.AspNetCore.Mvc.UI.Layout @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.ContentTitle @@ -12,6 +14,8 @@ @using Volo.Abp.Ui.LayoutHooks @inject IBrandingProvider BrandingProvider @inject IPageLayout PageLayout +@inject IOptions ThemingOptions + @{ Layout = null; var containerClass = ViewBag.FluidLayout == true ? "container-fluid" : "container"; //TODO: Better and type-safe options @@ -40,6 +44,10 @@ + @if (!ThemingOptions.Value.BaseUrl.IsNullOrWhiteSpace()) + { + + } @pageTitle diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml index aaef7898c3..d88d1b7144 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml @@ -1,4 +1,6 @@ -@using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook +@using Microsoft.Extensions.Options +@using Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers +@using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook @using Volo.Abp.AspNetCore.Mvc.UI.Layout @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.PageAlerts @@ -10,6 +12,8 @@ @using Volo.Abp.Ui.LayoutHooks @inject IBrandingProvider BrandingProvider @inject IPageLayout PageLayout +@inject IOptions ThemingOptions + @{ Layout = null; var containerClass = ViewBag.FluidLayout == true ? "container-fluid" : "container"; //TODO: Better and type-safe options @@ -38,6 +42,10 @@ + @if (!ThemingOptions.Value.BaseUrl.IsNullOrWhiteSpace()) + { + + } @pageTitle @if (ViewBag.Description != null) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Components/TagHelperProperties/Default.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Components/TagHelperProperties/Default.cshtml new file mode 100644 index 0000000000..bd5ab49ba8 --- /dev/null +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Components/TagHelperProperties/Default.cshtml @@ -0,0 +1,32 @@ +@using System.Reflection + +@model List + +

Properties

+ +
    + @foreach (var property in Model) + { +
  • + @property.Name + @{ + var typeName = property.PropertyType.Name; + if (property.PropertyType.IsGenericType && property.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) + { + typeName = property.PropertyType.GetGenericArguments()[0].Name; + } + } + (@typeName) + @if (property.PropertyType.IsEnum) + { +
      +
    • + + [ @string.Join(", ", Enum.GetNames(property.PropertyType)) ] + +
    • +
    + } +
  • + } +
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Components/TagHelperProperties/Default.cshtml.cs b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Components/TagHelperProperties/Default.cshtml.cs new file mode 100644 index 0000000000..7103a10833 --- /dev/null +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Components/TagHelperProperties/Default.cshtml.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.AspNetCore.Razor.TagHelpers; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Components.TagHelperProperties; + +public class TagHelperPropertiesViewComponent : AbpViewComponent +{ + public List Properties { get; } = new(); + public IViewComponentResult Invoke(Type type) + { + foreach (var property in type.GetRuntimeProperties()) + { + if (typeof(AbpTagHelper).IsAssignableFrom(property.DeclaringType) && + property.GetCustomAttribute() == null && + !property.PropertyType.IsAbstract && + property.GetMethod?.IsPublic == true) + { + Properties.Add(property); + } + } + + return View("/Components/TagHelperProperties/Default.cshtml", Properties); + } +} diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Alerts.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Alerts.cshtml index fd4591073e..aed809d33b 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Alerts.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Alerts.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.AlertsModel @{ ViewData["Title"] = "Alerts"; @@ -258,4 +259,8 @@ - \ No newline at end of file + + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpAlertTagHelper)) \ No newline at end of file diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Badges.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Badges.cshtml index 602c752dfd..b097ae1a64 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Badges.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Badges.cshtml @@ -209,4 +209,8 @@ - \ No newline at end of file + + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpBadgeTagHelper)) \ No newline at end of file diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Blockquotes.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Blockquotes.cshtml index 34ab545163..63bfbd519c 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Blockquotes.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Blockquotes.cshtml @@ -30,3 +30,6 @@ +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpBlockquoteTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml index 7473c84bb8..4f7a7a93b6 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Borders.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.BordersModel @{ ViewData["Title"] = "Borders"; @@ -196,3 +197,7 @@ + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpBorderTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Breadcrumbs.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Breadcrumbs.cshtml index 4c4164a823..f7e056ed3b 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Breadcrumbs.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Breadcrumbs.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.BreadcrumbsModel @{ ViewData["Title"] = "Breadcrumbs"; @@ -77,3 +78,7 @@ + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpBreadcrumbTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ButtonGroups.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ButtonGroups.cshtml index 94e0d7ee70..36f3f41be3 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ButtonGroups.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ButtonGroups.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.ButtonGroupsModel @{ ViewData["Title"] = "ButtonGroups"; @@ -268,4 +269,8 @@ - \ No newline at end of file + + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpButtonGroupTagHelper)) \ No newline at end of file diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Buttons.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Buttons.cshtml index 08d1e0093a..ad6324614c 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Buttons.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Buttons.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.ButtonsModel @{ ViewData["Title"] = "Buttons"; @@ -258,4 +259,8 @@ - \ No newline at end of file + + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpButtonTagHelper)) \ No newline at end of file diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Cards.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Cards.cshtml index 2880f8b179..bfdf80e784 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Cards.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Cards.cshtml @@ -1,5 +1,7 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +@using Volo.Abp.DependencyInjection @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.CardsModel @{ ViewData["Title"] = "Cards"; @@ -41,7 +43,7 @@

-<div class="card" style="width: 18rem;">
+<div class="card mb-3" style="width: 18rem;">
   <img class="card-img-top" src=".../100px180/" alt="Card image cap">
   <div class="card-body">
     <h5 class="card-title">Card title</h5>
@@ -88,7 +90,7 @@
             
             
                 

-<div class="card" style="width: 18rem;">
+<div class="card mb-3" style="width: 18rem;">
   <div class="card-body">
     <h5 class="card-title">Card title</h5>
     <h6 class="card-subtitle mb-2 text-muted">Card subtitle</h6>
@@ -132,7 +134,7 @@
             
             
                 

-<div class="card" style="width: 18rem;">
+<div class="card mb-3" style="width: 18rem;">
   <ul class="list-group list-group-flush">
     <li class="list-group-item">Cras justo odio</li>
     <li class="list-group-item">Dapibus ac facilisis in</li>
@@ -174,7 +176,7 @@
             
             
                 

-<div class="card" style="width: 18rem;">
+<div class="card mb-3" style="width: 18rem;">
   <div class="card-header">
     Featured
   </div>
@@ -237,7 +239,7 @@
             
             
                 

-<div class="card" style="width: 18rem;">
+<div class="card mb-3" style="width: 18rem;">
   <img class="card-img-top" src=".../100px180/?text=Image cap" alt="Card image cap">
   <div class="card-body">
     <h5 class="card-title">Card title</h5>
@@ -290,7 +292,7 @@
             
             
                 

-<div class="card">
+<div class="card mb-3">
   <div class="card-header">
     Featured
   </div>
@@ -337,7 +339,7 @@
             
             
                 

-<div class="card">
+<div class="card mb-3">
   <div class="card-header">
     Quote
   </div>
@@ -586,4 +588,8 @@
             
         
     
-
\ No newline at end of file
+
+
+
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpCardTagHelper)) \ No newline at end of file diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Cards.cshtml.cs b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Cards.cshtml.cs index 4a5d541668..01323da4d0 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Cards.cshtml.cs +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Cards.cshtml.cs @@ -1,4 +1,10 @@ -using Microsoft.AspNetCore.Mvc.RazorPages; +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.AspNetCore.Razor.TagHelpers; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components; @@ -6,6 +12,6 @@ public class CardsModel : PageModel { public void OnGet() { - + } } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Carousel.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Carousel.cshtml index d1b6cbe0b1..9d44f19453 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Carousel.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Carousel.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.CarouselsModel @{ ViewData["Title"] = "Carousels"; @@ -266,3 +267,6 @@ +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpCarouselTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Collapse.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Collapse.cshtml index 728afc0a1e..b8b01ec60e 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Collapse.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Collapse.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.CollapseModel @{ ViewData["Title"] = "Collapse"; @@ -214,3 +215,28 @@ + +
+ + + + + +

abp-accordion

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpAccordionTagHelper)) + +
+ + + + +

abp-accordion-item

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpAccordionItemTagHelper)) + +
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DatePicker.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DatePicker.cshtml index b65eaf15be..800fc4bf36 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DatePicker.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DatePicker.cshtml @@ -1,4 +1,4 @@ -@page +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.DatePickerModel

Date Picker & Date Range Picker

@@ -775,5 +775,7 @@ public class DatePickerModel : PageModel +
+@await Component.InvokeAsync("TagHelperProperties", typeof(AbpDatePickerTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Dropdowns.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Dropdowns.cshtml index 3f5717033d..c2d84593cf 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Dropdowns.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Dropdowns.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.DropdownsModel @{ ViewData["Title"] = "Dropdowns"; @@ -735,4 +736,8 @@ - \ No newline at end of file + + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpDropdownTagHelper)) \ No newline at end of file diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml index cbec1ee01c..ab44e878c7 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/DynamicForms.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form @model DynamicFormsModel @{ @@ -428,4 +429,8 @@ public class DynamicFormsModel : PageModel - \ No newline at end of file + + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpDynamicFormTagHelper)) \ No newline at end of file diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/FormElements.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/FormElements.cshtml index e637aebfad..3ed17afd37 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/FormElements.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/FormElements.cshtml @@ -1,6 +1,7 @@ @page -@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components -@model FormElementsModel +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +@model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.FormElementsModel @{ ViewData["Title"] = "Form Elements"; @@ -65,7 +66,7 @@ <input type="password" data-val="true" data-val-required="The Password field is required." id="MyModel_Password" name="MyModel.Password" class="form-control "> <span class="text-danger field-validation-valid" data-valmsg-for="MyModel.Password" data-valmsg-replace="true"></span> </div> -<div class="form-check"> +<div class="mb-2 form-check"> <input type="checkbox" data-val="true" data-val-required="The CheckMeOut field is required." id="MyModel_CheckMeOut" name="MyModel.CheckMeOut" value="true" class="form-check-input "><input name="MyModel.CheckMeOut" type="hidden" value="false"> <label class="form-check-label" for="MyModel_CheckMeOut">Check Me Out</label> </div> @@ -495,4 +496,30 @@ - \ No newline at end of file + + +
+ + + + +

abp-input

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpInputTagHelper)) + +
+ + + + +

abp-select

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpSelectTagHelper)) + +
+ + diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Grids.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Grids.cshtml index 0e33d39c59..37a9ad4428 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Grids.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Grids.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Grid @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.GridsModel @{ ViewData["Title"] = "Grids"; @@ -830,4 +831,38 @@
+ + + + +

abp-container

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpContainerTagHelper)) + +
+ + + + +

abp-row

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpRowTagHelper)) + +
+ + + + +

abp-column

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpColumnTagHelper)) + +
+ < back \ No newline at end of file diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ListGroup.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ListGroup.cshtml index ce66b8d5aa..71668d3496 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ListGroup.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ListGroup.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.ListGroup @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.ListGroupsModel @{ ViewData["Title"] = "List Groups"; @@ -347,3 +348,7 @@ + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpListGroupTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Modals.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Modals.cshtml index 9e51ef25a3..fa208cb0a8 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Modals.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Modals.cshtml @@ -73,3 +73,7 @@ + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpModalTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Navs.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Navs.cshtml index ca9828d348..28d46eb59e 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Navs.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Navs.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Nav @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.NavsModel @{ ViewData["Title"] = "Navs"; @@ -201,3 +202,31 @@ + +
+ + + + +

abp-nav-bar

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpNavBarTagHelper)) + +
+ + + + +

abp-nav-item

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpNavItemTagHelper)) + +
+ + + + diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Paginator.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Paginator.cshtml index 00666c091a..77fe1530a3 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Paginator.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Paginator.cshtml @@ -1,4 +1,6 @@ @page +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Pagination @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.PaginatorModel @{ ViewData["Title"] = "Paginator"; @@ -89,3 +91,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpPaginationTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Popovers.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Popovers.cshtml index ddc87ba66d..10fb759853 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Popovers.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Popovers.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Popover @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.PopoversModel @{ ViewData["Title"] = "Popovers"; @@ -69,3 +70,7 @@ + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpPopoverTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ProgressBars.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ProgressBars.cshtml index 0390090e9a..3566c194db 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ProgressBars.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/ProgressBars.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.ProgressBar @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.ProgressBarsModel @{ ViewData["Title"] = "Progress Bars"; @@ -77,3 +78,7 @@ + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpProgressBarTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tables.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tables.cshtml index e39fe8cae3..f73a6d2ca5 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tables.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tables.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Table @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.TablesModel @{ ViewData["Title"] = "Tables"; @@ -449,3 +450,7 @@ + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpTableTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tabs.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tabs.cshtml index e9631ed179..a0efeb0c0a 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tabs.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tabs.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.TabsModel @{ ViewData["Title"] = "Tabs"; @@ -293,4 +294,39 @@ - \ No newline at end of file + + +
+ + + + +

abp-tab

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpTabTagHelper)) + +
+ + + + +

abp-tab-link

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpTabLinkTagHelper)) + +
+ + + + +

abp-tab-dropdown

+
+
+ + @await Component.InvokeAsync("TagHelperProperties", typeof(AbpTabDropdownTagHelper)) + +
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tooltips.cshtml b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tooltips.cshtml index f19161d515..7bbf1cd2da 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tooltips.cshtml +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Components/Tooltips.cshtml @@ -1,5 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tooltip @model Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Pages.Components.TooltipsModel @{ ViewData["Title"] = "Tooltips"; @@ -84,3 +85,7 @@ + +
+ +@await Component.InvokeAsync("TagHelperProperties", typeof(AbpTooltipTagHelper)) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Menus/BootstrapDemoMenuContributor.cs b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Menus/BootstrapDemoMenuContributor.cs index e36f329306..625fb60a80 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Menus/BootstrapDemoMenuContributor.cs +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Menus/BootstrapDemoMenuContributor.cs @@ -25,6 +25,7 @@ public class BootstrapDemoMenuContributor : IMenuContributor { new ApplicationMenuItem(BootstrapDemoMenus.Components.Alerts, "Alerts", url: "/Components/Alerts"), new ApplicationMenuItem(BootstrapDemoMenus.Components.Badges, "Badges", url: "/Components/Badges"), + new ApplicationMenuItem(BootstrapDemoMenus.Components.Blockquotes, "Blockquotes", url: "/Components/Blockquotes"), new ApplicationMenuItem(BootstrapDemoMenus.Components.Borders, "Borders", url: "/Components/Borders"), new ApplicationMenuItem(BootstrapDemoMenus.Components.Breadcrumbs, "Breadcrumbs", url: "/Components/Breadcrumbs"), new ApplicationMenuItem(BootstrapDemoMenus.Components.Buttons, "Buttons", url: "/Components/Buttons"), diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Menus/BootstrapDemoMenus.cs b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Menus/BootstrapDemoMenus.cs index 2f381221ed..7a758523af 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Menus/BootstrapDemoMenus.cs +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Pages/Menus/BootstrapDemoMenus.cs @@ -11,6 +11,7 @@ public class BootstrapDemoMenus public const string Alerts = Root + ".Alerts"; public const string Badges = Root + ".Badges"; public const string Borders = Root + ".Borders"; + public const string Blockquotes = Root + ".Blockquotes"; public const string Breadcrumbs = Root + ".Breadcrumbs"; public const string ButtonGroups = Root + ".ButtonGroups"; public const string Buttons = Root + ".Buttons"; diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Program.cs b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Program.cs index ad3a39c746..ac9601cda3 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Program.cs +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Program.cs @@ -1,31 +1,42 @@ using System; -using System.IO; -using Microsoft.AspNetCore.Hosting; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Serilog; -using Serilog.Events; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo; public class Program { - public static int Main(string[] args) + public async static Task Main(string[] args) { Log.Logger = new LoggerConfiguration() - .MinimumLevel.Debug() //TODO: Should be configurable! - .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .MinimumLevel.Debug() .Enrich.FromLogContext() - .WriteTo.File("Logs/logs.txt") + .WriteTo.Async(c => c.Console()) .CreateLogger(); try { Log.Information("Starting web host."); - CreateHostBuilder(args).Build().Run(); + var builder = WebApplication.CreateBuilder(args); + builder.Host.AddAppSettingsSecretsJson() + .UseAutofac() + .UseSerilog(); + await builder.AddApplicationAsync(); + var app = builder.Build(); + await app.InitializeApplicationAsync(); + await app.RunAsync(); return 0; } catch (Exception ex) { + if (ex is HostAbortedException) + { + throw; + } + Log.Fatal(ex, "Host terminated unexpectedly!"); return 1; } @@ -34,14 +45,4 @@ public class Program Log.CloseAndFlush(); } } - - - internal static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }) - .UseAutofac() - .UseSerilog(); } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Properties/launchSettings.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Properties/launchSettings.json index 07a310a660..7ad9d24119 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Properties/launchSettings.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Properties/launchSettings.json @@ -1,27 +1,12 @@ { - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:51339", - "sslPort": 0 - } - }, "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "Volo.AbpIo.Commercial.Web": { + "Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo": { "commandName": "Project", "launchBrowser": true, - "applicationUrl": "http://localhost:5000", + "applicationUrl": "https://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } -} \ No newline at end of file +} diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Startup.cs b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Startup.cs deleted file mode 100644 index 838cf43402..0000000000 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Startup.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo; - -public class Startup -{ - public void ConfigureServices(IServiceCollection services) - { - services.AddApplication(); - } - - public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) - { - app.InitializeApplication(); - } -} diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj index f8202b97ec..9aa8142fda 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj @@ -10,7 +10,7 @@ - + @@ -23,5 +23,5 @@ Always - + 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 07243c6b48..aec1b7a084 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,8 +3,8 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~9.2.0-rc.1", - "@abp/prismjs": "~9.2.0-rc.1", - "@abp/highlight.js": "~9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.shared": "~9.2.0-rc.2", + "@abp/prismjs": "~9.2.0-rc.2", + "@abp/highlight.js": "~9.2.0-rc.2" } } 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 10c9152cc6..0f4ff2d889 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,203 +2,203 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.1.tgz#4fb738ad5a6ac85165cf3e45893615d1762d43ed" - integrity sha512-TCW7nGGMqnBD8n2Jc1r9ht2HixRj8kDOZJysQUd3uHNmTBCO1b5cBjxL4ksSzM98/kEs6i0q6OTasqJrxHuHNA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.1" - "@abp/bootstrap" "~9.2.0-rc.1" - "@abp/bootstrap-datepicker" "~9.2.0-rc.1" - "@abp/bootstrap-daterangepicker" "~9.2.0-rc.1" - "@abp/datatables.net-bs5" "~9.2.0-rc.1" - "@abp/font-awesome" "~9.2.0-rc.1" - "@abp/jquery-form" "~9.2.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.1" - "@abp/lodash" "~9.2.0-rc.1" - "@abp/luxon" "~9.2.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.1" - "@abp/moment" "~9.2.0-rc.1" - "@abp/select2" "~9.2.0-rc.1" - "@abp/sweetalert2" "~9.2.0-rc.1" - "@abp/timeago" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.1.tgz#d2a2c5fc25444eedf2f4ea92505ba4aede86b771" - integrity sha512-vgdJFOzxqwuaDcMhzIHHn1wIJbIar/NzJxpbUBjRWjnZzrKKerDLF9FuDegpU1fX3nOvunI11zSFT3yCuMHebQ== +"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.2.tgz#77562013b604d0193e361efa6801235179dc7b4f" + integrity sha512-5KcMGg6o6W5uwsujrjUARlZFgWmZeYBNCf1vkf3btakkwTzmPDbypUx6VrgBJbt4AUnYlMQbSHvbfK0d3I1e6w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.2" + "@abp/bootstrap" "~9.2.0-rc.2" + "@abp/bootstrap-datepicker" "~9.2.0-rc.2" + "@abp/bootstrap-daterangepicker" "~9.2.0-rc.2" + "@abp/datatables.net-bs5" "~9.2.0-rc.2" + "@abp/font-awesome" "~9.2.0-rc.2" + "@abp/jquery-form" "~9.2.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.2" + "@abp/lodash" "~9.2.0-rc.2" + "@abp/luxon" "~9.2.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.2" + "@abp/moment" "~9.2.0-rc.2" + "@abp/select2" "~9.2.0-rc.2" + "@abp/sweetalert2" "~9.2.0-rc.2" + "@abp/timeago" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.2.tgz#e1c0e4b0280d5fe37659da8dc696150f0d461336" + integrity sha512-WG4WWGS1mSb2QWAVOA2nrvoi9/3oueEaKEG18xbPgWiLz5GCq8gsopKqUgW/fmBaw+1Jh9tsuCTH7eED/2tUxA== dependencies: ansi-colors "^4.1.3" -"@abp/bootstrap-datepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.1.tgz#b548840efb6a9c8d9acabf828af4e95628be6cbe" - integrity sha512-ClR+fiOiUccEIvbeAgfo2+Z3eZYp7MRIVrll8Rh93oKr6C0XzjwA7acSGe87CS3e5wkUXMsKtqmRX+eSXyJBPQ== +"@abp/bootstrap-datepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.2.tgz#429c2d44a22f9190013aea0efa420854b7e83a4f" + integrity sha512-bxMpaxTgnF5/VELbKvtZVw0tI0bowzUQFVSBQJqO4o7wJmxyHNzJuaom8Is+tCsoMrpo8t9EGMGfpWHV1IsrjQ== dependencies: bootstrap-datepicker "^1.10.0" -"@abp/bootstrap-daterangepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.1.tgz#e7174841889b80f7beddaeb84be7a0b908cc34a3" - integrity sha512-CzSutc7rtYzd4jzTTiKlUmFGlZk70DTcp/tnuD7rVWZp7Njr2INfwGlgt7P7Hj3g9Wt3j0mAM+IDz9t2rleqtA== +"@abp/bootstrap-daterangepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.2.tgz#85bb869d5d43eb6c97f50943ea2c390cb4d37d54" + integrity sha512-rLLsY6GCY16IOwRkmx7vZ25sVHOM9dPdTlcZiuUuEi5+QrmgGiqZmIwqYiu4WFSPPTJtufsyMaHzXxqiZRpXVg== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.1.tgz#87c17c50a9e8f6fdb6474541aeaadf1ebb1d6b1b" - integrity sha512-tgOIGY7HfiwgM9QUpcydZN9tdKSrm6mYPzECBDU866xWi8aUeLZp12hLoSL94M1iZ6jchbZaqTqMOy00Tc0FCQ== +"@abp/bootstrap@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.2.tgz#ba2ab98d930501e7f004f99e7d7e7d4e6d3c0998" + integrity sha512-u2mtHHbmXNgngExl4hM5uo/E3k453n0im2Ci02+4dnhZoFicLZlBdtJusZAw5QR1XTLPybW6RXofWBvkZcgiwg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" bootstrap "^5.3.3" -"@abp/clipboard@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.1.tgz#50069847848714fb155d35b656563f26f2fd870c" - integrity sha512-3lEUrQNje436F8t4nhTrIrFru1A1ZGJHgsYaXR6At50hNwWHcE1LtZKJnXm4am0dALJK/uwv4p7BfNT9Edo11A== +"@abp/clipboard@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.2.tgz#608bdb3d4a3ff1a7b38ad5850385746f7cfe6c0c" + integrity sha512-w/JiTmidNc7SZuvpkQumyNj6FTBq6hLnhXeBBh4/xega1Ob2q+tbrOSpemgpK6YOXUQbmH8a4vEPvwt7uzNfvQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" clipboard "^2.0.11" -"@abp/core@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.1.tgz#30fb627e750f651b4d1819461e3ffeb5fc6d9011" - integrity sha512-Adb4sk9oZJaxL19RbM1opLGWn2kKzRUcFLH6lNG2QYCAXf74y/YfFLQyoZSrTKS1M+hkGjIrEW6GssAgHTCJeg== +"@abp/core@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.2.tgz#0eab20842f8c0801d1dca036d3d66a67e155e019" + integrity sha512-8bC1MAV4iSFLJvRvM5mvrI9+N5FPAjaG79hr3p0xJtNixFOFpNELDf4p0zwy97zY8juL+AIEyJAkg+KIIK90DQ== dependencies: - "@abp/utils" "~9.2.0-rc.1" + "@abp/utils" "~9.2.0-rc.2" -"@abp/datatables.net-bs5@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.1.tgz#7d56850b6e46f744c794e40d08aeb5fd1a7543ee" - integrity sha512-PFt0PruHikzXzcEKtykwnRo+Z0D+njmhaoJk4J11yoZjvSFOAQXIRdsVgFgJub8REN3I57eG9PPCl3AZwAba9w== +"@abp/datatables.net-bs5@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.2.tgz#8c07544cafd2d2257f45150d3265c25eafc0ec0f" + integrity sha512-l3VOtc0fleUsx+ZUMr49+nPBWRBUVw4Z26ogT7O7uRR8doeerNU1GfA4yFJCUp02WIwt8cmZ+apJHADykn9Vng== dependencies: - "@abp/datatables.net" "~9.2.0-rc.1" + "@abp/datatables.net" "~9.2.0-rc.2" datatables.net-bs5 "^2.1.8" -"@abp/datatables.net@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.1.tgz#8d165f404e85a54a4e92887173a3d01f827ba5ef" - integrity sha512-rEvCSJWH2l505Nb7Nqa0tL1iFpnMZ+WxnfbomaqdSpL6YsCUd8syeGI37V+LQUknXGsUFqGVyazPrU3vjIR8Kg== +"@abp/datatables.net@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.2.tgz#2880ccb61750faa1689aec15f9e49d92ab1e94a1" + integrity sha512-nljq0p8mxoBvMZngtViInyQJqX/MI7EyQeCIYNICF2LO42RRZfpKaRy5zX+4Uc3z/wz209CfK8QfRNH/d1HtBQ== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" datatables.net "^2.1.8" -"@abp/font-awesome@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.1.tgz#758b4028fa5f6d11bb675ff465fc222e3b656c01" - integrity sha512-H0fmIM/YAkT64LLMub0eDzpxvrNVjkFrRgX4YM10U/AQ0gILxjuEapRxv3+ueIJiy3DiBLkPWQ+SQN3Lwh4FOA== +"@abp/font-awesome@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.2.tgz#51eb750f5697668db538ad68cc6b9279517da537" + integrity sha512-X9JfF4n4MDZLszwZHIHuxSdGGxImEzV91ROKqNeclErCx3bOXyq/l9C+haZl/3TLzTAOSDMLgHGrT3MUCVPF5w== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" "@fortawesome/fontawesome-free" "^6.6.0" -"@abp/highlight.js@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-9.2.0-rc.1.tgz#2eabf8c5aa61a7dfa1462d87853cc37774e6b021" - integrity sha512-xmyUIB/ZNpObnZf2JeJaOgSSnowxqlkk8OUoVzjthmsVszWGJU3l8TABjWpReJclywFlrsXGZPqvg/LIuDN8tA== +"@abp/highlight.js@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-9.2.0-rc.2.tgz#9865cae50e39cca9ddd0c0390da794778ed36779" + integrity sha512-43NEl2omc8HWJjprEJpcMtb88QCD9bTCXrW7e2CO8ReyFuEoQh+79c0q2E5xJ5aitZpFhq4j4OOxxzUvAKORKw== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" "@highlightjs/cdn-assets" "~11.10.0" -"@abp/jquery-form@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.1.tgz#558bcf9da8912e0014b407018d1f0fb7ab294bf0" - integrity sha512-MzhptVbyZ7WNYAw4KmWiI4WnR8H16jBshceO7DFtfyZDRUU0n4ZPTYs1rGlj4+5iv2B7r8dci0Nx94bkId7FwA== +"@abp/jquery-form@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.2.tgz#58ce31a32bdfb355e5d4e3f97cb4761f594aa8e1" + integrity sha512-xN2xjK1RWKygwaqzTaWmpMlU0kGWGa2nKaudM6g9k/B6b1Pfdr8ykI4DaSuPb4BkRmurGkgy4r9o7IUoqv0T8Q== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.1.tgz#48b227ee95e0d7a12efbdfbdf1a28e3003dcdb8f" - integrity sha512-wTo5/oqU1TVOuuYfsu6XipryW2rrSx+bebP4fm/lQ1cZF+Ki1Rbvt5p+3fIGZfg8dJRMKXCtL3UYyadKTlqJ8A== +"@abp/jquery-validation-unobtrusive@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.2.tgz#4e624e22cbf149d1c78da46aabaf6fc18d3b65ff" + integrity sha512-adKJxnWnhCrIYWoVdo41zgO5p4SjyypCxoHeQ7mkohry2WN6WuQG5nmHqhpdevw966DENvmVzFfz7vnO72vtrg== dependencies: - "@abp/jquery-validation" "~9.2.0-rc.1" + "@abp/jquery-validation" "~9.2.0-rc.2" jquery-validation-unobtrusive "^4.0.0" -"@abp/jquery-validation@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.1.tgz#fae0ce1e0db0af62f80836d3e982c9a79f7b1209" - integrity sha512-c2+BwErN2w6ikbOYuuSQHZeMdLaKR7l0CIvwtUnzwCHjdUGAbMX9w9lYwnO6R6DsNCV7Cb5+YrbjM7jGY7zMiQ== +"@abp/jquery-validation@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.2.tgz#b6a8124d5056ddad515733bffc78703f6bd422be" + integrity sha512-4j1fg1qImif2vFZQFJ7z1olEUnjc3BByKS+7joNQ+96/NqOQdOQjRjB2n490od7ExCinKnvYx3JFttpYjHU3Xw== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-validation "^1.21.0" -"@abp/jquery@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.1.tgz#a930c1ef6a17a831cd7d064b7cbb20d604fbc4bb" - integrity sha512-qc461cJOQvEX95JbIFtDLj5dxUUDyP7PUXP8SjCvxP4GURoKhjxx0j0U0mBkMDJMrSrvALFKbF5S6OlgdgaPGQ== +"@abp/jquery@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.2.tgz#335643787ab282d5d2fee4f360c2b62cce3db962" + integrity sha512-baKNDuiQMzkV0LFzBwEqS0JYtXIUe5KH+MVizGR6Zv10B8l/gIrUzWI/nnqDtbts6gmY9OBDXkCTcgMQBwKqjw== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" jquery "~3.7.1" -"@abp/lodash@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.1.tgz#0e0b455c84c6b6c52a3aaf1ccc4c704f49503ac8" - integrity sha512-Bg2Bz7G04jvz+QRXLlK3A2eUBR3Ef1rq622jWsaKo4fW4rCdHkZBbjeqYDLYc1PqDIJawhEdIByh8VzMgRd6tA== +"@abp/lodash@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.2.tgz#521bccafcc09780c751932688b6ec45c368c2854" + integrity sha512-T6eYsDovUl4AYD9n2N4WZq9MeC4/ryke5ctvdhzuArqM7WpPvohq3VKGugrP/MLo9oD3MZ5DVQvMJ0AVg+IXNQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" lodash "^4.17.21" -"@abp/luxon@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.1.tgz#275726bf1f9ff14cdf902a7ea64213a3e7434927" - integrity sha512-vga0taYVDPGwcAQqFe6pAEAUu3vRH7MgxBQdMrEX80YhsSJevPHSl6jG3ey5IqWOy4dpMyiN4v7gWBHJ93mbFg== +"@abp/luxon@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.2.tgz#da366d335f9575b104ea2206e076af35cbbfcfba" + integrity sha512-mr8ipYrJDDJPoImIwORK7Z6d1C07APl95L17ufRbig4sjdxjNEDR5uUXVviVafF1No2bVkYiS0xGKQmojA2twg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" luxon "^3.5.0" -"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.1.tgz#3d4c17a9d6ace815e4bc4dc825d0020474a794f7" - integrity sha512-Cqs6A88bWggdtDoiCREBTXknCI+c7vhmZ/SM84k4NfwzlPscZYMCbtJlrln4g3zmElJwwBPerl0Gs778kUOjog== +"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.2.tgz#cb79018adf08276041eb5c5dcf75130c8995686b" + integrity sha512-jdHXx7kPduaEfFXDvf5s+QVl10RqshNbnZkkqPx0mMkhz2H/qxwzF1e0mcLFL38nEgs+0gxIkcA8/MKq85tyqQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.1.tgz#1604d38429f1e0484223ea4a7a3a10f1785420f4" - integrity sha512-5VnPhCOnTug7tqlLsg46LY84LU5DrYNKxm5T3oz+OFq4I05Ut/LWGElRvOnEFxfFfkYuJvbxih3trAGuEJD6+A== +"@abp/moment@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.2.tgz#f4339138668ca72be1d700624b91789344557bff" + integrity sha512-J4ZaCDEcXLGmJ+8zqgaMK9Lutnjga28LSbuiFaGLlZ1QgYZ5HDScE128o3vX9qr60tc6IIY0cDkHi4bBHo7ozw== dependencies: moment "^2.30.1" -"@abp/prismjs@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.1.tgz#623659c50c776bc8efcb7eacea70b2704ff87eec" - integrity sha512-QZ6NY4TXmWzrrZViN8v3CgH2l4fQUpEZLPsUaEmiRtq3+3meCaM3hxgNEOvcUg5IHZI7cPBRabQtVKoAPozcvQ== +"@abp/prismjs@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.2.tgz#1ee12acdd9e1dcc9ae2ce4a9f21f159c3f9e3dec" + integrity sha512-GuKz6bujBlYHAgLhW1RT7aEOwKyZ+vnyMIhN0/fQ34+nbqg0PC4htwJcN6spgN8gZKD06lCqBH+GjLE2WtE/Rw== dependencies: - "@abp/clipboard" "~9.2.0-rc.1" - "@abp/core" "~9.2.0-rc.1" + "@abp/clipboard" "~9.2.0-rc.2" + "@abp/core" "~9.2.0-rc.2" prismjs "^1.29.0" -"@abp/select2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.1.tgz#6f378c9bd4a01dbe72bf41f175c964e36353ef4e" - integrity sha512-HlQtSmY3VRIbCbTJnWFmvPeUmHYX8cI5z0Dwa30/TNPWDQuws5Yx3F4B9crw6AC/EIzCobsAZ4QhsgQxsUHNvg== +"@abp/select2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.2.tgz#ba6e839644b7ecdd198fe5286101302a3dc79ce3" + integrity sha512-AQMXb5ATgbN7grpKU8lB2xFFfirCe45lIvd9krW5SwUHCYZP7pRPbwQXAew+BqlIIYJJF2GA7/Nf//e/71bKtg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.1.tgz#b70784ff038ff4d6cdc07a7ef35edd7da5dfaa23" - integrity sha512-cJVdPB1hh7AtmfmcLLAFGxFDYc08sjtRS5kJ37ru9WFVOyzF1A99QgMOEBSB6BGKNbkCJwQbkwGCHjtQTHQ46w== +"@abp/sweetalert2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.2.tgz#075634dc3ec996607757694d636d276ba2350e06" + integrity sha512-ZgHgqM8Q+V9ECQyAyepM5KpshKpQP463xRHwgY45oR7/CfCcO/vS56YQgJNg2zE6+lRQZaRQ9OL7lph8975vVg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" sweetalert2 "^11.14.1" -"@abp/timeago@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.1.tgz#689fa9c9d4b0c0a239b37cd4d045dfb745f392df" - integrity sha512-mNmmRVzGryW45woLmDrxVnUCSi2+Xp2djHNKe7VF4D2Xywos9yxEImTX8B9lB0QMWl8BawsZCz/jsC3QURkXGw== +"@abp/timeago@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.2.tgz#25324732966438bd6f505bdd932511ba2cc8c22b" + integrity sha512-WfWxxiycg77vVN2hPHqUOu552la+zxr0EZnHMqnEnnBe+gFYe9C0CpdYuyBq2eQXRXHoVzsB+4YRVNk5sbSGng== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" timeago "^1.6.7" -"@abp/utils@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.1.tgz#508d9922c842f2a76fc748574f0ae3a9954b6895" - integrity sha512-XFaBI4qxeXixAtapXRzETkS60+5XkZeEnW9O3wyHU6r4rEtIdOHo9w7t/vM5b5KAUlcEE02jS6pcqlJHd7miqw== +"@abp/utils@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.2.tgz#669885ad1e3ac7b8e182d7c392ea1b633df65aac" + integrity sha512-rfQxhJy04Qf50P3ciasKbDlJ+9JidD60xW77TjcoUJvljJE+A8iwTX8Wwqz7+YcC7rks2ILM4y3Ay7/47NOICQ== dependencies: just-compare "^2.3.0" diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/AbpAspNetCoreMvcUiThemeBasicDemoModule.cs b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/AbpAspNetCoreMvcUiThemeBasicDemoModule.cs index 4ebeb18498..c887825b2b 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/AbpAspNetCoreMvcUiThemeBasicDemoModule.cs +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/AbpAspNetCoreMvcUiThemeBasicDemoModule.cs @@ -55,8 +55,8 @@ public class AbpAspNetCoreMvcUiThemeBasicDemoModule : AbpModule app.UseDeveloperExceptionPage(); } - app.MapAbpStaticAssets(); app.UseRouting(); + app.MapAbpStaticAssets(); app.UseConfiguredEndpoints(); } } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Program.cs b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Program.cs index a27f797715..d2ca3053b8 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Program.cs +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Program.cs @@ -1,30 +1,42 @@ using System; -using Microsoft.AspNetCore.Hosting; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Serilog; -using Serilog.Events; namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo; public class Program { - public static int Main(string[] args) + public async static Task Main(string[] args) { Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .Enrich.FromLogContext() - .WriteTo.Async(c => c.File("Logs/logs.txt")) .WriteTo.Async(c => c.Console()) .CreateLogger(); try { Log.Information("Starting web host."); - CreateHostBuilder(args).Build().Run(); + var builder = WebApplication.CreateBuilder(args); + builder.Host.AddAppSettingsSecretsJson() + .UseAutofac() + .UseSerilog(); + await builder.AddApplicationAsync(); + var app = builder.Build(); + await app.InitializeApplicationAsync(); + await app.RunAsync(); return 0; } catch (Exception ex) { + if (ex is HostAbortedException) + { + throw; + } + Log.Fatal(ex, "Host terminated unexpectedly!"); return 1; } @@ -33,14 +45,4 @@ public class Program Log.CloseAndFlush(); } } - - - internal static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }) - .UseAutofac() - .UseSerilog(); } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Properties/launchSettings.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Properties/launchSettings.json index 9bee4298ff..4ae3999794 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Properties/launchSettings.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Properties/launchSettings.json @@ -1,24 +1,9 @@ { - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:61659", - "sslPort": 0 - } - }, "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo": { "commandName": "Project", "launchBrowser": true, - "applicationUrl": "http://localhost:5000", + "applicationUrl": "https://localhost:5001", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Startup.cs b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Startup.cs deleted file mode 100644 index a11ca855da..0000000000 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Startup.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo; - -public class Startup -{ - public void ConfigureServices(IServiceCollection services) - { - services.AddApplication(); - } - - public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) - { - app.InitializeApplication(); - } -} 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 a20c06d000..94e80fd62f 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": "~9.2.0-rc.1", - "@abp/prismjs": "~9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.2", + "@abp/prismjs": "~9.2.0-rc.2" }, "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 908daa61ec..f48539b111 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,202 +2,202 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.1.tgz#00f6c73e8e38578cfb6eb10214a8e4347dda75b3" - integrity sha512-Ophg50dxq2E4A2PgAtErDZ8LQfgAoT1ipZv4H3lxu0GwtRXrLEScfykHVDScTHJVpTF8Z549zYQl3jYtPJACog== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.1.tgz#4fb738ad5a6ac85165cf3e45893615d1762d43ed" - integrity sha512-TCW7nGGMqnBD8n2Jc1r9ht2HixRj8kDOZJysQUd3uHNmTBCO1b5cBjxL4ksSzM98/kEs6i0q6OTasqJrxHuHNA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.1" - "@abp/bootstrap" "~9.2.0-rc.1" - "@abp/bootstrap-datepicker" "~9.2.0-rc.1" - "@abp/bootstrap-daterangepicker" "~9.2.0-rc.1" - "@abp/datatables.net-bs5" "~9.2.0-rc.1" - "@abp/font-awesome" "~9.2.0-rc.1" - "@abp/jquery-form" "~9.2.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.1" - "@abp/lodash" "~9.2.0-rc.1" - "@abp/luxon" "~9.2.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.1" - "@abp/moment" "~9.2.0-rc.1" - "@abp/select2" "~9.2.0-rc.1" - "@abp/sweetalert2" "~9.2.0-rc.1" - "@abp/timeago" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.1.tgz#d2a2c5fc25444eedf2f4ea92505ba4aede86b771" - integrity sha512-vgdJFOzxqwuaDcMhzIHHn1wIJbIar/NzJxpbUBjRWjnZzrKKerDLF9FuDegpU1fX3nOvunI11zSFT3yCuMHebQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.2.tgz#e32c8bd046d7377ae3f6a703eac9069e10bcd600" + integrity sha512-oj4lGrzllgGrq7rI7gz1Xvq5TU+xT+isGVf4T8hF3INE/J2nIyK45HnkjDq5wpdM3P+HkdM1+RtWNrLSVu0Klg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.2.tgz#77562013b604d0193e361efa6801235179dc7b4f" + integrity sha512-5KcMGg6o6W5uwsujrjUARlZFgWmZeYBNCf1vkf3btakkwTzmPDbypUx6VrgBJbt4AUnYlMQbSHvbfK0d3I1e6w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.2" + "@abp/bootstrap" "~9.2.0-rc.2" + "@abp/bootstrap-datepicker" "~9.2.0-rc.2" + "@abp/bootstrap-daterangepicker" "~9.2.0-rc.2" + "@abp/datatables.net-bs5" "~9.2.0-rc.2" + "@abp/font-awesome" "~9.2.0-rc.2" + "@abp/jquery-form" "~9.2.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.2" + "@abp/lodash" "~9.2.0-rc.2" + "@abp/luxon" "~9.2.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.2" + "@abp/moment" "~9.2.0-rc.2" + "@abp/select2" "~9.2.0-rc.2" + "@abp/sweetalert2" "~9.2.0-rc.2" + "@abp/timeago" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.2.tgz#e1c0e4b0280d5fe37659da8dc696150f0d461336" + integrity sha512-WG4WWGS1mSb2QWAVOA2nrvoi9/3oueEaKEG18xbPgWiLz5GCq8gsopKqUgW/fmBaw+1Jh9tsuCTH7eED/2tUxA== dependencies: ansi-colors "^4.1.3" -"@abp/bootstrap-datepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.1.tgz#b548840efb6a9c8d9acabf828af4e95628be6cbe" - integrity sha512-ClR+fiOiUccEIvbeAgfo2+Z3eZYp7MRIVrll8Rh93oKr6C0XzjwA7acSGe87CS3e5wkUXMsKtqmRX+eSXyJBPQ== +"@abp/bootstrap-datepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.2.tgz#429c2d44a22f9190013aea0efa420854b7e83a4f" + integrity sha512-bxMpaxTgnF5/VELbKvtZVw0tI0bowzUQFVSBQJqO4o7wJmxyHNzJuaom8Is+tCsoMrpo8t9EGMGfpWHV1IsrjQ== dependencies: bootstrap-datepicker "^1.10.0" -"@abp/bootstrap-daterangepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.1.tgz#e7174841889b80f7beddaeb84be7a0b908cc34a3" - integrity sha512-CzSutc7rtYzd4jzTTiKlUmFGlZk70DTcp/tnuD7rVWZp7Njr2INfwGlgt7P7Hj3g9Wt3j0mAM+IDz9t2rleqtA== +"@abp/bootstrap-daterangepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.2.tgz#85bb869d5d43eb6c97f50943ea2c390cb4d37d54" + integrity sha512-rLLsY6GCY16IOwRkmx7vZ25sVHOM9dPdTlcZiuUuEi5+QrmgGiqZmIwqYiu4WFSPPTJtufsyMaHzXxqiZRpXVg== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.1.tgz#87c17c50a9e8f6fdb6474541aeaadf1ebb1d6b1b" - integrity sha512-tgOIGY7HfiwgM9QUpcydZN9tdKSrm6mYPzECBDU866xWi8aUeLZp12hLoSL94M1iZ6jchbZaqTqMOy00Tc0FCQ== +"@abp/bootstrap@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.2.tgz#ba2ab98d930501e7f004f99e7d7e7d4e6d3c0998" + integrity sha512-u2mtHHbmXNgngExl4hM5uo/E3k453n0im2Ci02+4dnhZoFicLZlBdtJusZAw5QR1XTLPybW6RXofWBvkZcgiwg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" bootstrap "^5.3.3" -"@abp/clipboard@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.1.tgz#50069847848714fb155d35b656563f26f2fd870c" - integrity sha512-3lEUrQNje436F8t4nhTrIrFru1A1ZGJHgsYaXR6At50hNwWHcE1LtZKJnXm4am0dALJK/uwv4p7BfNT9Edo11A== +"@abp/clipboard@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.2.tgz#608bdb3d4a3ff1a7b38ad5850385746f7cfe6c0c" + integrity sha512-w/JiTmidNc7SZuvpkQumyNj6FTBq6hLnhXeBBh4/xega1Ob2q+tbrOSpemgpK6YOXUQbmH8a4vEPvwt7uzNfvQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" clipboard "^2.0.11" -"@abp/core@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.1.tgz#30fb627e750f651b4d1819461e3ffeb5fc6d9011" - integrity sha512-Adb4sk9oZJaxL19RbM1opLGWn2kKzRUcFLH6lNG2QYCAXf74y/YfFLQyoZSrTKS1M+hkGjIrEW6GssAgHTCJeg== +"@abp/core@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.2.tgz#0eab20842f8c0801d1dca036d3d66a67e155e019" + integrity sha512-8bC1MAV4iSFLJvRvM5mvrI9+N5FPAjaG79hr3p0xJtNixFOFpNELDf4p0zwy97zY8juL+AIEyJAkg+KIIK90DQ== dependencies: - "@abp/utils" "~9.2.0-rc.1" + "@abp/utils" "~9.2.0-rc.2" -"@abp/datatables.net-bs5@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.1.tgz#7d56850b6e46f744c794e40d08aeb5fd1a7543ee" - integrity sha512-PFt0PruHikzXzcEKtykwnRo+Z0D+njmhaoJk4J11yoZjvSFOAQXIRdsVgFgJub8REN3I57eG9PPCl3AZwAba9w== +"@abp/datatables.net-bs5@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.2.tgz#8c07544cafd2d2257f45150d3265c25eafc0ec0f" + integrity sha512-l3VOtc0fleUsx+ZUMr49+nPBWRBUVw4Z26ogT7O7uRR8doeerNU1GfA4yFJCUp02WIwt8cmZ+apJHADykn9Vng== dependencies: - "@abp/datatables.net" "~9.2.0-rc.1" + "@abp/datatables.net" "~9.2.0-rc.2" datatables.net-bs5 "^2.1.8" -"@abp/datatables.net@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.1.tgz#8d165f404e85a54a4e92887173a3d01f827ba5ef" - integrity sha512-rEvCSJWH2l505Nb7Nqa0tL1iFpnMZ+WxnfbomaqdSpL6YsCUd8syeGI37V+LQUknXGsUFqGVyazPrU3vjIR8Kg== +"@abp/datatables.net@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.2.tgz#2880ccb61750faa1689aec15f9e49d92ab1e94a1" + integrity sha512-nljq0p8mxoBvMZngtViInyQJqX/MI7EyQeCIYNICF2LO42RRZfpKaRy5zX+4Uc3z/wz209CfK8QfRNH/d1HtBQ== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" datatables.net "^2.1.8" -"@abp/font-awesome@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.1.tgz#758b4028fa5f6d11bb675ff465fc222e3b656c01" - integrity sha512-H0fmIM/YAkT64LLMub0eDzpxvrNVjkFrRgX4YM10U/AQ0gILxjuEapRxv3+ueIJiy3DiBLkPWQ+SQN3Lwh4FOA== +"@abp/font-awesome@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.2.tgz#51eb750f5697668db538ad68cc6b9279517da537" + integrity sha512-X9JfF4n4MDZLszwZHIHuxSdGGxImEzV91ROKqNeclErCx3bOXyq/l9C+haZl/3TLzTAOSDMLgHGrT3MUCVPF5w== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" "@fortawesome/fontawesome-free" "^6.6.0" -"@abp/jquery-form@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.1.tgz#558bcf9da8912e0014b407018d1f0fb7ab294bf0" - integrity sha512-MzhptVbyZ7WNYAw4KmWiI4WnR8H16jBshceO7DFtfyZDRUU0n4ZPTYs1rGlj4+5iv2B7r8dci0Nx94bkId7FwA== +"@abp/jquery-form@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.2.tgz#58ce31a32bdfb355e5d4e3f97cb4761f594aa8e1" + integrity sha512-xN2xjK1RWKygwaqzTaWmpMlU0kGWGa2nKaudM6g9k/B6b1Pfdr8ykI4DaSuPb4BkRmurGkgy4r9o7IUoqv0T8Q== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.1.tgz#48b227ee95e0d7a12efbdfbdf1a28e3003dcdb8f" - integrity sha512-wTo5/oqU1TVOuuYfsu6XipryW2rrSx+bebP4fm/lQ1cZF+Ki1Rbvt5p+3fIGZfg8dJRMKXCtL3UYyadKTlqJ8A== +"@abp/jquery-validation-unobtrusive@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.2.tgz#4e624e22cbf149d1c78da46aabaf6fc18d3b65ff" + integrity sha512-adKJxnWnhCrIYWoVdo41zgO5p4SjyypCxoHeQ7mkohry2WN6WuQG5nmHqhpdevw966DENvmVzFfz7vnO72vtrg== dependencies: - "@abp/jquery-validation" "~9.2.0-rc.1" + "@abp/jquery-validation" "~9.2.0-rc.2" jquery-validation-unobtrusive "^4.0.0" -"@abp/jquery-validation@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.1.tgz#fae0ce1e0db0af62f80836d3e982c9a79f7b1209" - integrity sha512-c2+BwErN2w6ikbOYuuSQHZeMdLaKR7l0CIvwtUnzwCHjdUGAbMX9w9lYwnO6R6DsNCV7Cb5+YrbjM7jGY7zMiQ== +"@abp/jquery-validation@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.2.tgz#b6a8124d5056ddad515733bffc78703f6bd422be" + integrity sha512-4j1fg1qImif2vFZQFJ7z1olEUnjc3BByKS+7joNQ+96/NqOQdOQjRjB2n490od7ExCinKnvYx3JFttpYjHU3Xw== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-validation "^1.21.0" -"@abp/jquery@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.1.tgz#a930c1ef6a17a831cd7d064b7cbb20d604fbc4bb" - integrity sha512-qc461cJOQvEX95JbIFtDLj5dxUUDyP7PUXP8SjCvxP4GURoKhjxx0j0U0mBkMDJMrSrvALFKbF5S6OlgdgaPGQ== +"@abp/jquery@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.2.tgz#335643787ab282d5d2fee4f360c2b62cce3db962" + integrity sha512-baKNDuiQMzkV0LFzBwEqS0JYtXIUe5KH+MVizGR6Zv10B8l/gIrUzWI/nnqDtbts6gmY9OBDXkCTcgMQBwKqjw== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" jquery "~3.7.1" -"@abp/lodash@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.1.tgz#0e0b455c84c6b6c52a3aaf1ccc4c704f49503ac8" - integrity sha512-Bg2Bz7G04jvz+QRXLlK3A2eUBR3Ef1rq622jWsaKo4fW4rCdHkZBbjeqYDLYc1PqDIJawhEdIByh8VzMgRd6tA== +"@abp/lodash@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.2.tgz#521bccafcc09780c751932688b6ec45c368c2854" + integrity sha512-T6eYsDovUl4AYD9n2N4WZq9MeC4/ryke5ctvdhzuArqM7WpPvohq3VKGugrP/MLo9oD3MZ5DVQvMJ0AVg+IXNQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" lodash "^4.17.21" -"@abp/luxon@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.1.tgz#275726bf1f9ff14cdf902a7ea64213a3e7434927" - integrity sha512-vga0taYVDPGwcAQqFe6pAEAUu3vRH7MgxBQdMrEX80YhsSJevPHSl6jG3ey5IqWOy4dpMyiN4v7gWBHJ93mbFg== +"@abp/luxon@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.2.tgz#da366d335f9575b104ea2206e076af35cbbfcfba" + integrity sha512-mr8ipYrJDDJPoImIwORK7Z6d1C07APl95L17ufRbig4sjdxjNEDR5uUXVviVafF1No2bVkYiS0xGKQmojA2twg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" luxon "^3.5.0" -"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.1.tgz#3d4c17a9d6ace815e4bc4dc825d0020474a794f7" - integrity sha512-Cqs6A88bWggdtDoiCREBTXknCI+c7vhmZ/SM84k4NfwzlPscZYMCbtJlrln4g3zmElJwwBPerl0Gs778kUOjog== +"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.2.tgz#cb79018adf08276041eb5c5dcf75130c8995686b" + integrity sha512-jdHXx7kPduaEfFXDvf5s+QVl10RqshNbnZkkqPx0mMkhz2H/qxwzF1e0mcLFL38nEgs+0gxIkcA8/MKq85tyqQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.1.tgz#1604d38429f1e0484223ea4a7a3a10f1785420f4" - integrity sha512-5VnPhCOnTug7tqlLsg46LY84LU5DrYNKxm5T3oz+OFq4I05Ut/LWGElRvOnEFxfFfkYuJvbxih3trAGuEJD6+A== +"@abp/moment@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.2.tgz#f4339138668ca72be1d700624b91789344557bff" + integrity sha512-J4ZaCDEcXLGmJ+8zqgaMK9Lutnjga28LSbuiFaGLlZ1QgYZ5HDScE128o3vX9qr60tc6IIY0cDkHi4bBHo7ozw== dependencies: moment "^2.30.1" -"@abp/prismjs@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.1.tgz#623659c50c776bc8efcb7eacea70b2704ff87eec" - integrity sha512-QZ6NY4TXmWzrrZViN8v3CgH2l4fQUpEZLPsUaEmiRtq3+3meCaM3hxgNEOvcUg5IHZI7cPBRabQtVKoAPozcvQ== +"@abp/prismjs@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.2.tgz#1ee12acdd9e1dcc9ae2ce4a9f21f159c3f9e3dec" + integrity sha512-GuKz6bujBlYHAgLhW1RT7aEOwKyZ+vnyMIhN0/fQ34+nbqg0PC4htwJcN6spgN8gZKD06lCqBH+GjLE2WtE/Rw== dependencies: - "@abp/clipboard" "~9.2.0-rc.1" - "@abp/core" "~9.2.0-rc.1" + "@abp/clipboard" "~9.2.0-rc.2" + "@abp/core" "~9.2.0-rc.2" prismjs "^1.29.0" -"@abp/select2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.1.tgz#6f378c9bd4a01dbe72bf41f175c964e36353ef4e" - integrity sha512-HlQtSmY3VRIbCbTJnWFmvPeUmHYX8cI5z0Dwa30/TNPWDQuws5Yx3F4B9crw6AC/EIzCobsAZ4QhsgQxsUHNvg== +"@abp/select2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.2.tgz#ba6e839644b7ecdd198fe5286101302a3dc79ce3" + integrity sha512-AQMXb5ATgbN7grpKU8lB2xFFfirCe45lIvd9krW5SwUHCYZP7pRPbwQXAew+BqlIIYJJF2GA7/Nf//e/71bKtg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.1.tgz#b70784ff038ff4d6cdc07a7ef35edd7da5dfaa23" - integrity sha512-cJVdPB1hh7AtmfmcLLAFGxFDYc08sjtRS5kJ37ru9WFVOyzF1A99QgMOEBSB6BGKNbkCJwQbkwGCHjtQTHQ46w== +"@abp/sweetalert2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.2.tgz#075634dc3ec996607757694d636d276ba2350e06" + integrity sha512-ZgHgqM8Q+V9ECQyAyepM5KpshKpQP463xRHwgY45oR7/CfCcO/vS56YQgJNg2zE6+lRQZaRQ9OL7lph8975vVg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" sweetalert2 "^11.14.1" -"@abp/timeago@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.1.tgz#689fa9c9d4b0c0a239b37cd4d045dfb745f392df" - integrity sha512-mNmmRVzGryW45woLmDrxVnUCSi2+Xp2djHNKe7VF4D2Xywos9yxEImTX8B9lB0QMWl8BawsZCz/jsC3QURkXGw== +"@abp/timeago@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.2.tgz#25324732966438bd6f505bdd932511ba2cc8c22b" + integrity sha512-WfWxxiycg77vVN2hPHqUOu552la+zxr0EZnHMqnEnnBe+gFYe9C0CpdYuyBq2eQXRXHoVzsB+4YRVNk5sbSGng== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" timeago "^1.6.7" -"@abp/utils@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.1.tgz#508d9922c842f2a76fc748574f0ae3a9954b6895" - integrity sha512-XFaBI4qxeXixAtapXRzETkS60+5XkZeEnW9O3wyHU6r4rEtIdOHo9w7t/vM5b5KAUlcEE02jS6pcqlJHd7miqw== +"@abp/utils@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.2.tgz#669885ad1e3ac7b8e182d7c392ea1b633df65aac" + integrity sha512-rfQxhJy04Qf50P3ciasKbDlJ+9JidD60xW77TjcoUJvljJE+A8iwTX8Wwqz7+YcC7rks2ILM4y3Ay7/47NOICQ== dependencies: just-compare "^2.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index 4c612121de..a391f0da97 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": "~9.2.0-rc.1", - "@abp/blogging": "~9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.2", + "@abp/blogging": "~9.2.0-rc.2" } } diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index 63672215ea..a2099198fc 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,228 +2,228 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.1.tgz#00f6c73e8e38578cfb6eb10214a8e4347dda75b3" - integrity sha512-Ophg50dxq2E4A2PgAtErDZ8LQfgAoT1ipZv4H3lxu0GwtRXrLEScfykHVDScTHJVpTF8Z549zYQl3jYtPJACog== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.1.tgz#4fb738ad5a6ac85165cf3e45893615d1762d43ed" - integrity sha512-TCW7nGGMqnBD8n2Jc1r9ht2HixRj8kDOZJysQUd3uHNmTBCO1b5cBjxL4ksSzM98/kEs6i0q6OTasqJrxHuHNA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.1" - "@abp/bootstrap" "~9.2.0-rc.1" - "@abp/bootstrap-datepicker" "~9.2.0-rc.1" - "@abp/bootstrap-daterangepicker" "~9.2.0-rc.1" - "@abp/datatables.net-bs5" "~9.2.0-rc.1" - "@abp/font-awesome" "~9.2.0-rc.1" - "@abp/jquery-form" "~9.2.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.1" - "@abp/lodash" "~9.2.0-rc.1" - "@abp/luxon" "~9.2.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.1" - "@abp/moment" "~9.2.0-rc.1" - "@abp/select2" "~9.2.0-rc.1" - "@abp/sweetalert2" "~9.2.0-rc.1" - "@abp/timeago" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.1.tgz#d2a2c5fc25444eedf2f4ea92505ba4aede86b771" - integrity sha512-vgdJFOzxqwuaDcMhzIHHn1wIJbIar/NzJxpbUBjRWjnZzrKKerDLF9FuDegpU1fX3nOvunI11zSFT3yCuMHebQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.2.tgz#e32c8bd046d7377ae3f6a703eac9069e10bcd600" + integrity sha512-oj4lGrzllgGrq7rI7gz1Xvq5TU+xT+isGVf4T8hF3INE/J2nIyK45HnkjDq5wpdM3P+HkdM1+RtWNrLSVu0Klg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.2.tgz#77562013b604d0193e361efa6801235179dc7b4f" + integrity sha512-5KcMGg6o6W5uwsujrjUARlZFgWmZeYBNCf1vkf3btakkwTzmPDbypUx6VrgBJbt4AUnYlMQbSHvbfK0d3I1e6w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.2" + "@abp/bootstrap" "~9.2.0-rc.2" + "@abp/bootstrap-datepicker" "~9.2.0-rc.2" + "@abp/bootstrap-daterangepicker" "~9.2.0-rc.2" + "@abp/datatables.net-bs5" "~9.2.0-rc.2" + "@abp/font-awesome" "~9.2.0-rc.2" + "@abp/jquery-form" "~9.2.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.2" + "@abp/lodash" "~9.2.0-rc.2" + "@abp/luxon" "~9.2.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.2" + "@abp/moment" "~9.2.0-rc.2" + "@abp/select2" "~9.2.0-rc.2" + "@abp/sweetalert2" "~9.2.0-rc.2" + "@abp/timeago" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.2.tgz#e1c0e4b0280d5fe37659da8dc696150f0d461336" + integrity sha512-WG4WWGS1mSb2QWAVOA2nrvoi9/3oueEaKEG18xbPgWiLz5GCq8gsopKqUgW/fmBaw+1Jh9tsuCTH7eED/2tUxA== dependencies: ansi-colors "^4.1.3" -"@abp/blogging@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-9.2.0-rc.1.tgz#fb3a050d4919fbb5cb8ad5f48b183c4965f4d7d3" - integrity sha512-OMroH5AeH57D737ZFPTZcGSY2Bqoez/bQDgkHyBnxn1WYwXYJNtAm8HepPT5dqLmEFcSldg7lnmHbt28a1E52g== +"@abp/blogging@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-9.2.0-rc.2.tgz#8ac5e0727991f71d062aa8e34b2b46f5d3135a44" + integrity sha512-AFXjnGKONqdyykqtVMMNpjlphtivzSkOZTxQURIRV1aS5n+LaYDJDwGzLC8QyHtyafGqhuwYc//wxitz8gLR9Q== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.1" - "@abp/owl.carousel" "~9.2.0-rc.1" - "@abp/prismjs" "~9.2.0-rc.1" - "@abp/tui-editor" "~9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.2" + "@abp/owl.carousel" "~9.2.0-rc.2" + "@abp/prismjs" "~9.2.0-rc.2" + "@abp/tui-editor" "~9.2.0-rc.2" -"@abp/bootstrap-datepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.1.tgz#b548840efb6a9c8d9acabf828af4e95628be6cbe" - integrity sha512-ClR+fiOiUccEIvbeAgfo2+Z3eZYp7MRIVrll8Rh93oKr6C0XzjwA7acSGe87CS3e5wkUXMsKtqmRX+eSXyJBPQ== +"@abp/bootstrap-datepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.2.tgz#429c2d44a22f9190013aea0efa420854b7e83a4f" + integrity sha512-bxMpaxTgnF5/VELbKvtZVw0tI0bowzUQFVSBQJqO4o7wJmxyHNzJuaom8Is+tCsoMrpo8t9EGMGfpWHV1IsrjQ== dependencies: bootstrap-datepicker "^1.10.0" -"@abp/bootstrap-daterangepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.1.tgz#e7174841889b80f7beddaeb84be7a0b908cc34a3" - integrity sha512-CzSutc7rtYzd4jzTTiKlUmFGlZk70DTcp/tnuD7rVWZp7Njr2INfwGlgt7P7Hj3g9Wt3j0mAM+IDz9t2rleqtA== +"@abp/bootstrap-daterangepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.2.tgz#85bb869d5d43eb6c97f50943ea2c390cb4d37d54" + integrity sha512-rLLsY6GCY16IOwRkmx7vZ25sVHOM9dPdTlcZiuUuEi5+QrmgGiqZmIwqYiu4WFSPPTJtufsyMaHzXxqiZRpXVg== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.1.tgz#87c17c50a9e8f6fdb6474541aeaadf1ebb1d6b1b" - integrity sha512-tgOIGY7HfiwgM9QUpcydZN9tdKSrm6mYPzECBDU866xWi8aUeLZp12hLoSL94M1iZ6jchbZaqTqMOy00Tc0FCQ== +"@abp/bootstrap@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.2.tgz#ba2ab98d930501e7f004f99e7d7e7d4e6d3c0998" + integrity sha512-u2mtHHbmXNgngExl4hM5uo/E3k453n0im2Ci02+4dnhZoFicLZlBdtJusZAw5QR1XTLPybW6RXofWBvkZcgiwg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" bootstrap "^5.3.3" -"@abp/clipboard@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.1.tgz#50069847848714fb155d35b656563f26f2fd870c" - integrity sha512-3lEUrQNje436F8t4nhTrIrFru1A1ZGJHgsYaXR6At50hNwWHcE1LtZKJnXm4am0dALJK/uwv4p7BfNT9Edo11A== +"@abp/clipboard@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.2.tgz#608bdb3d4a3ff1a7b38ad5850385746f7cfe6c0c" + integrity sha512-w/JiTmidNc7SZuvpkQumyNj6FTBq6hLnhXeBBh4/xega1Ob2q+tbrOSpemgpK6YOXUQbmH8a4vEPvwt7uzNfvQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" clipboard "^2.0.11" -"@abp/core@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.1.tgz#30fb627e750f651b4d1819461e3ffeb5fc6d9011" - integrity sha512-Adb4sk9oZJaxL19RbM1opLGWn2kKzRUcFLH6lNG2QYCAXf74y/YfFLQyoZSrTKS1M+hkGjIrEW6GssAgHTCJeg== +"@abp/core@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.2.tgz#0eab20842f8c0801d1dca036d3d66a67e155e019" + integrity sha512-8bC1MAV4iSFLJvRvM5mvrI9+N5FPAjaG79hr3p0xJtNixFOFpNELDf4p0zwy97zY8juL+AIEyJAkg+KIIK90DQ== dependencies: - "@abp/utils" "~9.2.0-rc.1" + "@abp/utils" "~9.2.0-rc.2" -"@abp/datatables.net-bs5@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.1.tgz#7d56850b6e46f744c794e40d08aeb5fd1a7543ee" - integrity sha512-PFt0PruHikzXzcEKtykwnRo+Z0D+njmhaoJk4J11yoZjvSFOAQXIRdsVgFgJub8REN3I57eG9PPCl3AZwAba9w== +"@abp/datatables.net-bs5@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.2.tgz#8c07544cafd2d2257f45150d3265c25eafc0ec0f" + integrity sha512-l3VOtc0fleUsx+ZUMr49+nPBWRBUVw4Z26ogT7O7uRR8doeerNU1GfA4yFJCUp02WIwt8cmZ+apJHADykn9Vng== dependencies: - "@abp/datatables.net" "~9.2.0-rc.1" + "@abp/datatables.net" "~9.2.0-rc.2" datatables.net-bs5 "^2.1.8" -"@abp/datatables.net@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.1.tgz#8d165f404e85a54a4e92887173a3d01f827ba5ef" - integrity sha512-rEvCSJWH2l505Nb7Nqa0tL1iFpnMZ+WxnfbomaqdSpL6YsCUd8syeGI37V+LQUknXGsUFqGVyazPrU3vjIR8Kg== +"@abp/datatables.net@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.2.tgz#2880ccb61750faa1689aec15f9e49d92ab1e94a1" + integrity sha512-nljq0p8mxoBvMZngtViInyQJqX/MI7EyQeCIYNICF2LO42RRZfpKaRy5zX+4Uc3z/wz209CfK8QfRNH/d1HtBQ== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" datatables.net "^2.1.8" -"@abp/font-awesome@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.1.tgz#758b4028fa5f6d11bb675ff465fc222e3b656c01" - integrity sha512-H0fmIM/YAkT64LLMub0eDzpxvrNVjkFrRgX4YM10U/AQ0gILxjuEapRxv3+ueIJiy3DiBLkPWQ+SQN3Lwh4FOA== +"@abp/font-awesome@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.2.tgz#51eb750f5697668db538ad68cc6b9279517da537" + integrity sha512-X9JfF4n4MDZLszwZHIHuxSdGGxImEzV91ROKqNeclErCx3bOXyq/l9C+haZl/3TLzTAOSDMLgHGrT3MUCVPF5w== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" "@fortawesome/fontawesome-free" "^6.6.0" -"@abp/jquery-form@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.1.tgz#558bcf9da8912e0014b407018d1f0fb7ab294bf0" - integrity sha512-MzhptVbyZ7WNYAw4KmWiI4WnR8H16jBshceO7DFtfyZDRUU0n4ZPTYs1rGlj4+5iv2B7r8dci0Nx94bkId7FwA== +"@abp/jquery-form@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.2.tgz#58ce31a32bdfb355e5d4e3f97cb4761f594aa8e1" + integrity sha512-xN2xjK1RWKygwaqzTaWmpMlU0kGWGa2nKaudM6g9k/B6b1Pfdr8ykI4DaSuPb4BkRmurGkgy4r9o7IUoqv0T8Q== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.1.tgz#48b227ee95e0d7a12efbdfbdf1a28e3003dcdb8f" - integrity sha512-wTo5/oqU1TVOuuYfsu6XipryW2rrSx+bebP4fm/lQ1cZF+Ki1Rbvt5p+3fIGZfg8dJRMKXCtL3UYyadKTlqJ8A== +"@abp/jquery-validation-unobtrusive@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.2.tgz#4e624e22cbf149d1c78da46aabaf6fc18d3b65ff" + integrity sha512-adKJxnWnhCrIYWoVdo41zgO5p4SjyypCxoHeQ7mkohry2WN6WuQG5nmHqhpdevw966DENvmVzFfz7vnO72vtrg== dependencies: - "@abp/jquery-validation" "~9.2.0-rc.1" + "@abp/jquery-validation" "~9.2.0-rc.2" jquery-validation-unobtrusive "^4.0.0" -"@abp/jquery-validation@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.1.tgz#fae0ce1e0db0af62f80836d3e982c9a79f7b1209" - integrity sha512-c2+BwErN2w6ikbOYuuSQHZeMdLaKR7l0CIvwtUnzwCHjdUGAbMX9w9lYwnO6R6DsNCV7Cb5+YrbjM7jGY7zMiQ== +"@abp/jquery-validation@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.2.tgz#b6a8124d5056ddad515733bffc78703f6bd422be" + integrity sha512-4j1fg1qImif2vFZQFJ7z1olEUnjc3BByKS+7joNQ+96/NqOQdOQjRjB2n490od7ExCinKnvYx3JFttpYjHU3Xw== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-validation "^1.21.0" -"@abp/jquery@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.1.tgz#a930c1ef6a17a831cd7d064b7cbb20d604fbc4bb" - integrity sha512-qc461cJOQvEX95JbIFtDLj5dxUUDyP7PUXP8SjCvxP4GURoKhjxx0j0U0mBkMDJMrSrvALFKbF5S6OlgdgaPGQ== +"@abp/jquery@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.2.tgz#335643787ab282d5d2fee4f360c2b62cce3db962" + integrity sha512-baKNDuiQMzkV0LFzBwEqS0JYtXIUe5KH+MVizGR6Zv10B8l/gIrUzWI/nnqDtbts6gmY9OBDXkCTcgMQBwKqjw== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" jquery "~3.7.1" -"@abp/lodash@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.1.tgz#0e0b455c84c6b6c52a3aaf1ccc4c704f49503ac8" - integrity sha512-Bg2Bz7G04jvz+QRXLlK3A2eUBR3Ef1rq622jWsaKo4fW4rCdHkZBbjeqYDLYc1PqDIJawhEdIByh8VzMgRd6tA== +"@abp/lodash@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.2.tgz#521bccafcc09780c751932688b6ec45c368c2854" + integrity sha512-T6eYsDovUl4AYD9n2N4WZq9MeC4/ryke5ctvdhzuArqM7WpPvohq3VKGugrP/MLo9oD3MZ5DVQvMJ0AVg+IXNQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" lodash "^4.17.21" -"@abp/luxon@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.1.tgz#275726bf1f9ff14cdf902a7ea64213a3e7434927" - integrity sha512-vga0taYVDPGwcAQqFe6pAEAUu3vRH7MgxBQdMrEX80YhsSJevPHSl6jG3ey5IqWOy4dpMyiN4v7gWBHJ93mbFg== +"@abp/luxon@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.2.tgz#da366d335f9575b104ea2206e076af35cbbfcfba" + integrity sha512-mr8ipYrJDDJPoImIwORK7Z6d1C07APl95L17ufRbig4sjdxjNEDR5uUXVviVafF1No2bVkYiS0xGKQmojA2twg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" luxon "^3.5.0" -"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.1.tgz#3d4c17a9d6ace815e4bc4dc825d0020474a794f7" - integrity sha512-Cqs6A88bWggdtDoiCREBTXknCI+c7vhmZ/SM84k4NfwzlPscZYMCbtJlrln4g3zmElJwwBPerl0Gs778kUOjog== +"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.2.tgz#cb79018adf08276041eb5c5dcf75130c8995686b" + integrity sha512-jdHXx7kPduaEfFXDvf5s+QVl10RqshNbnZkkqPx0mMkhz2H/qxwzF1e0mcLFL38nEgs+0gxIkcA8/MKq85tyqQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.1.tgz#1604d38429f1e0484223ea4a7a3a10f1785420f4" - integrity sha512-5VnPhCOnTug7tqlLsg46LY84LU5DrYNKxm5T3oz+OFq4I05Ut/LWGElRvOnEFxfFfkYuJvbxih3trAGuEJD6+A== +"@abp/moment@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.2.tgz#f4339138668ca72be1d700624b91789344557bff" + integrity sha512-J4ZaCDEcXLGmJ+8zqgaMK9Lutnjga28LSbuiFaGLlZ1QgYZ5HDScE128o3vX9qr60tc6IIY0cDkHi4bBHo7ozw== dependencies: moment "^2.30.1" -"@abp/owl.carousel@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-9.2.0-rc.1.tgz#ed7cc4d3f806ea6ee15739446b114a040b93be6a" - integrity sha512-+NyE5hmJaaUBISrNgYt+Fg9R+tHC7i5WykL9dYoA0BcYP20sTovr6B3IA3jzZcLt8GGXt3HAzLfkSc21nOurSA== +"@abp/owl.carousel@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-9.2.0-rc.2.tgz#b00cfb3784c2d04fea06ff9ad21daabbb3411e11" + integrity sha512-gj9YNlvqoho1TenZTmd1eDOLfSaQFzsSk+vKvqIn9Y5fbL71WoY1yc18NXZYTBes0JDBYi8xqYsT9dh9KhFY6Q== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" owl.carousel "^2.3.4" -"@abp/prismjs@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.1.tgz#623659c50c776bc8efcb7eacea70b2704ff87eec" - integrity sha512-QZ6NY4TXmWzrrZViN8v3CgH2l4fQUpEZLPsUaEmiRtq3+3meCaM3hxgNEOvcUg5IHZI7cPBRabQtVKoAPozcvQ== +"@abp/prismjs@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.2.tgz#1ee12acdd9e1dcc9ae2ce4a9f21f159c3f9e3dec" + integrity sha512-GuKz6bujBlYHAgLhW1RT7aEOwKyZ+vnyMIhN0/fQ34+nbqg0PC4htwJcN6spgN8gZKD06lCqBH+GjLE2WtE/Rw== dependencies: - "@abp/clipboard" "~9.2.0-rc.1" - "@abp/core" "~9.2.0-rc.1" + "@abp/clipboard" "~9.2.0-rc.2" + "@abp/core" "~9.2.0-rc.2" prismjs "^1.29.0" -"@abp/select2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.1.tgz#6f378c9bd4a01dbe72bf41f175c964e36353ef4e" - integrity sha512-HlQtSmY3VRIbCbTJnWFmvPeUmHYX8cI5z0Dwa30/TNPWDQuws5Yx3F4B9crw6AC/EIzCobsAZ4QhsgQxsUHNvg== +"@abp/select2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.2.tgz#ba6e839644b7ecdd198fe5286101302a3dc79ce3" + integrity sha512-AQMXb5ATgbN7grpKU8lB2xFFfirCe45lIvd9krW5SwUHCYZP7pRPbwQXAew+BqlIIYJJF2GA7/Nf//e/71bKtg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.1.tgz#b70784ff038ff4d6cdc07a7ef35edd7da5dfaa23" - integrity sha512-cJVdPB1hh7AtmfmcLLAFGxFDYc08sjtRS5kJ37ru9WFVOyzF1A99QgMOEBSB6BGKNbkCJwQbkwGCHjtQTHQ46w== +"@abp/sweetalert2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.2.tgz#075634dc3ec996607757694d636d276ba2350e06" + integrity sha512-ZgHgqM8Q+V9ECQyAyepM5KpshKpQP463xRHwgY45oR7/CfCcO/vS56YQgJNg2zE6+lRQZaRQ9OL7lph8975vVg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" sweetalert2 "^11.14.1" -"@abp/timeago@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.1.tgz#689fa9c9d4b0c0a239b37cd4d045dfb745f392df" - integrity sha512-mNmmRVzGryW45woLmDrxVnUCSi2+Xp2djHNKe7VF4D2Xywos9yxEImTX8B9lB0QMWl8BawsZCz/jsC3QURkXGw== +"@abp/timeago@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.2.tgz#25324732966438bd6f505bdd932511ba2cc8c22b" + integrity sha512-WfWxxiycg77vVN2hPHqUOu552la+zxr0EZnHMqnEnnBe+gFYe9C0CpdYuyBq2eQXRXHoVzsB+4YRVNk5sbSGng== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" timeago "^1.6.7" -"@abp/tui-editor@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-9.2.0-rc.1.tgz#fdb0e13891da88a0da89dc2ee22f748b7bda7420" - integrity sha512-FVpaOF1yoox2X9ejbDQVRVDrm+5dElY5X7fxKPUthw7PUpCT+HCScVX4xtqkbF3GB3VYRdwQO2m1GdqIRC0Zlw== +"@abp/tui-editor@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-9.2.0-rc.2.tgz#8f755bfb7413d1636fe904d409efe6363f48516b" + integrity sha512-Ap2JOZShRvbHI4+5f1pGRgP26i6bel+2eBT1w33UWMclyNGhNYVcm9VNIyLaS9KbGM5bphij2bMdnTUpjQ10Dw== dependencies: - "@abp/jquery" "~9.2.0-rc.1" - "@abp/prismjs" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" + "@abp/prismjs" "~9.2.0-rc.2" -"@abp/utils@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.1.tgz#508d9922c842f2a76fc748574f0ae3a9954b6895" - integrity sha512-XFaBI4qxeXixAtapXRzETkS60+5XkZeEnW9O3wyHU6r4rEtIdOHo9w7t/vM5b5KAUlcEE02jS6pcqlJHd7miqw== +"@abp/utils@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.2.tgz#669885ad1e3ac7b8e182d7c392ea1b633df65aac" + integrity sha512-rfQxhJy04Qf50P3ciasKbDlJ+9JidD60xW77TjcoUJvljJE+A8iwTX8Wwqz7+YcC7rks2ILM4y3Ay7/47NOICQ== dependencies: just-compare "^2.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 319adb77e5..5de62f5e2c 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": "~9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.2" } } diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index 8524474dd3..7a9396e283 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,185 +2,185 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.1.tgz#00f6c73e8e38578cfb6eb10214a8e4347dda75b3" - integrity sha512-Ophg50dxq2E4A2PgAtErDZ8LQfgAoT1ipZv4H3lxu0GwtRXrLEScfykHVDScTHJVpTF8Z549zYQl3jYtPJACog== +"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.2.tgz#e32c8bd046d7377ae3f6a703eac9069e10bcd600" + integrity sha512-oj4lGrzllgGrq7rI7gz1Xvq5TU+xT+isGVf4T8hF3INE/J2nIyK45HnkjDq5wpdM3P+HkdM1+RtWNrLSVu0Klg== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.2" -"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.1.tgz#4fb738ad5a6ac85165cf3e45893615d1762d43ed" - integrity sha512-TCW7nGGMqnBD8n2Jc1r9ht2HixRj8kDOZJysQUd3uHNmTBCO1b5cBjxL4ksSzM98/kEs6i0q6OTasqJrxHuHNA== +"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.2.tgz#77562013b604d0193e361efa6801235179dc7b4f" + integrity sha512-5KcMGg6o6W5uwsujrjUARlZFgWmZeYBNCf1vkf3btakkwTzmPDbypUx6VrgBJbt4AUnYlMQbSHvbfK0d3I1e6w== dependencies: - "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.1" - "@abp/bootstrap" "~9.2.0-rc.1" - "@abp/bootstrap-datepicker" "~9.2.0-rc.1" - "@abp/bootstrap-daterangepicker" "~9.2.0-rc.1" - "@abp/datatables.net-bs5" "~9.2.0-rc.1" - "@abp/font-awesome" "~9.2.0-rc.1" - "@abp/jquery-form" "~9.2.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.1" - "@abp/lodash" "~9.2.0-rc.1" - "@abp/luxon" "~9.2.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.1" - "@abp/moment" "~9.2.0-rc.1" - "@abp/select2" "~9.2.0-rc.1" - "@abp/sweetalert2" "~9.2.0-rc.1" - "@abp/timeago" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.1.tgz#d2a2c5fc25444eedf2f4ea92505ba4aede86b771" - integrity sha512-vgdJFOzxqwuaDcMhzIHHn1wIJbIar/NzJxpbUBjRWjnZzrKKerDLF9FuDegpU1fX3nOvunI11zSFT3yCuMHebQ== + "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.2" + "@abp/bootstrap" "~9.2.0-rc.2" + "@abp/bootstrap-datepicker" "~9.2.0-rc.2" + "@abp/bootstrap-daterangepicker" "~9.2.0-rc.2" + "@abp/datatables.net-bs5" "~9.2.0-rc.2" + "@abp/font-awesome" "~9.2.0-rc.2" + "@abp/jquery-form" "~9.2.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.2" + "@abp/lodash" "~9.2.0-rc.2" + "@abp/luxon" "~9.2.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.2" + "@abp/moment" "~9.2.0-rc.2" + "@abp/select2" "~9.2.0-rc.2" + "@abp/sweetalert2" "~9.2.0-rc.2" + "@abp/timeago" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.2.tgz#e1c0e4b0280d5fe37659da8dc696150f0d461336" + integrity sha512-WG4WWGS1mSb2QWAVOA2nrvoi9/3oueEaKEG18xbPgWiLz5GCq8gsopKqUgW/fmBaw+1Jh9tsuCTH7eED/2tUxA== dependencies: ansi-colors "^4.1.3" -"@abp/bootstrap-datepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.1.tgz#b548840efb6a9c8d9acabf828af4e95628be6cbe" - integrity sha512-ClR+fiOiUccEIvbeAgfo2+Z3eZYp7MRIVrll8Rh93oKr6C0XzjwA7acSGe87CS3e5wkUXMsKtqmRX+eSXyJBPQ== +"@abp/bootstrap-datepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.2.tgz#429c2d44a22f9190013aea0efa420854b7e83a4f" + integrity sha512-bxMpaxTgnF5/VELbKvtZVw0tI0bowzUQFVSBQJqO4o7wJmxyHNzJuaom8Is+tCsoMrpo8t9EGMGfpWHV1IsrjQ== dependencies: bootstrap-datepicker "^1.10.0" -"@abp/bootstrap-daterangepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.1.tgz#e7174841889b80f7beddaeb84be7a0b908cc34a3" - integrity sha512-CzSutc7rtYzd4jzTTiKlUmFGlZk70DTcp/tnuD7rVWZp7Njr2INfwGlgt7P7Hj3g9Wt3j0mAM+IDz9t2rleqtA== +"@abp/bootstrap-daterangepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.2.tgz#85bb869d5d43eb6c97f50943ea2c390cb4d37d54" + integrity sha512-rLLsY6GCY16IOwRkmx7vZ25sVHOM9dPdTlcZiuUuEi5+QrmgGiqZmIwqYiu4WFSPPTJtufsyMaHzXxqiZRpXVg== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.1.tgz#87c17c50a9e8f6fdb6474541aeaadf1ebb1d6b1b" - integrity sha512-tgOIGY7HfiwgM9QUpcydZN9tdKSrm6mYPzECBDU866xWi8aUeLZp12hLoSL94M1iZ6jchbZaqTqMOy00Tc0FCQ== +"@abp/bootstrap@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.2.tgz#ba2ab98d930501e7f004f99e7d7e7d4e6d3c0998" + integrity sha512-u2mtHHbmXNgngExl4hM5uo/E3k453n0im2Ci02+4dnhZoFicLZlBdtJusZAw5QR1XTLPybW6RXofWBvkZcgiwg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" bootstrap "^5.3.3" -"@abp/core@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.1.tgz#30fb627e750f651b4d1819461e3ffeb5fc6d9011" - integrity sha512-Adb4sk9oZJaxL19RbM1opLGWn2kKzRUcFLH6lNG2QYCAXf74y/YfFLQyoZSrTKS1M+hkGjIrEW6GssAgHTCJeg== +"@abp/core@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.2.tgz#0eab20842f8c0801d1dca036d3d66a67e155e019" + integrity sha512-8bC1MAV4iSFLJvRvM5mvrI9+N5FPAjaG79hr3p0xJtNixFOFpNELDf4p0zwy97zY8juL+AIEyJAkg+KIIK90DQ== dependencies: - "@abp/utils" "~9.2.0-rc.1" + "@abp/utils" "~9.2.0-rc.2" -"@abp/datatables.net-bs5@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.1.tgz#7d56850b6e46f744c794e40d08aeb5fd1a7543ee" - integrity sha512-PFt0PruHikzXzcEKtykwnRo+Z0D+njmhaoJk4J11yoZjvSFOAQXIRdsVgFgJub8REN3I57eG9PPCl3AZwAba9w== +"@abp/datatables.net-bs5@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.2.tgz#8c07544cafd2d2257f45150d3265c25eafc0ec0f" + integrity sha512-l3VOtc0fleUsx+ZUMr49+nPBWRBUVw4Z26ogT7O7uRR8doeerNU1GfA4yFJCUp02WIwt8cmZ+apJHADykn9Vng== dependencies: - "@abp/datatables.net" "~9.2.0-rc.1" + "@abp/datatables.net" "~9.2.0-rc.2" datatables.net-bs5 "^2.1.8" -"@abp/datatables.net@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.1.tgz#8d165f404e85a54a4e92887173a3d01f827ba5ef" - integrity sha512-rEvCSJWH2l505Nb7Nqa0tL1iFpnMZ+WxnfbomaqdSpL6YsCUd8syeGI37V+LQUknXGsUFqGVyazPrU3vjIR8Kg== +"@abp/datatables.net@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.2.tgz#2880ccb61750faa1689aec15f9e49d92ab1e94a1" + integrity sha512-nljq0p8mxoBvMZngtViInyQJqX/MI7EyQeCIYNICF2LO42RRZfpKaRy5zX+4Uc3z/wz209CfK8QfRNH/d1HtBQ== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" datatables.net "^2.1.8" -"@abp/font-awesome@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.1.tgz#758b4028fa5f6d11bb675ff465fc222e3b656c01" - integrity sha512-H0fmIM/YAkT64LLMub0eDzpxvrNVjkFrRgX4YM10U/AQ0gILxjuEapRxv3+ueIJiy3DiBLkPWQ+SQN3Lwh4FOA== +"@abp/font-awesome@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.2.tgz#51eb750f5697668db538ad68cc6b9279517da537" + integrity sha512-X9JfF4n4MDZLszwZHIHuxSdGGxImEzV91ROKqNeclErCx3bOXyq/l9C+haZl/3TLzTAOSDMLgHGrT3MUCVPF5w== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" "@fortawesome/fontawesome-free" "^6.6.0" -"@abp/jquery-form@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.1.tgz#558bcf9da8912e0014b407018d1f0fb7ab294bf0" - integrity sha512-MzhptVbyZ7WNYAw4KmWiI4WnR8H16jBshceO7DFtfyZDRUU0n4ZPTYs1rGlj4+5iv2B7r8dci0Nx94bkId7FwA== +"@abp/jquery-form@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.2.tgz#58ce31a32bdfb355e5d4e3f97cb4761f594aa8e1" + integrity sha512-xN2xjK1RWKygwaqzTaWmpMlU0kGWGa2nKaudM6g9k/B6b1Pfdr8ykI4DaSuPb4BkRmurGkgy4r9o7IUoqv0T8Q== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.1.tgz#48b227ee95e0d7a12efbdfbdf1a28e3003dcdb8f" - integrity sha512-wTo5/oqU1TVOuuYfsu6XipryW2rrSx+bebP4fm/lQ1cZF+Ki1Rbvt5p+3fIGZfg8dJRMKXCtL3UYyadKTlqJ8A== +"@abp/jquery-validation-unobtrusive@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.2.tgz#4e624e22cbf149d1c78da46aabaf6fc18d3b65ff" + integrity sha512-adKJxnWnhCrIYWoVdo41zgO5p4SjyypCxoHeQ7mkohry2WN6WuQG5nmHqhpdevw966DENvmVzFfz7vnO72vtrg== dependencies: - "@abp/jquery-validation" "~9.2.0-rc.1" + "@abp/jquery-validation" "~9.2.0-rc.2" jquery-validation-unobtrusive "^4.0.0" -"@abp/jquery-validation@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.1.tgz#fae0ce1e0db0af62f80836d3e982c9a79f7b1209" - integrity sha512-c2+BwErN2w6ikbOYuuSQHZeMdLaKR7l0CIvwtUnzwCHjdUGAbMX9w9lYwnO6R6DsNCV7Cb5+YrbjM7jGY7zMiQ== +"@abp/jquery-validation@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.2.tgz#b6a8124d5056ddad515733bffc78703f6bd422be" + integrity sha512-4j1fg1qImif2vFZQFJ7z1olEUnjc3BByKS+7joNQ+96/NqOQdOQjRjB2n490od7ExCinKnvYx3JFttpYjHU3Xw== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-validation "^1.21.0" -"@abp/jquery@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.1.tgz#a930c1ef6a17a831cd7d064b7cbb20d604fbc4bb" - integrity sha512-qc461cJOQvEX95JbIFtDLj5dxUUDyP7PUXP8SjCvxP4GURoKhjxx0j0U0mBkMDJMrSrvALFKbF5S6OlgdgaPGQ== +"@abp/jquery@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.2.tgz#335643787ab282d5d2fee4f360c2b62cce3db962" + integrity sha512-baKNDuiQMzkV0LFzBwEqS0JYtXIUe5KH+MVizGR6Zv10B8l/gIrUzWI/nnqDtbts6gmY9OBDXkCTcgMQBwKqjw== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" jquery "~3.7.1" -"@abp/lodash@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.1.tgz#0e0b455c84c6b6c52a3aaf1ccc4c704f49503ac8" - integrity sha512-Bg2Bz7G04jvz+QRXLlK3A2eUBR3Ef1rq622jWsaKo4fW4rCdHkZBbjeqYDLYc1PqDIJawhEdIByh8VzMgRd6tA== +"@abp/lodash@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.2.tgz#521bccafcc09780c751932688b6ec45c368c2854" + integrity sha512-T6eYsDovUl4AYD9n2N4WZq9MeC4/ryke5ctvdhzuArqM7WpPvohq3VKGugrP/MLo9oD3MZ5DVQvMJ0AVg+IXNQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" lodash "^4.17.21" -"@abp/luxon@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.1.tgz#275726bf1f9ff14cdf902a7ea64213a3e7434927" - integrity sha512-vga0taYVDPGwcAQqFe6pAEAUu3vRH7MgxBQdMrEX80YhsSJevPHSl6jG3ey5IqWOy4dpMyiN4v7gWBHJ93mbFg== +"@abp/luxon@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.2.tgz#da366d335f9575b104ea2206e076af35cbbfcfba" + integrity sha512-mr8ipYrJDDJPoImIwORK7Z6d1C07APl95L17ufRbig4sjdxjNEDR5uUXVviVafF1No2bVkYiS0xGKQmojA2twg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" luxon "^3.5.0" -"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.1.tgz#3d4c17a9d6ace815e4bc4dc825d0020474a794f7" - integrity sha512-Cqs6A88bWggdtDoiCREBTXknCI+c7vhmZ/SM84k4NfwzlPscZYMCbtJlrln4g3zmElJwwBPerl0Gs778kUOjog== +"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.2.tgz#cb79018adf08276041eb5c5dcf75130c8995686b" + integrity sha512-jdHXx7kPduaEfFXDvf5s+QVl10RqshNbnZkkqPx0mMkhz2H/qxwzF1e0mcLFL38nEgs+0gxIkcA8/MKq85tyqQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.1.tgz#1604d38429f1e0484223ea4a7a3a10f1785420f4" - integrity sha512-5VnPhCOnTug7tqlLsg46LY84LU5DrYNKxm5T3oz+OFq4I05Ut/LWGElRvOnEFxfFfkYuJvbxih3trAGuEJD6+A== +"@abp/moment@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.2.tgz#f4339138668ca72be1d700624b91789344557bff" + integrity sha512-J4ZaCDEcXLGmJ+8zqgaMK9Lutnjga28LSbuiFaGLlZ1QgYZ5HDScE128o3vX9qr60tc6IIY0cDkHi4bBHo7ozw== dependencies: moment "^2.30.1" -"@abp/select2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.1.tgz#6f378c9bd4a01dbe72bf41f175c964e36353ef4e" - integrity sha512-HlQtSmY3VRIbCbTJnWFmvPeUmHYX8cI5z0Dwa30/TNPWDQuws5Yx3F4B9crw6AC/EIzCobsAZ4QhsgQxsUHNvg== +"@abp/select2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.2.tgz#ba6e839644b7ecdd198fe5286101302a3dc79ce3" + integrity sha512-AQMXb5ATgbN7grpKU8lB2xFFfirCe45lIvd9krW5SwUHCYZP7pRPbwQXAew+BqlIIYJJF2GA7/Nf//e/71bKtg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.1.tgz#b70784ff038ff4d6cdc07a7ef35edd7da5dfaa23" - integrity sha512-cJVdPB1hh7AtmfmcLLAFGxFDYc08sjtRS5kJ37ru9WFVOyzF1A99QgMOEBSB6BGKNbkCJwQbkwGCHjtQTHQ46w== +"@abp/sweetalert2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.2.tgz#075634dc3ec996607757694d636d276ba2350e06" + integrity sha512-ZgHgqM8Q+V9ECQyAyepM5KpshKpQP463xRHwgY45oR7/CfCcO/vS56YQgJNg2zE6+lRQZaRQ9OL7lph8975vVg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" sweetalert2 "^11.14.1" -"@abp/timeago@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.1.tgz#689fa9c9d4b0c0a239b37cd4d045dfb745f392df" - integrity sha512-mNmmRVzGryW45woLmDrxVnUCSi2+Xp2djHNKe7VF4D2Xywos9yxEImTX8B9lB0QMWl8BawsZCz/jsC3QURkXGw== +"@abp/timeago@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.2.tgz#25324732966438bd6f505bdd932511ba2cc8c22b" + integrity sha512-WfWxxiycg77vVN2hPHqUOu552la+zxr0EZnHMqnEnnBe+gFYe9C0CpdYuyBq2eQXRXHoVzsB+4YRVNk5sbSGng== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" timeago "^1.6.7" -"@abp/utils@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.1.tgz#508d9922c842f2a76fc748574f0ae3a9954b6895" - integrity sha512-XFaBI4qxeXixAtapXRzETkS60+5XkZeEnW9O3wyHU6r4rEtIdOHo9w7t/vM5b5KAUlcEE02jS6pcqlJHd7miqw== +"@abp/utils@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.2.tgz#669885ad1e3ac7b8e182d7c392ea1b633df65aac" + integrity sha512-rfQxhJy04Qf50P3ciasKbDlJ+9JidD60xW77TjcoUJvljJE+A8iwTX8Wwqz7+YcC7rks2ILM4y3Ay7/47NOICQ== dependencies: just-compare "^2.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index 5a72096ceb..8e8c9c00f3 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": "~9.2.0-rc.1", - "@abp/ng.identity": "~9.2.0-rc.1", - "@abp/ng.setting-management": "~9.2.0-rc.1", - "@abp/ng.tenant-management": "~9.2.0-rc.1", - "@abp/ng.theme.basic": "~9.2.0-rc.1", + "@abp/ng.account": "~9.2.0-rc.2", + "@abp/ng.identity": "~9.2.0-rc.2", + "@abp/ng.setting-management": "~9.2.0-rc.2", + "@abp/ng.tenant-management": "~9.2.0-rc.2", + "@abp/ng.theme.basic": "~9.2.0-rc.2", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index 53ed83b2bd..85e1f747dc 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": ">=9.2.0-rc.1", - "@abp/ng.theme.shared": ">=9.2.0-rc.1" + "@abp/ng.core": ">=9.2.0-rc.2", + "@abp/ng.theme.shared": ">=9.2.0-rc.2" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index 82bc8fc24c..b39f45087b 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": "~9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.2" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index 8524474dd3..7a9396e283 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,185 +2,185 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.1.tgz#00f6c73e8e38578cfb6eb10214a8e4347dda75b3" - integrity sha512-Ophg50dxq2E4A2PgAtErDZ8LQfgAoT1ipZv4H3lxu0GwtRXrLEScfykHVDScTHJVpTF8Z549zYQl3jYtPJACog== +"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.2.tgz#e32c8bd046d7377ae3f6a703eac9069e10bcd600" + integrity sha512-oj4lGrzllgGrq7rI7gz1Xvq5TU+xT+isGVf4T8hF3INE/J2nIyK45HnkjDq5wpdM3P+HkdM1+RtWNrLSVu0Klg== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.2" -"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.1.tgz#4fb738ad5a6ac85165cf3e45893615d1762d43ed" - integrity sha512-TCW7nGGMqnBD8n2Jc1r9ht2HixRj8kDOZJysQUd3uHNmTBCO1b5cBjxL4ksSzM98/kEs6i0q6OTasqJrxHuHNA== +"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.2.tgz#77562013b604d0193e361efa6801235179dc7b4f" + integrity sha512-5KcMGg6o6W5uwsujrjUARlZFgWmZeYBNCf1vkf3btakkwTzmPDbypUx6VrgBJbt4AUnYlMQbSHvbfK0d3I1e6w== dependencies: - "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.1" - "@abp/bootstrap" "~9.2.0-rc.1" - "@abp/bootstrap-datepicker" "~9.2.0-rc.1" - "@abp/bootstrap-daterangepicker" "~9.2.0-rc.1" - "@abp/datatables.net-bs5" "~9.2.0-rc.1" - "@abp/font-awesome" "~9.2.0-rc.1" - "@abp/jquery-form" "~9.2.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.1" - "@abp/lodash" "~9.2.0-rc.1" - "@abp/luxon" "~9.2.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.1" - "@abp/moment" "~9.2.0-rc.1" - "@abp/select2" "~9.2.0-rc.1" - "@abp/sweetalert2" "~9.2.0-rc.1" - "@abp/timeago" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.1.tgz#d2a2c5fc25444eedf2f4ea92505ba4aede86b771" - integrity sha512-vgdJFOzxqwuaDcMhzIHHn1wIJbIar/NzJxpbUBjRWjnZzrKKerDLF9FuDegpU1fX3nOvunI11zSFT3yCuMHebQ== + "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.2" + "@abp/bootstrap" "~9.2.0-rc.2" + "@abp/bootstrap-datepicker" "~9.2.0-rc.2" + "@abp/bootstrap-daterangepicker" "~9.2.0-rc.2" + "@abp/datatables.net-bs5" "~9.2.0-rc.2" + "@abp/font-awesome" "~9.2.0-rc.2" + "@abp/jquery-form" "~9.2.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.2" + "@abp/lodash" "~9.2.0-rc.2" + "@abp/luxon" "~9.2.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.2" + "@abp/moment" "~9.2.0-rc.2" + "@abp/select2" "~9.2.0-rc.2" + "@abp/sweetalert2" "~9.2.0-rc.2" + "@abp/timeago" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.2.tgz#e1c0e4b0280d5fe37659da8dc696150f0d461336" + integrity sha512-WG4WWGS1mSb2QWAVOA2nrvoi9/3oueEaKEG18xbPgWiLz5GCq8gsopKqUgW/fmBaw+1Jh9tsuCTH7eED/2tUxA== dependencies: ansi-colors "^4.1.3" -"@abp/bootstrap-datepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.1.tgz#b548840efb6a9c8d9acabf828af4e95628be6cbe" - integrity sha512-ClR+fiOiUccEIvbeAgfo2+Z3eZYp7MRIVrll8Rh93oKr6C0XzjwA7acSGe87CS3e5wkUXMsKtqmRX+eSXyJBPQ== +"@abp/bootstrap-datepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.2.tgz#429c2d44a22f9190013aea0efa420854b7e83a4f" + integrity sha512-bxMpaxTgnF5/VELbKvtZVw0tI0bowzUQFVSBQJqO4o7wJmxyHNzJuaom8Is+tCsoMrpo8t9EGMGfpWHV1IsrjQ== dependencies: bootstrap-datepicker "^1.10.0" -"@abp/bootstrap-daterangepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.1.tgz#e7174841889b80f7beddaeb84be7a0b908cc34a3" - integrity sha512-CzSutc7rtYzd4jzTTiKlUmFGlZk70DTcp/tnuD7rVWZp7Njr2INfwGlgt7P7Hj3g9Wt3j0mAM+IDz9t2rleqtA== +"@abp/bootstrap-daterangepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.2.tgz#85bb869d5d43eb6c97f50943ea2c390cb4d37d54" + integrity sha512-rLLsY6GCY16IOwRkmx7vZ25sVHOM9dPdTlcZiuUuEi5+QrmgGiqZmIwqYiu4WFSPPTJtufsyMaHzXxqiZRpXVg== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.1.tgz#87c17c50a9e8f6fdb6474541aeaadf1ebb1d6b1b" - integrity sha512-tgOIGY7HfiwgM9QUpcydZN9tdKSrm6mYPzECBDU866xWi8aUeLZp12hLoSL94M1iZ6jchbZaqTqMOy00Tc0FCQ== +"@abp/bootstrap@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.2.tgz#ba2ab98d930501e7f004f99e7d7e7d4e6d3c0998" + integrity sha512-u2mtHHbmXNgngExl4hM5uo/E3k453n0im2Ci02+4dnhZoFicLZlBdtJusZAw5QR1XTLPybW6RXofWBvkZcgiwg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" bootstrap "^5.3.3" -"@abp/core@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.1.tgz#30fb627e750f651b4d1819461e3ffeb5fc6d9011" - integrity sha512-Adb4sk9oZJaxL19RbM1opLGWn2kKzRUcFLH6lNG2QYCAXf74y/YfFLQyoZSrTKS1M+hkGjIrEW6GssAgHTCJeg== +"@abp/core@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.2.tgz#0eab20842f8c0801d1dca036d3d66a67e155e019" + integrity sha512-8bC1MAV4iSFLJvRvM5mvrI9+N5FPAjaG79hr3p0xJtNixFOFpNELDf4p0zwy97zY8juL+AIEyJAkg+KIIK90DQ== dependencies: - "@abp/utils" "~9.2.0-rc.1" + "@abp/utils" "~9.2.0-rc.2" -"@abp/datatables.net-bs5@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.1.tgz#7d56850b6e46f744c794e40d08aeb5fd1a7543ee" - integrity sha512-PFt0PruHikzXzcEKtykwnRo+Z0D+njmhaoJk4J11yoZjvSFOAQXIRdsVgFgJub8REN3I57eG9PPCl3AZwAba9w== +"@abp/datatables.net-bs5@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.2.tgz#8c07544cafd2d2257f45150d3265c25eafc0ec0f" + integrity sha512-l3VOtc0fleUsx+ZUMr49+nPBWRBUVw4Z26ogT7O7uRR8doeerNU1GfA4yFJCUp02WIwt8cmZ+apJHADykn9Vng== dependencies: - "@abp/datatables.net" "~9.2.0-rc.1" + "@abp/datatables.net" "~9.2.0-rc.2" datatables.net-bs5 "^2.1.8" -"@abp/datatables.net@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.1.tgz#8d165f404e85a54a4e92887173a3d01f827ba5ef" - integrity sha512-rEvCSJWH2l505Nb7Nqa0tL1iFpnMZ+WxnfbomaqdSpL6YsCUd8syeGI37V+LQUknXGsUFqGVyazPrU3vjIR8Kg== +"@abp/datatables.net@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.2.tgz#2880ccb61750faa1689aec15f9e49d92ab1e94a1" + integrity sha512-nljq0p8mxoBvMZngtViInyQJqX/MI7EyQeCIYNICF2LO42RRZfpKaRy5zX+4Uc3z/wz209CfK8QfRNH/d1HtBQ== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" datatables.net "^2.1.8" -"@abp/font-awesome@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.1.tgz#758b4028fa5f6d11bb675ff465fc222e3b656c01" - integrity sha512-H0fmIM/YAkT64LLMub0eDzpxvrNVjkFrRgX4YM10U/AQ0gILxjuEapRxv3+ueIJiy3DiBLkPWQ+SQN3Lwh4FOA== +"@abp/font-awesome@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.2.tgz#51eb750f5697668db538ad68cc6b9279517da537" + integrity sha512-X9JfF4n4MDZLszwZHIHuxSdGGxImEzV91ROKqNeclErCx3bOXyq/l9C+haZl/3TLzTAOSDMLgHGrT3MUCVPF5w== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" "@fortawesome/fontawesome-free" "^6.6.0" -"@abp/jquery-form@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.1.tgz#558bcf9da8912e0014b407018d1f0fb7ab294bf0" - integrity sha512-MzhptVbyZ7WNYAw4KmWiI4WnR8H16jBshceO7DFtfyZDRUU0n4ZPTYs1rGlj4+5iv2B7r8dci0Nx94bkId7FwA== +"@abp/jquery-form@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.2.tgz#58ce31a32bdfb355e5d4e3f97cb4761f594aa8e1" + integrity sha512-xN2xjK1RWKygwaqzTaWmpMlU0kGWGa2nKaudM6g9k/B6b1Pfdr8ykI4DaSuPb4BkRmurGkgy4r9o7IUoqv0T8Q== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.1.tgz#48b227ee95e0d7a12efbdfbdf1a28e3003dcdb8f" - integrity sha512-wTo5/oqU1TVOuuYfsu6XipryW2rrSx+bebP4fm/lQ1cZF+Ki1Rbvt5p+3fIGZfg8dJRMKXCtL3UYyadKTlqJ8A== +"@abp/jquery-validation-unobtrusive@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.2.tgz#4e624e22cbf149d1c78da46aabaf6fc18d3b65ff" + integrity sha512-adKJxnWnhCrIYWoVdo41zgO5p4SjyypCxoHeQ7mkohry2WN6WuQG5nmHqhpdevw966DENvmVzFfz7vnO72vtrg== dependencies: - "@abp/jquery-validation" "~9.2.0-rc.1" + "@abp/jquery-validation" "~9.2.0-rc.2" jquery-validation-unobtrusive "^4.0.0" -"@abp/jquery-validation@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.1.tgz#fae0ce1e0db0af62f80836d3e982c9a79f7b1209" - integrity sha512-c2+BwErN2w6ikbOYuuSQHZeMdLaKR7l0CIvwtUnzwCHjdUGAbMX9w9lYwnO6R6DsNCV7Cb5+YrbjM7jGY7zMiQ== +"@abp/jquery-validation@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.2.tgz#b6a8124d5056ddad515733bffc78703f6bd422be" + integrity sha512-4j1fg1qImif2vFZQFJ7z1olEUnjc3BByKS+7joNQ+96/NqOQdOQjRjB2n490od7ExCinKnvYx3JFttpYjHU3Xw== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-validation "^1.21.0" -"@abp/jquery@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.1.tgz#a930c1ef6a17a831cd7d064b7cbb20d604fbc4bb" - integrity sha512-qc461cJOQvEX95JbIFtDLj5dxUUDyP7PUXP8SjCvxP4GURoKhjxx0j0U0mBkMDJMrSrvALFKbF5S6OlgdgaPGQ== +"@abp/jquery@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.2.tgz#335643787ab282d5d2fee4f360c2b62cce3db962" + integrity sha512-baKNDuiQMzkV0LFzBwEqS0JYtXIUe5KH+MVizGR6Zv10B8l/gIrUzWI/nnqDtbts6gmY9OBDXkCTcgMQBwKqjw== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" jquery "~3.7.1" -"@abp/lodash@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.1.tgz#0e0b455c84c6b6c52a3aaf1ccc4c704f49503ac8" - integrity sha512-Bg2Bz7G04jvz+QRXLlK3A2eUBR3Ef1rq622jWsaKo4fW4rCdHkZBbjeqYDLYc1PqDIJawhEdIByh8VzMgRd6tA== +"@abp/lodash@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.2.tgz#521bccafcc09780c751932688b6ec45c368c2854" + integrity sha512-T6eYsDovUl4AYD9n2N4WZq9MeC4/ryke5ctvdhzuArqM7WpPvohq3VKGugrP/MLo9oD3MZ5DVQvMJ0AVg+IXNQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" lodash "^4.17.21" -"@abp/luxon@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.1.tgz#275726bf1f9ff14cdf902a7ea64213a3e7434927" - integrity sha512-vga0taYVDPGwcAQqFe6pAEAUu3vRH7MgxBQdMrEX80YhsSJevPHSl6jG3ey5IqWOy4dpMyiN4v7gWBHJ93mbFg== +"@abp/luxon@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.2.tgz#da366d335f9575b104ea2206e076af35cbbfcfba" + integrity sha512-mr8ipYrJDDJPoImIwORK7Z6d1C07APl95L17ufRbig4sjdxjNEDR5uUXVviVafF1No2bVkYiS0xGKQmojA2twg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" luxon "^3.5.0" -"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.1.tgz#3d4c17a9d6ace815e4bc4dc825d0020474a794f7" - integrity sha512-Cqs6A88bWggdtDoiCREBTXknCI+c7vhmZ/SM84k4NfwzlPscZYMCbtJlrln4g3zmElJwwBPerl0Gs778kUOjog== +"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.2.tgz#cb79018adf08276041eb5c5dcf75130c8995686b" + integrity sha512-jdHXx7kPduaEfFXDvf5s+QVl10RqshNbnZkkqPx0mMkhz2H/qxwzF1e0mcLFL38nEgs+0gxIkcA8/MKq85tyqQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.1.tgz#1604d38429f1e0484223ea4a7a3a10f1785420f4" - integrity sha512-5VnPhCOnTug7tqlLsg46LY84LU5DrYNKxm5T3oz+OFq4I05Ut/LWGElRvOnEFxfFfkYuJvbxih3trAGuEJD6+A== +"@abp/moment@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.2.tgz#f4339138668ca72be1d700624b91789344557bff" + integrity sha512-J4ZaCDEcXLGmJ+8zqgaMK9Lutnjga28LSbuiFaGLlZ1QgYZ5HDScE128o3vX9qr60tc6IIY0cDkHi4bBHo7ozw== dependencies: moment "^2.30.1" -"@abp/select2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.1.tgz#6f378c9bd4a01dbe72bf41f175c964e36353ef4e" - integrity sha512-HlQtSmY3VRIbCbTJnWFmvPeUmHYX8cI5z0Dwa30/TNPWDQuws5Yx3F4B9crw6AC/EIzCobsAZ4QhsgQxsUHNvg== +"@abp/select2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.2.tgz#ba6e839644b7ecdd198fe5286101302a3dc79ce3" + integrity sha512-AQMXb5ATgbN7grpKU8lB2xFFfirCe45lIvd9krW5SwUHCYZP7pRPbwQXAew+BqlIIYJJF2GA7/Nf//e/71bKtg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.1.tgz#b70784ff038ff4d6cdc07a7ef35edd7da5dfaa23" - integrity sha512-cJVdPB1hh7AtmfmcLLAFGxFDYc08sjtRS5kJ37ru9WFVOyzF1A99QgMOEBSB6BGKNbkCJwQbkwGCHjtQTHQ46w== +"@abp/sweetalert2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.2.tgz#075634dc3ec996607757694d636d276ba2350e06" + integrity sha512-ZgHgqM8Q+V9ECQyAyepM5KpshKpQP463xRHwgY45oR7/CfCcO/vS56YQgJNg2zE6+lRQZaRQ9OL7lph8975vVg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" sweetalert2 "^11.14.1" -"@abp/timeago@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.1.tgz#689fa9c9d4b0c0a239b37cd4d045dfb745f392df" - integrity sha512-mNmmRVzGryW45woLmDrxVnUCSi2+Xp2djHNKe7VF4D2Xywos9yxEImTX8B9lB0QMWl8BawsZCz/jsC3QURkXGw== +"@abp/timeago@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.2.tgz#25324732966438bd6f505bdd932511ba2cc8c22b" + integrity sha512-WfWxxiycg77vVN2hPHqUOu552la+zxr0EZnHMqnEnnBe+gFYe9C0CpdYuyBq2eQXRXHoVzsB+4YRVNk5sbSGng== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" timeago "^1.6.7" -"@abp/utils@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.1.tgz#508d9922c842f2a76fc748574f0ae3a9954b6895" - integrity sha512-XFaBI4qxeXixAtapXRzETkS60+5XkZeEnW9O3wyHU6r4rEtIdOHo9w7t/vM5b5KAUlcEE02jS6pcqlJHd7miqw== +"@abp/utils@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.2.tgz#669885ad1e3ac7b8e182d7c392ea1b633df65aac" + integrity sha512-rfQxhJy04Qf50P3ciasKbDlJ+9JidD60xW77TjcoUJvljJE+A8iwTX8Wwqz7+YcC7rks2ILM4y3Ay7/47NOICQ== dependencies: just-compare "^2.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 ece4546430..701670d422 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": "~9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.2" } } 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 8524474dd3..7a9396e283 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,185 +2,185 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.1.tgz#00f6c73e8e38578cfb6eb10214a8e4347dda75b3" - integrity sha512-Ophg50dxq2E4A2PgAtErDZ8LQfgAoT1ipZv4H3lxu0GwtRXrLEScfykHVDScTHJVpTF8Z549zYQl3jYtPJACog== +"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.2.tgz#e32c8bd046d7377ae3f6a703eac9069e10bcd600" + integrity sha512-oj4lGrzllgGrq7rI7gz1Xvq5TU+xT+isGVf4T8hF3INE/J2nIyK45HnkjDq5wpdM3P+HkdM1+RtWNrLSVu0Klg== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.2" -"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.1.tgz#4fb738ad5a6ac85165cf3e45893615d1762d43ed" - integrity sha512-TCW7nGGMqnBD8n2Jc1r9ht2HixRj8kDOZJysQUd3uHNmTBCO1b5cBjxL4ksSzM98/kEs6i0q6OTasqJrxHuHNA== +"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.2.tgz#77562013b604d0193e361efa6801235179dc7b4f" + integrity sha512-5KcMGg6o6W5uwsujrjUARlZFgWmZeYBNCf1vkf3btakkwTzmPDbypUx6VrgBJbt4AUnYlMQbSHvbfK0d3I1e6w== dependencies: - "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.1" - "@abp/bootstrap" "~9.2.0-rc.1" - "@abp/bootstrap-datepicker" "~9.2.0-rc.1" - "@abp/bootstrap-daterangepicker" "~9.2.0-rc.1" - "@abp/datatables.net-bs5" "~9.2.0-rc.1" - "@abp/font-awesome" "~9.2.0-rc.1" - "@abp/jquery-form" "~9.2.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.1" - "@abp/lodash" "~9.2.0-rc.1" - "@abp/luxon" "~9.2.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.1" - "@abp/moment" "~9.2.0-rc.1" - "@abp/select2" "~9.2.0-rc.1" - "@abp/sweetalert2" "~9.2.0-rc.1" - "@abp/timeago" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.1.tgz#d2a2c5fc25444eedf2f4ea92505ba4aede86b771" - integrity sha512-vgdJFOzxqwuaDcMhzIHHn1wIJbIar/NzJxpbUBjRWjnZzrKKerDLF9FuDegpU1fX3nOvunI11zSFT3yCuMHebQ== + "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.2" + "@abp/bootstrap" "~9.2.0-rc.2" + "@abp/bootstrap-datepicker" "~9.2.0-rc.2" + "@abp/bootstrap-daterangepicker" "~9.2.0-rc.2" + "@abp/datatables.net-bs5" "~9.2.0-rc.2" + "@abp/font-awesome" "~9.2.0-rc.2" + "@abp/jquery-form" "~9.2.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.2" + "@abp/lodash" "~9.2.0-rc.2" + "@abp/luxon" "~9.2.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.2" + "@abp/moment" "~9.2.0-rc.2" + "@abp/select2" "~9.2.0-rc.2" + "@abp/sweetalert2" "~9.2.0-rc.2" + "@abp/timeago" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.2.tgz#e1c0e4b0280d5fe37659da8dc696150f0d461336" + integrity sha512-WG4WWGS1mSb2QWAVOA2nrvoi9/3oueEaKEG18xbPgWiLz5GCq8gsopKqUgW/fmBaw+1Jh9tsuCTH7eED/2tUxA== dependencies: ansi-colors "^4.1.3" -"@abp/bootstrap-datepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.1.tgz#b548840efb6a9c8d9acabf828af4e95628be6cbe" - integrity sha512-ClR+fiOiUccEIvbeAgfo2+Z3eZYp7MRIVrll8Rh93oKr6C0XzjwA7acSGe87CS3e5wkUXMsKtqmRX+eSXyJBPQ== +"@abp/bootstrap-datepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.2.tgz#429c2d44a22f9190013aea0efa420854b7e83a4f" + integrity sha512-bxMpaxTgnF5/VELbKvtZVw0tI0bowzUQFVSBQJqO4o7wJmxyHNzJuaom8Is+tCsoMrpo8t9EGMGfpWHV1IsrjQ== dependencies: bootstrap-datepicker "^1.10.0" -"@abp/bootstrap-daterangepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.1.tgz#e7174841889b80f7beddaeb84be7a0b908cc34a3" - integrity sha512-CzSutc7rtYzd4jzTTiKlUmFGlZk70DTcp/tnuD7rVWZp7Njr2INfwGlgt7P7Hj3g9Wt3j0mAM+IDz9t2rleqtA== +"@abp/bootstrap-daterangepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.2.tgz#85bb869d5d43eb6c97f50943ea2c390cb4d37d54" + integrity sha512-rLLsY6GCY16IOwRkmx7vZ25sVHOM9dPdTlcZiuUuEi5+QrmgGiqZmIwqYiu4WFSPPTJtufsyMaHzXxqiZRpXVg== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.1.tgz#87c17c50a9e8f6fdb6474541aeaadf1ebb1d6b1b" - integrity sha512-tgOIGY7HfiwgM9QUpcydZN9tdKSrm6mYPzECBDU866xWi8aUeLZp12hLoSL94M1iZ6jchbZaqTqMOy00Tc0FCQ== +"@abp/bootstrap@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.2.tgz#ba2ab98d930501e7f004f99e7d7e7d4e6d3c0998" + integrity sha512-u2mtHHbmXNgngExl4hM5uo/E3k453n0im2Ci02+4dnhZoFicLZlBdtJusZAw5QR1XTLPybW6RXofWBvkZcgiwg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" bootstrap "^5.3.3" -"@abp/core@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.1.tgz#30fb627e750f651b4d1819461e3ffeb5fc6d9011" - integrity sha512-Adb4sk9oZJaxL19RbM1opLGWn2kKzRUcFLH6lNG2QYCAXf74y/YfFLQyoZSrTKS1M+hkGjIrEW6GssAgHTCJeg== +"@abp/core@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.2.tgz#0eab20842f8c0801d1dca036d3d66a67e155e019" + integrity sha512-8bC1MAV4iSFLJvRvM5mvrI9+N5FPAjaG79hr3p0xJtNixFOFpNELDf4p0zwy97zY8juL+AIEyJAkg+KIIK90DQ== dependencies: - "@abp/utils" "~9.2.0-rc.1" + "@abp/utils" "~9.2.0-rc.2" -"@abp/datatables.net-bs5@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.1.tgz#7d56850b6e46f744c794e40d08aeb5fd1a7543ee" - integrity sha512-PFt0PruHikzXzcEKtykwnRo+Z0D+njmhaoJk4J11yoZjvSFOAQXIRdsVgFgJub8REN3I57eG9PPCl3AZwAba9w== +"@abp/datatables.net-bs5@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.2.tgz#8c07544cafd2d2257f45150d3265c25eafc0ec0f" + integrity sha512-l3VOtc0fleUsx+ZUMr49+nPBWRBUVw4Z26ogT7O7uRR8doeerNU1GfA4yFJCUp02WIwt8cmZ+apJHADykn9Vng== dependencies: - "@abp/datatables.net" "~9.2.0-rc.1" + "@abp/datatables.net" "~9.2.0-rc.2" datatables.net-bs5 "^2.1.8" -"@abp/datatables.net@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.1.tgz#8d165f404e85a54a4e92887173a3d01f827ba5ef" - integrity sha512-rEvCSJWH2l505Nb7Nqa0tL1iFpnMZ+WxnfbomaqdSpL6YsCUd8syeGI37V+LQUknXGsUFqGVyazPrU3vjIR8Kg== +"@abp/datatables.net@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.2.tgz#2880ccb61750faa1689aec15f9e49d92ab1e94a1" + integrity sha512-nljq0p8mxoBvMZngtViInyQJqX/MI7EyQeCIYNICF2LO42RRZfpKaRy5zX+4Uc3z/wz209CfK8QfRNH/d1HtBQ== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" datatables.net "^2.1.8" -"@abp/font-awesome@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.1.tgz#758b4028fa5f6d11bb675ff465fc222e3b656c01" - integrity sha512-H0fmIM/YAkT64LLMub0eDzpxvrNVjkFrRgX4YM10U/AQ0gILxjuEapRxv3+ueIJiy3DiBLkPWQ+SQN3Lwh4FOA== +"@abp/font-awesome@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.2.tgz#51eb750f5697668db538ad68cc6b9279517da537" + integrity sha512-X9JfF4n4MDZLszwZHIHuxSdGGxImEzV91ROKqNeclErCx3bOXyq/l9C+haZl/3TLzTAOSDMLgHGrT3MUCVPF5w== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" "@fortawesome/fontawesome-free" "^6.6.0" -"@abp/jquery-form@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.1.tgz#558bcf9da8912e0014b407018d1f0fb7ab294bf0" - integrity sha512-MzhptVbyZ7WNYAw4KmWiI4WnR8H16jBshceO7DFtfyZDRUU0n4ZPTYs1rGlj4+5iv2B7r8dci0Nx94bkId7FwA== +"@abp/jquery-form@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.2.tgz#58ce31a32bdfb355e5d4e3f97cb4761f594aa8e1" + integrity sha512-xN2xjK1RWKygwaqzTaWmpMlU0kGWGa2nKaudM6g9k/B6b1Pfdr8ykI4DaSuPb4BkRmurGkgy4r9o7IUoqv0T8Q== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.1.tgz#48b227ee95e0d7a12efbdfbdf1a28e3003dcdb8f" - integrity sha512-wTo5/oqU1TVOuuYfsu6XipryW2rrSx+bebP4fm/lQ1cZF+Ki1Rbvt5p+3fIGZfg8dJRMKXCtL3UYyadKTlqJ8A== +"@abp/jquery-validation-unobtrusive@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.2.tgz#4e624e22cbf149d1c78da46aabaf6fc18d3b65ff" + integrity sha512-adKJxnWnhCrIYWoVdo41zgO5p4SjyypCxoHeQ7mkohry2WN6WuQG5nmHqhpdevw966DENvmVzFfz7vnO72vtrg== dependencies: - "@abp/jquery-validation" "~9.2.0-rc.1" + "@abp/jquery-validation" "~9.2.0-rc.2" jquery-validation-unobtrusive "^4.0.0" -"@abp/jquery-validation@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.1.tgz#fae0ce1e0db0af62f80836d3e982c9a79f7b1209" - integrity sha512-c2+BwErN2w6ikbOYuuSQHZeMdLaKR7l0CIvwtUnzwCHjdUGAbMX9w9lYwnO6R6DsNCV7Cb5+YrbjM7jGY7zMiQ== +"@abp/jquery-validation@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.2.tgz#b6a8124d5056ddad515733bffc78703f6bd422be" + integrity sha512-4j1fg1qImif2vFZQFJ7z1olEUnjc3BByKS+7joNQ+96/NqOQdOQjRjB2n490od7ExCinKnvYx3JFttpYjHU3Xw== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-validation "^1.21.0" -"@abp/jquery@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.1.tgz#a930c1ef6a17a831cd7d064b7cbb20d604fbc4bb" - integrity sha512-qc461cJOQvEX95JbIFtDLj5dxUUDyP7PUXP8SjCvxP4GURoKhjxx0j0U0mBkMDJMrSrvALFKbF5S6OlgdgaPGQ== +"@abp/jquery@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.2.tgz#335643787ab282d5d2fee4f360c2b62cce3db962" + integrity sha512-baKNDuiQMzkV0LFzBwEqS0JYtXIUe5KH+MVizGR6Zv10B8l/gIrUzWI/nnqDtbts6gmY9OBDXkCTcgMQBwKqjw== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" jquery "~3.7.1" -"@abp/lodash@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.1.tgz#0e0b455c84c6b6c52a3aaf1ccc4c704f49503ac8" - integrity sha512-Bg2Bz7G04jvz+QRXLlK3A2eUBR3Ef1rq622jWsaKo4fW4rCdHkZBbjeqYDLYc1PqDIJawhEdIByh8VzMgRd6tA== +"@abp/lodash@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.2.tgz#521bccafcc09780c751932688b6ec45c368c2854" + integrity sha512-T6eYsDovUl4AYD9n2N4WZq9MeC4/ryke5ctvdhzuArqM7WpPvohq3VKGugrP/MLo9oD3MZ5DVQvMJ0AVg+IXNQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" lodash "^4.17.21" -"@abp/luxon@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.1.tgz#275726bf1f9ff14cdf902a7ea64213a3e7434927" - integrity sha512-vga0taYVDPGwcAQqFe6pAEAUu3vRH7MgxBQdMrEX80YhsSJevPHSl6jG3ey5IqWOy4dpMyiN4v7gWBHJ93mbFg== +"@abp/luxon@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.2.tgz#da366d335f9575b104ea2206e076af35cbbfcfba" + integrity sha512-mr8ipYrJDDJPoImIwORK7Z6d1C07APl95L17ufRbig4sjdxjNEDR5uUXVviVafF1No2bVkYiS0xGKQmojA2twg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" luxon "^3.5.0" -"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.1.tgz#3d4c17a9d6ace815e4bc4dc825d0020474a794f7" - integrity sha512-Cqs6A88bWggdtDoiCREBTXknCI+c7vhmZ/SM84k4NfwzlPscZYMCbtJlrln4g3zmElJwwBPerl0Gs778kUOjog== +"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.2.tgz#cb79018adf08276041eb5c5dcf75130c8995686b" + integrity sha512-jdHXx7kPduaEfFXDvf5s+QVl10RqshNbnZkkqPx0mMkhz2H/qxwzF1e0mcLFL38nEgs+0gxIkcA8/MKq85tyqQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.1.tgz#1604d38429f1e0484223ea4a7a3a10f1785420f4" - integrity sha512-5VnPhCOnTug7tqlLsg46LY84LU5DrYNKxm5T3oz+OFq4I05Ut/LWGElRvOnEFxfFfkYuJvbxih3trAGuEJD6+A== +"@abp/moment@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.2.tgz#f4339138668ca72be1d700624b91789344557bff" + integrity sha512-J4ZaCDEcXLGmJ+8zqgaMK9Lutnjga28LSbuiFaGLlZ1QgYZ5HDScE128o3vX9qr60tc6IIY0cDkHi4bBHo7ozw== dependencies: moment "^2.30.1" -"@abp/select2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.1.tgz#6f378c9bd4a01dbe72bf41f175c964e36353ef4e" - integrity sha512-HlQtSmY3VRIbCbTJnWFmvPeUmHYX8cI5z0Dwa30/TNPWDQuws5Yx3F4B9crw6AC/EIzCobsAZ4QhsgQxsUHNvg== +"@abp/select2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.2.tgz#ba6e839644b7ecdd198fe5286101302a3dc79ce3" + integrity sha512-AQMXb5ATgbN7grpKU8lB2xFFfirCe45lIvd9krW5SwUHCYZP7pRPbwQXAew+BqlIIYJJF2GA7/Nf//e/71bKtg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.1.tgz#b70784ff038ff4d6cdc07a7ef35edd7da5dfaa23" - integrity sha512-cJVdPB1hh7AtmfmcLLAFGxFDYc08sjtRS5kJ37ru9WFVOyzF1A99QgMOEBSB6BGKNbkCJwQbkwGCHjtQTHQ46w== +"@abp/sweetalert2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.2.tgz#075634dc3ec996607757694d636d276ba2350e06" + integrity sha512-ZgHgqM8Q+V9ECQyAyepM5KpshKpQP463xRHwgY45oR7/CfCcO/vS56YQgJNg2zE6+lRQZaRQ9OL7lph8975vVg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" sweetalert2 "^11.14.1" -"@abp/timeago@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.1.tgz#689fa9c9d4b0c0a239b37cd4d045dfb745f392df" - integrity sha512-mNmmRVzGryW45woLmDrxVnUCSi2+Xp2djHNKe7VF4D2Xywos9yxEImTX8B9lB0QMWl8BawsZCz/jsC3QURkXGw== +"@abp/timeago@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.2.tgz#25324732966438bd6f505bdd932511ba2cc8c22b" + integrity sha512-WfWxxiycg77vVN2hPHqUOu552la+zxr0EZnHMqnEnnBe+gFYe9C0CpdYuyBq2eQXRXHoVzsB+4YRVNk5sbSGng== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" timeago "^1.6.7" -"@abp/utils@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.1.tgz#508d9922c842f2a76fc748574f0ae3a9954b6895" - integrity sha512-XFaBI4qxeXixAtapXRzETkS60+5XkZeEnW9O3wyHU6r4rEtIdOHo9w7t/vM5b5KAUlcEE02jS6pcqlJHd7miqw== +"@abp/utils@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.2.tgz#669885ad1e3ac7b8e182d7c392ea1b633df65aac" + integrity sha512-rfQxhJy04Qf50P3ciasKbDlJ+9JidD60xW77TjcoUJvljJE+A8iwTX8Wwqz7+YcC7rks2ILM4y3Ay7/47NOICQ== dependencies: just-compare "^2.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index 8d367f02e8..5243b8b399 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": "~9.2.0-rc.1", - "@abp/cms-kit": "9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.2", + "@abp/cms-kit": "9.2.0-rc.2" } } 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 dea3820ce1..dd4e5281d4 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,293 +2,293 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.1.tgz#00f6c73e8e38578cfb6eb10214a8e4347dda75b3" - integrity sha512-Ophg50dxq2E4A2PgAtErDZ8LQfgAoT1ipZv4H3lxu0GwtRXrLEScfykHVDScTHJVpTF8Z549zYQl3jYtPJACog== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.1.tgz#4fb738ad5a6ac85165cf3e45893615d1762d43ed" - integrity sha512-TCW7nGGMqnBD8n2Jc1r9ht2HixRj8kDOZJysQUd3uHNmTBCO1b5cBjxL4ksSzM98/kEs6i0q6OTasqJrxHuHNA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.1" - "@abp/bootstrap" "~9.2.0-rc.1" - "@abp/bootstrap-datepicker" "~9.2.0-rc.1" - "@abp/bootstrap-daterangepicker" "~9.2.0-rc.1" - "@abp/datatables.net-bs5" "~9.2.0-rc.1" - "@abp/font-awesome" "~9.2.0-rc.1" - "@abp/jquery-form" "~9.2.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.1" - "@abp/lodash" "~9.2.0-rc.1" - "@abp/luxon" "~9.2.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.1" - "@abp/moment" "~9.2.0-rc.1" - "@abp/select2" "~9.2.0-rc.1" - "@abp/sweetalert2" "~9.2.0-rc.1" - "@abp/timeago" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.1.tgz#d2a2c5fc25444eedf2f4ea92505ba4aede86b771" - integrity sha512-vgdJFOzxqwuaDcMhzIHHn1wIJbIar/NzJxpbUBjRWjnZzrKKerDLF9FuDegpU1fX3nOvunI11zSFT3yCuMHebQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.2.tgz#e32c8bd046d7377ae3f6a703eac9069e10bcd600" + integrity sha512-oj4lGrzllgGrq7rI7gz1Xvq5TU+xT+isGVf4T8hF3INE/J2nIyK45HnkjDq5wpdM3P+HkdM1+RtWNrLSVu0Klg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.2.tgz#77562013b604d0193e361efa6801235179dc7b4f" + integrity sha512-5KcMGg6o6W5uwsujrjUARlZFgWmZeYBNCf1vkf3btakkwTzmPDbypUx6VrgBJbt4AUnYlMQbSHvbfK0d3I1e6w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.2" + "@abp/bootstrap" "~9.2.0-rc.2" + "@abp/bootstrap-datepicker" "~9.2.0-rc.2" + "@abp/bootstrap-daterangepicker" "~9.2.0-rc.2" + "@abp/datatables.net-bs5" "~9.2.0-rc.2" + "@abp/font-awesome" "~9.2.0-rc.2" + "@abp/jquery-form" "~9.2.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.2" + "@abp/lodash" "~9.2.0-rc.2" + "@abp/luxon" "~9.2.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.2" + "@abp/moment" "~9.2.0-rc.2" + "@abp/select2" "~9.2.0-rc.2" + "@abp/sweetalert2" "~9.2.0-rc.2" + "@abp/timeago" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.2.tgz#e1c0e4b0280d5fe37659da8dc696150f0d461336" + integrity sha512-WG4WWGS1mSb2QWAVOA2nrvoi9/3oueEaKEG18xbPgWiLz5GCq8gsopKqUgW/fmBaw+1Jh9tsuCTH7eED/2tUxA== dependencies: ansi-colors "^4.1.3" -"@abp/bootstrap-datepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.1.tgz#b548840efb6a9c8d9acabf828af4e95628be6cbe" - integrity sha512-ClR+fiOiUccEIvbeAgfo2+Z3eZYp7MRIVrll8Rh93oKr6C0XzjwA7acSGe87CS3e5wkUXMsKtqmRX+eSXyJBPQ== +"@abp/bootstrap-datepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.2.tgz#429c2d44a22f9190013aea0efa420854b7e83a4f" + integrity sha512-bxMpaxTgnF5/VELbKvtZVw0tI0bowzUQFVSBQJqO4o7wJmxyHNzJuaom8Is+tCsoMrpo8t9EGMGfpWHV1IsrjQ== dependencies: bootstrap-datepicker "^1.10.0" -"@abp/bootstrap-daterangepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.1.tgz#e7174841889b80f7beddaeb84be7a0b908cc34a3" - integrity sha512-CzSutc7rtYzd4jzTTiKlUmFGlZk70DTcp/tnuD7rVWZp7Njr2INfwGlgt7P7Hj3g9Wt3j0mAM+IDz9t2rleqtA== +"@abp/bootstrap-daterangepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.2.tgz#85bb869d5d43eb6c97f50943ea2c390cb4d37d54" + integrity sha512-rLLsY6GCY16IOwRkmx7vZ25sVHOM9dPdTlcZiuUuEi5+QrmgGiqZmIwqYiu4WFSPPTJtufsyMaHzXxqiZRpXVg== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.1.tgz#87c17c50a9e8f6fdb6474541aeaadf1ebb1d6b1b" - integrity sha512-tgOIGY7HfiwgM9QUpcydZN9tdKSrm6mYPzECBDU866xWi8aUeLZp12hLoSL94M1iZ6jchbZaqTqMOy00Tc0FCQ== +"@abp/bootstrap@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.2.tgz#ba2ab98d930501e7f004f99e7d7e7d4e6d3c0998" + integrity sha512-u2mtHHbmXNgngExl4hM5uo/E3k453n0im2Ci02+4dnhZoFicLZlBdtJusZAw5QR1XTLPybW6RXofWBvkZcgiwg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" bootstrap "^5.3.3" -"@abp/clipboard@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.1.tgz#50069847848714fb155d35b656563f26f2fd870c" - integrity sha512-3lEUrQNje436F8t4nhTrIrFru1A1ZGJHgsYaXR6At50hNwWHcE1LtZKJnXm4am0dALJK/uwv4p7BfNT9Edo11A== +"@abp/clipboard@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.2.tgz#608bdb3d4a3ff1a7b38ad5850385746f7cfe6c0c" + integrity sha512-w/JiTmidNc7SZuvpkQumyNj6FTBq6hLnhXeBBh4/xega1Ob2q+tbrOSpemgpK6YOXUQbmH8a4vEPvwt7uzNfvQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" clipboard "^2.0.11" -"@abp/cms-kit.admin@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-9.2.0-rc.1.tgz#6965f9448e9968ae6b23c55d51873b8dbc0a3ba0" - integrity sha512-FsQlYUv6JYf7uccOabBY0bhprSOK6t6reRA3JFmU0M9LAEBN8XDl6qL8d/vcAznwOSm/nUAIo1VeKAKUjF6XWg== +"@abp/cms-kit.admin@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-9.2.0-rc.2.tgz#10f34b0bf826f1f402a8e86527a4631107ac62f7" + integrity sha512-LkEC7JJPs0nJrCRJJgNYKnUNBXfRYixORmVRnSa+hm+Wi3hqm1sRNQr86rUTOqlw90s9LtrVcBCnDkGmb0/pdg== dependencies: - "@abp/codemirror" "~9.2.0-rc.1" - "@abp/jstree" "~9.2.0-rc.1" - "@abp/markdown-it" "~9.2.0-rc.1" - "@abp/slugify" "~9.2.0-rc.1" - "@abp/tui-editor" "~9.2.0-rc.1" - "@abp/uppy" "~9.2.0-rc.1" + "@abp/codemirror" "~9.2.0-rc.2" + "@abp/jstree" "~9.2.0-rc.2" + "@abp/markdown-it" "~9.2.0-rc.2" + "@abp/slugify" "~9.2.0-rc.2" + "@abp/tui-editor" "~9.2.0-rc.2" + "@abp/uppy" "~9.2.0-rc.2" -"@abp/cms-kit.public@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-9.2.0-rc.1.tgz#055fd81cfbbbcf2dce6c006f53a3d9a8f634e729" - integrity sha512-4m0vAyQHaEaSyVaC/X8UPer4Wwz6XiBN87KXY1Mg7TbjNZNsjGtd6Kouct5EwGYV5R296W5VhxvLQBzqTivIww== +"@abp/cms-kit.public@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-9.2.0-rc.2.tgz#f2ba7951a33e52224d28a78921ef882a506d5611" + integrity sha512-R5se5hJrmbQx8zbgx9dDGnH0e1CatPLSLb7miVt7rdfyT6jD0bWLBKwtSSRws3jBhNWu8neKVokJubPRoWuz1A== dependencies: - "@abp/highlight.js" "~9.2.0-rc.1" - "@abp/star-rating-svg" "~9.2.0-rc.1" + "@abp/highlight.js" "~9.2.0-rc.2" + "@abp/star-rating-svg" "~9.2.0-rc.2" -"@abp/cms-kit@9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-9.2.0-rc.1.tgz#63097f42539d6bcdc36ebab9bebea7bfc195f922" - integrity sha512-vfWy0Lrc9hRFZ87jtMUIi/soOuc00v5mwJgUVX6dDuIWr+dQ+MvffQ2WfCvM512q2XoQsdlRs7PTL6GIzaDfqg== +"@abp/cms-kit@9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-9.2.0-rc.2.tgz#73acef605cc400e33378b7ae56808a26eb5ac1b9" + integrity sha512-0TLLsLfDuLznpyWjEGUxHmtvW88eVmKahsqcym1RhotUYr6p8qxZikh2prvqqL9UuXEuY4RDhM7i9fyw3PhS/A== dependencies: - "@abp/cms-kit.admin" "~9.2.0-rc.1" - "@abp/cms-kit.public" "~9.2.0-rc.1" + "@abp/cms-kit.admin" "~9.2.0-rc.2" + "@abp/cms-kit.public" "~9.2.0-rc.2" -"@abp/codemirror@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-9.2.0-rc.1.tgz#387c935361f8d434b9b9829c3b1e905e0461976f" - integrity sha512-KtLXu6LBo1v3pHqfm5i0+5DHddg9Wuc8iAeAu0TDyV9/D8nwVDYmVotOcVY8pLV1AWxJ1+X7fse7NH9QDlPUvg== +"@abp/codemirror@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-9.2.0-rc.2.tgz#185bf41b3aa9dc11a344e7d360f7d5accc045c5e" + integrity sha512-jaLvLRTUfIC6c93ND0rfVZJTuE1CrsSP30wZIXoEt9TgmNmEfnirJiDBDNupAg7mIwBvVjoEVr3k+KspPQOmZA== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" codemirror "^5.65.1" -"@abp/core@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.1.tgz#30fb627e750f651b4d1819461e3ffeb5fc6d9011" - integrity sha512-Adb4sk9oZJaxL19RbM1opLGWn2kKzRUcFLH6lNG2QYCAXf74y/YfFLQyoZSrTKS1M+hkGjIrEW6GssAgHTCJeg== +"@abp/core@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.2.tgz#0eab20842f8c0801d1dca036d3d66a67e155e019" + integrity sha512-8bC1MAV4iSFLJvRvM5mvrI9+N5FPAjaG79hr3p0xJtNixFOFpNELDf4p0zwy97zY8juL+AIEyJAkg+KIIK90DQ== dependencies: - "@abp/utils" "~9.2.0-rc.1" + "@abp/utils" "~9.2.0-rc.2" -"@abp/datatables.net-bs5@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.1.tgz#7d56850b6e46f744c794e40d08aeb5fd1a7543ee" - integrity sha512-PFt0PruHikzXzcEKtykwnRo+Z0D+njmhaoJk4J11yoZjvSFOAQXIRdsVgFgJub8REN3I57eG9PPCl3AZwAba9w== +"@abp/datatables.net-bs5@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.2.tgz#8c07544cafd2d2257f45150d3265c25eafc0ec0f" + integrity sha512-l3VOtc0fleUsx+ZUMr49+nPBWRBUVw4Z26ogT7O7uRR8doeerNU1GfA4yFJCUp02WIwt8cmZ+apJHADykn9Vng== dependencies: - "@abp/datatables.net" "~9.2.0-rc.1" + "@abp/datatables.net" "~9.2.0-rc.2" datatables.net-bs5 "^2.1.8" -"@abp/datatables.net@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.1.tgz#8d165f404e85a54a4e92887173a3d01f827ba5ef" - integrity sha512-rEvCSJWH2l505Nb7Nqa0tL1iFpnMZ+WxnfbomaqdSpL6YsCUd8syeGI37V+LQUknXGsUFqGVyazPrU3vjIR8Kg== +"@abp/datatables.net@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.2.tgz#2880ccb61750faa1689aec15f9e49d92ab1e94a1" + integrity sha512-nljq0p8mxoBvMZngtViInyQJqX/MI7EyQeCIYNICF2LO42RRZfpKaRy5zX+4Uc3z/wz209CfK8QfRNH/d1HtBQ== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" datatables.net "^2.1.8" -"@abp/font-awesome@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.1.tgz#758b4028fa5f6d11bb675ff465fc222e3b656c01" - integrity sha512-H0fmIM/YAkT64LLMub0eDzpxvrNVjkFrRgX4YM10U/AQ0gILxjuEapRxv3+ueIJiy3DiBLkPWQ+SQN3Lwh4FOA== +"@abp/font-awesome@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.2.tgz#51eb750f5697668db538ad68cc6b9279517da537" + integrity sha512-X9JfF4n4MDZLszwZHIHuxSdGGxImEzV91ROKqNeclErCx3bOXyq/l9C+haZl/3TLzTAOSDMLgHGrT3MUCVPF5w== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" "@fortawesome/fontawesome-free" "^6.6.0" -"@abp/highlight.js@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-9.2.0-rc.1.tgz#2eabf8c5aa61a7dfa1462d87853cc37774e6b021" - integrity sha512-xmyUIB/ZNpObnZf2JeJaOgSSnowxqlkk8OUoVzjthmsVszWGJU3l8TABjWpReJclywFlrsXGZPqvg/LIuDN8tA== +"@abp/highlight.js@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-9.2.0-rc.2.tgz#9865cae50e39cca9ddd0c0390da794778ed36779" + integrity sha512-43NEl2omc8HWJjprEJpcMtb88QCD9bTCXrW7e2CO8ReyFuEoQh+79c0q2E5xJ5aitZpFhq4j4OOxxzUvAKORKw== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" "@highlightjs/cdn-assets" "~11.10.0" -"@abp/jquery-form@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.1.tgz#558bcf9da8912e0014b407018d1f0fb7ab294bf0" - integrity sha512-MzhptVbyZ7WNYAw4KmWiI4WnR8H16jBshceO7DFtfyZDRUU0n4ZPTYs1rGlj4+5iv2B7r8dci0Nx94bkId7FwA== +"@abp/jquery-form@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.2.tgz#58ce31a32bdfb355e5d4e3f97cb4761f594aa8e1" + integrity sha512-xN2xjK1RWKygwaqzTaWmpMlU0kGWGa2nKaudM6g9k/B6b1Pfdr8ykI4DaSuPb4BkRmurGkgy4r9o7IUoqv0T8Q== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.1.tgz#48b227ee95e0d7a12efbdfbdf1a28e3003dcdb8f" - integrity sha512-wTo5/oqU1TVOuuYfsu6XipryW2rrSx+bebP4fm/lQ1cZF+Ki1Rbvt5p+3fIGZfg8dJRMKXCtL3UYyadKTlqJ8A== +"@abp/jquery-validation-unobtrusive@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.2.tgz#4e624e22cbf149d1c78da46aabaf6fc18d3b65ff" + integrity sha512-adKJxnWnhCrIYWoVdo41zgO5p4SjyypCxoHeQ7mkohry2WN6WuQG5nmHqhpdevw966DENvmVzFfz7vnO72vtrg== dependencies: - "@abp/jquery-validation" "~9.2.0-rc.1" + "@abp/jquery-validation" "~9.2.0-rc.2" jquery-validation-unobtrusive "^4.0.0" -"@abp/jquery-validation@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.1.tgz#fae0ce1e0db0af62f80836d3e982c9a79f7b1209" - integrity sha512-c2+BwErN2w6ikbOYuuSQHZeMdLaKR7l0CIvwtUnzwCHjdUGAbMX9w9lYwnO6R6DsNCV7Cb5+YrbjM7jGY7zMiQ== +"@abp/jquery-validation@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.2.tgz#b6a8124d5056ddad515733bffc78703f6bd422be" + integrity sha512-4j1fg1qImif2vFZQFJ7z1olEUnjc3BByKS+7joNQ+96/NqOQdOQjRjB2n490od7ExCinKnvYx3JFttpYjHU3Xw== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-validation "^1.21.0" -"@abp/jquery@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.1.tgz#a930c1ef6a17a831cd7d064b7cbb20d604fbc4bb" - integrity sha512-qc461cJOQvEX95JbIFtDLj5dxUUDyP7PUXP8SjCvxP4GURoKhjxx0j0U0mBkMDJMrSrvALFKbF5S6OlgdgaPGQ== +"@abp/jquery@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.2.tgz#335643787ab282d5d2fee4f360c2b62cce3db962" + integrity sha512-baKNDuiQMzkV0LFzBwEqS0JYtXIUe5KH+MVizGR6Zv10B8l/gIrUzWI/nnqDtbts6gmY9OBDXkCTcgMQBwKqjw== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" jquery "~3.7.1" -"@abp/jstree@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-9.2.0-rc.1.tgz#b2778864d8472d531c9acca4e300c1c788fcd712" - integrity sha512-8xuyLu1cxR6+9vQ83etxFCi3FUq17bCgE9Mjt4RXOpXAdEg2GV/pyL3skJfzfIF1sPVxmaxOrE5kaURCW0psLQ== +"@abp/jstree@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-9.2.0-rc.2.tgz#65c9a263d51f93ec7a1935a8761b51ca9526b7c4" + integrity sha512-fhpiykHROkYx+CPVCnndXzrRkEuLwa2QlFCvBVn1A6FG/f+Z3luRqVJ7eF/hPVyMoAvsG/byRkpBEAg4B+8XNg== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jstree "^3.3.17" -"@abp/lodash@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.1.tgz#0e0b455c84c6b6c52a3aaf1ccc4c704f49503ac8" - integrity sha512-Bg2Bz7G04jvz+QRXLlK3A2eUBR3Ef1rq622jWsaKo4fW4rCdHkZBbjeqYDLYc1PqDIJawhEdIByh8VzMgRd6tA== +"@abp/lodash@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.2.tgz#521bccafcc09780c751932688b6ec45c368c2854" + integrity sha512-T6eYsDovUl4AYD9n2N4WZq9MeC4/ryke5ctvdhzuArqM7WpPvohq3VKGugrP/MLo9oD3MZ5DVQvMJ0AVg+IXNQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" lodash "^4.17.21" -"@abp/luxon@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.1.tgz#275726bf1f9ff14cdf902a7ea64213a3e7434927" - integrity sha512-vga0taYVDPGwcAQqFe6pAEAUu3vRH7MgxBQdMrEX80YhsSJevPHSl6jG3ey5IqWOy4dpMyiN4v7gWBHJ93mbFg== +"@abp/luxon@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.2.tgz#da366d335f9575b104ea2206e076af35cbbfcfba" + integrity sha512-mr8ipYrJDDJPoImIwORK7Z6d1C07APl95L17ufRbig4sjdxjNEDR5uUXVviVafF1No2bVkYiS0xGKQmojA2twg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" luxon "^3.5.0" -"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.1.tgz#3d4c17a9d6ace815e4bc4dc825d0020474a794f7" - integrity sha512-Cqs6A88bWggdtDoiCREBTXknCI+c7vhmZ/SM84k4NfwzlPscZYMCbtJlrln4g3zmElJwwBPerl0Gs778kUOjog== +"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.2.tgz#cb79018adf08276041eb5c5dcf75130c8995686b" + integrity sha512-jdHXx7kPduaEfFXDvf5s+QVl10RqshNbnZkkqPx0mMkhz2H/qxwzF1e0mcLFL38nEgs+0gxIkcA8/MKq85tyqQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/markdown-it@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-9.2.0-rc.1.tgz#f3a34b9efbb957c802cbb0ddccce1cc16231fe01" - integrity sha512-o0S+irI1tQsODFh4cU6qtCmtTnjLOoeDdi/gzEke4nKhpVOIcvgiOawcsl/CoX1Gg7U1akque2WRL+bA3TIRnw== +"@abp/markdown-it@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-9.2.0-rc.2.tgz#a91f28718e8b2fde0494c24e9af5f1acfcfd1fca" + integrity sha512-PsiOjpXYf8WGXVZUOQWES+GHHg7lEmVN6P9GHXiezDppeAks11mJSGbYIz6LcPr9YObZyfQY3kBTeBGBZQapQw== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" markdown-it "^14.1.0" -"@abp/moment@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.1.tgz#1604d38429f1e0484223ea4a7a3a10f1785420f4" - integrity sha512-5VnPhCOnTug7tqlLsg46LY84LU5DrYNKxm5T3oz+OFq4I05Ut/LWGElRvOnEFxfFfkYuJvbxih3trAGuEJD6+A== +"@abp/moment@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.2.tgz#f4339138668ca72be1d700624b91789344557bff" + integrity sha512-J4ZaCDEcXLGmJ+8zqgaMK9Lutnjga28LSbuiFaGLlZ1QgYZ5HDScE128o3vX9qr60tc6IIY0cDkHi4bBHo7ozw== dependencies: moment "^2.30.1" -"@abp/prismjs@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.1.tgz#623659c50c776bc8efcb7eacea70b2704ff87eec" - integrity sha512-QZ6NY4TXmWzrrZViN8v3CgH2l4fQUpEZLPsUaEmiRtq3+3meCaM3hxgNEOvcUg5IHZI7cPBRabQtVKoAPozcvQ== +"@abp/prismjs@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.2.tgz#1ee12acdd9e1dcc9ae2ce4a9f21f159c3f9e3dec" + integrity sha512-GuKz6bujBlYHAgLhW1RT7aEOwKyZ+vnyMIhN0/fQ34+nbqg0PC4htwJcN6spgN8gZKD06lCqBH+GjLE2WtE/Rw== dependencies: - "@abp/clipboard" "~9.2.0-rc.1" - "@abp/core" "~9.2.0-rc.1" + "@abp/clipboard" "~9.2.0-rc.2" + "@abp/core" "~9.2.0-rc.2" prismjs "^1.29.0" -"@abp/select2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.1.tgz#6f378c9bd4a01dbe72bf41f175c964e36353ef4e" - integrity sha512-HlQtSmY3VRIbCbTJnWFmvPeUmHYX8cI5z0Dwa30/TNPWDQuws5Yx3F4B9crw6AC/EIzCobsAZ4QhsgQxsUHNvg== +"@abp/select2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.2.tgz#ba6e839644b7ecdd198fe5286101302a3dc79ce3" + integrity sha512-AQMXb5ATgbN7grpKU8lB2xFFfirCe45lIvd9krW5SwUHCYZP7pRPbwQXAew+BqlIIYJJF2GA7/Nf//e/71bKtg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" select2 "^4.0.13" -"@abp/slugify@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-9.2.0-rc.1.tgz#ed7e6d96a698b83fc11d49c4a4ed0ab892a00167" - integrity sha512-RmMpbQYR5h0Lnf2bXCxEsGKcRzQJYFfa5SRsY++KTi8geHI2oh/zckm7Rw10zVxbyMufn71Z4kyGYOtuUAZLFQ== +"@abp/slugify@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-9.2.0-rc.2.tgz#659a16bdf9d27d712442c6989d0fa764e6ab5d49" + integrity sha512-8YT9Dn1WDPDVPQsy+kg0rbMP2zIW94zBzs3U8xj4JWRARTz/8qP3YciXh/p7/ncJJwvyz3OvL2QHhj9xWlTHVA== dependencies: slugify "^1.6.6" -"@abp/star-rating-svg@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-9.2.0-rc.1.tgz#1554b029341638247d73a1da48604498eb87344b" - integrity sha512-DNo1QyvB7yNF7eCGq0JTWLMRj2gvMT3I/c162ZJ2ZuOe4WBt6P5eS61DGXW9Sde3+JlUSh5mvYYDMJuR/WbARA== +"@abp/star-rating-svg@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-9.2.0-rc.2.tgz#ae79e454c07910df4f345dbeea9da6ebc774b1f1" + integrity sha512-1psK0ZvbNvSLMxNKInJgg7fEgn4/wg8xr5Mytup+xHZQ9d1GprjIoMENRlmiu6BgfEr+du/QjuyAP1B8Y4fZmw== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" star-rating-svg "^3.5.0" -"@abp/sweetalert2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.1.tgz#b70784ff038ff4d6cdc07a7ef35edd7da5dfaa23" - integrity sha512-cJVdPB1hh7AtmfmcLLAFGxFDYc08sjtRS5kJ37ru9WFVOyzF1A99QgMOEBSB6BGKNbkCJwQbkwGCHjtQTHQ46w== +"@abp/sweetalert2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.2.tgz#075634dc3ec996607757694d636d276ba2350e06" + integrity sha512-ZgHgqM8Q+V9ECQyAyepM5KpshKpQP463xRHwgY45oR7/CfCcO/vS56YQgJNg2zE6+lRQZaRQ9OL7lph8975vVg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" sweetalert2 "^11.14.1" -"@abp/timeago@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.1.tgz#689fa9c9d4b0c0a239b37cd4d045dfb745f392df" - integrity sha512-mNmmRVzGryW45woLmDrxVnUCSi2+Xp2djHNKe7VF4D2Xywos9yxEImTX8B9lB0QMWl8BawsZCz/jsC3QURkXGw== +"@abp/timeago@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.2.tgz#25324732966438bd6f505bdd932511ba2cc8c22b" + integrity sha512-WfWxxiycg77vVN2hPHqUOu552la+zxr0EZnHMqnEnnBe+gFYe9C0CpdYuyBq2eQXRXHoVzsB+4YRVNk5sbSGng== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" timeago "^1.6.7" -"@abp/tui-editor@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-9.2.0-rc.1.tgz#fdb0e13891da88a0da89dc2ee22f748b7bda7420" - integrity sha512-FVpaOF1yoox2X9ejbDQVRVDrm+5dElY5X7fxKPUthw7PUpCT+HCScVX4xtqkbF3GB3VYRdwQO2m1GdqIRC0Zlw== +"@abp/tui-editor@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-9.2.0-rc.2.tgz#8f755bfb7413d1636fe904d409efe6363f48516b" + integrity sha512-Ap2JOZShRvbHI4+5f1pGRgP26i6bel+2eBT1w33UWMclyNGhNYVcm9VNIyLaS9KbGM5bphij2bMdnTUpjQ10Dw== dependencies: - "@abp/jquery" "~9.2.0-rc.1" - "@abp/prismjs" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" + "@abp/prismjs" "~9.2.0-rc.2" -"@abp/uppy@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-9.2.0-rc.1.tgz#4f05e7f1db4fac6662c315fe7b51634564e12488" - integrity sha512-XlG4qc4QrUjlL+o41expGJU4ESs5S4BMYRMYBP/6YhJrDC15tG0+bQp8OP8qNWP8PPTu9tQ4/U+C5qvckvyjng== +"@abp/uppy@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-9.2.0-rc.2.tgz#27672c7947410b0c0b57225cbf7c436268dcd05b" + integrity sha512-CfsHC54V0iDNr3urc5TctW8ZBuy2xCaTyqvA+7WmdSeGfEkB+aDaWekQF+xGKqZvsx/mWgz69AZHLHF4sRi4yQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" uppy "^4.4.1" -"@abp/utils@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.1.tgz#508d9922c842f2a76fc748574f0ae3a9954b6895" - integrity sha512-XFaBI4qxeXixAtapXRzETkS60+5XkZeEnW9O3wyHU6r4rEtIdOHo9w7t/vM5b5KAUlcEE02jS6pcqlJHd7miqw== +"@abp/utils@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.2.tgz#669885ad1e3ac7b8e182d7c392ea1b633df65aac" + integrity sha512-rfQxhJy04Qf50P3ciasKbDlJ+9JidD60xW77TjcoUJvljJE+A8iwTX8Wwqz7+YcC7rks2ILM4y3Ay7/47NOICQ== dependencies: just-compare "^2.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index 14746df33a..21b2acc98f 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": "~9.2.0-rc.1", - "@abp/docs": "~9.2.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~9.2.0-rc.2", + "@abp/docs": "~9.2.0-rc.2" } } diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index 2f406772a8..bfc550db80 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,229 +2,229 @@ # yarn lockfile v1 -"@abp/anchor-js@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-9.2.0-rc.1.tgz#bfc1f8045b85de351502fd5ec2d5711b74ca1c4a" - integrity sha512-ir3TyKMlFqJGPOKei+z251z/HzXxJVa3i2t26ll27+lbgM/+wfE1B5F6ys8zJSqAu/xjyo1nwGJdQoYEC4+IVg== +"@abp/anchor-js@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-9.2.0-rc.2.tgz#c5c932bc8b441a41f775ca125113817c0fa726d8" + integrity sha512-xQZjCFuW5XsjLsoEh2tOAHGBFWcFpv2c5LVdC6GS23eYA43wEg7Cg75Y7Su1INj8IMrIa0RWgxm5KSPAFXJ4eA== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" anchor-js "^5.0.0" -"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.1.tgz#00f6c73e8e38578cfb6eb10214a8e4347dda75b3" - integrity sha512-Ophg50dxq2E4A2PgAtErDZ8LQfgAoT1ipZv4H3lxu0GwtRXrLEScfykHVDScTHJVpTF8Z549zYQl3jYtPJACog== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.1.tgz#4fb738ad5a6ac85165cf3e45893615d1762d43ed" - integrity sha512-TCW7nGGMqnBD8n2Jc1r9ht2HixRj8kDOZJysQUd3uHNmTBCO1b5cBjxL4ksSzM98/kEs6i0q6OTasqJrxHuHNA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.1" - "@abp/bootstrap" "~9.2.0-rc.1" - "@abp/bootstrap-datepicker" "~9.2.0-rc.1" - "@abp/bootstrap-daterangepicker" "~9.2.0-rc.1" - "@abp/datatables.net-bs5" "~9.2.0-rc.1" - "@abp/font-awesome" "~9.2.0-rc.1" - "@abp/jquery-form" "~9.2.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.1" - "@abp/lodash" "~9.2.0-rc.1" - "@abp/luxon" "~9.2.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.1" - "@abp/moment" "~9.2.0-rc.1" - "@abp/select2" "~9.2.0-rc.1" - "@abp/sweetalert2" "~9.2.0-rc.1" - "@abp/timeago" "~9.2.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.1.tgz#d2a2c5fc25444eedf2f4ea92505ba4aede86b771" - integrity sha512-vgdJFOzxqwuaDcMhzIHHn1wIJbIar/NzJxpbUBjRWjnZzrKKerDLF9FuDegpU1fX3nOvunI11zSFT3yCuMHebQ== +"@abp/aspnetcore.mvc.ui.theme.basic@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-9.2.0-rc.2.tgz#e32c8bd046d7377ae3f6a703eac9069e10bcd600" + integrity sha512-oj4lGrzllgGrq7rI7gz1Xvq5TU+xT+isGVf4T8hF3INE/J2nIyK45HnkjDq5wpdM3P+HkdM1+RtWNrLSVu0Klg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-9.2.0-rc.2.tgz#77562013b604d0193e361efa6801235179dc7b4f" + integrity sha512-5KcMGg6o6W5uwsujrjUARlZFgWmZeYBNCf1vkf3btakkwTzmPDbypUx6VrgBJbt4AUnYlMQbSHvbfK0d3I1e6w== + dependencies: + "@abp/aspnetcore.mvc.ui" "~9.2.0-rc.2" + "@abp/bootstrap" "~9.2.0-rc.2" + "@abp/bootstrap-datepicker" "~9.2.0-rc.2" + "@abp/bootstrap-daterangepicker" "~9.2.0-rc.2" + "@abp/datatables.net-bs5" "~9.2.0-rc.2" + "@abp/font-awesome" "~9.2.0-rc.2" + "@abp/jquery-form" "~9.2.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~9.2.0-rc.2" + "@abp/lodash" "~9.2.0-rc.2" + "@abp/luxon" "~9.2.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.2" + "@abp/moment" "~9.2.0-rc.2" + "@abp/select2" "~9.2.0-rc.2" + "@abp/sweetalert2" "~9.2.0-rc.2" + "@abp/timeago" "~9.2.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-9.2.0-rc.2.tgz#e1c0e4b0280d5fe37659da8dc696150f0d461336" + integrity sha512-WG4WWGS1mSb2QWAVOA2nrvoi9/3oueEaKEG18xbPgWiLz5GCq8gsopKqUgW/fmBaw+1Jh9tsuCTH7eED/2tUxA== dependencies: ansi-colors "^4.1.3" -"@abp/bootstrap-datepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.1.tgz#b548840efb6a9c8d9acabf828af4e95628be6cbe" - integrity sha512-ClR+fiOiUccEIvbeAgfo2+Z3eZYp7MRIVrll8Rh93oKr6C0XzjwA7acSGe87CS3e5wkUXMsKtqmRX+eSXyJBPQ== +"@abp/bootstrap-datepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-9.2.0-rc.2.tgz#429c2d44a22f9190013aea0efa420854b7e83a4f" + integrity sha512-bxMpaxTgnF5/VELbKvtZVw0tI0bowzUQFVSBQJqO4o7wJmxyHNzJuaom8Is+tCsoMrpo8t9EGMGfpWHV1IsrjQ== dependencies: bootstrap-datepicker "^1.10.0" -"@abp/bootstrap-daterangepicker@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.1.tgz#e7174841889b80f7beddaeb84be7a0b908cc34a3" - integrity sha512-CzSutc7rtYzd4jzTTiKlUmFGlZk70DTcp/tnuD7rVWZp7Njr2INfwGlgt7P7Hj3g9Wt3j0mAM+IDz9t2rleqtA== +"@abp/bootstrap-daterangepicker@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-9.2.0-rc.2.tgz#85bb869d5d43eb6c97f50943ea2c390cb4d37d54" + integrity sha512-rLLsY6GCY16IOwRkmx7vZ25sVHOM9dPdTlcZiuUuEi5+QrmgGiqZmIwqYiu4WFSPPTJtufsyMaHzXxqiZRpXVg== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.1.tgz#87c17c50a9e8f6fdb6474541aeaadf1ebb1d6b1b" - integrity sha512-tgOIGY7HfiwgM9QUpcydZN9tdKSrm6mYPzECBDU866xWi8aUeLZp12hLoSL94M1iZ6jchbZaqTqMOy00Tc0FCQ== +"@abp/bootstrap@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-9.2.0-rc.2.tgz#ba2ab98d930501e7f004f99e7d7e7d4e6d3c0998" + integrity sha512-u2mtHHbmXNgngExl4hM5uo/E3k453n0im2Ci02+4dnhZoFicLZlBdtJusZAw5QR1XTLPybW6RXofWBvkZcgiwg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" bootstrap "^5.3.3" -"@abp/clipboard@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.1.tgz#50069847848714fb155d35b656563f26f2fd870c" - integrity sha512-3lEUrQNje436F8t4nhTrIrFru1A1ZGJHgsYaXR6At50hNwWHcE1LtZKJnXm4am0dALJK/uwv4p7BfNT9Edo11A== +"@abp/clipboard@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-9.2.0-rc.2.tgz#608bdb3d4a3ff1a7b38ad5850385746f7cfe6c0c" + integrity sha512-w/JiTmidNc7SZuvpkQumyNj6FTBq6hLnhXeBBh4/xega1Ob2q+tbrOSpemgpK6YOXUQbmH8a4vEPvwt7uzNfvQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" clipboard "^2.0.11" -"@abp/core@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.1.tgz#30fb627e750f651b4d1819461e3ffeb5fc6d9011" - integrity sha512-Adb4sk9oZJaxL19RbM1opLGWn2kKzRUcFLH6lNG2QYCAXf74y/YfFLQyoZSrTKS1M+hkGjIrEW6GssAgHTCJeg== +"@abp/core@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-9.2.0-rc.2.tgz#0eab20842f8c0801d1dca036d3d66a67e155e019" + integrity sha512-8bC1MAV4iSFLJvRvM5mvrI9+N5FPAjaG79hr3p0xJtNixFOFpNELDf4p0zwy97zY8juL+AIEyJAkg+KIIK90DQ== dependencies: - "@abp/utils" "~9.2.0-rc.1" + "@abp/utils" "~9.2.0-rc.2" -"@abp/datatables.net-bs5@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.1.tgz#7d56850b6e46f744c794e40d08aeb5fd1a7543ee" - integrity sha512-PFt0PruHikzXzcEKtykwnRo+Z0D+njmhaoJk4J11yoZjvSFOAQXIRdsVgFgJub8REN3I57eG9PPCl3AZwAba9w== +"@abp/datatables.net-bs5@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-9.2.0-rc.2.tgz#8c07544cafd2d2257f45150d3265c25eafc0ec0f" + integrity sha512-l3VOtc0fleUsx+ZUMr49+nPBWRBUVw4Z26ogT7O7uRR8doeerNU1GfA4yFJCUp02WIwt8cmZ+apJHADykn9Vng== dependencies: - "@abp/datatables.net" "~9.2.0-rc.1" + "@abp/datatables.net" "~9.2.0-rc.2" datatables.net-bs5 "^2.1.8" -"@abp/datatables.net@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.1.tgz#8d165f404e85a54a4e92887173a3d01f827ba5ef" - integrity sha512-rEvCSJWH2l505Nb7Nqa0tL1iFpnMZ+WxnfbomaqdSpL6YsCUd8syeGI37V+LQUknXGsUFqGVyazPrU3vjIR8Kg== +"@abp/datatables.net@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-9.2.0-rc.2.tgz#2880ccb61750faa1689aec15f9e49d92ab1e94a1" + integrity sha512-nljq0p8mxoBvMZngtViInyQJqX/MI7EyQeCIYNICF2LO42RRZfpKaRy5zX+4Uc3z/wz209CfK8QfRNH/d1HtBQ== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" datatables.net "^2.1.8" -"@abp/docs@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-9.2.0-rc.1.tgz#040e3cd8b4c3979b082eadfdceb1f82091bd3f7b" - integrity sha512-ZtVlEH7Ze4MTYhk1YI4ddZ18kr6+Zc7s4bJXEoS5eHrBuljozmo4P0hypFmkvYkVz3KGMrK771t3nIQMB3PE/w== +"@abp/docs@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-9.2.0-rc.2.tgz#5e2ea75f0fbbe543cc5d0b3346f4ffb9a8f605b2" + integrity sha512-jxl4lZYAepQx8yvY/KG/H5uHd3UwdyLS9cb1QFJRMZn5nZZq9890L0Ri4LeWGFM71Oswdj3Wavh+5cmL2leVqw== dependencies: - "@abp/anchor-js" "~9.2.0-rc.1" - "@abp/clipboard" "~9.2.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.1" - "@abp/popper.js" "~9.2.0-rc.1" - "@abp/prismjs" "~9.2.0-rc.1" + "@abp/anchor-js" "~9.2.0-rc.2" + "@abp/clipboard" "~9.2.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~9.2.0-rc.2" + "@abp/popper.js" "~9.2.0-rc.2" + "@abp/prismjs" "~9.2.0-rc.2" -"@abp/font-awesome@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.1.tgz#758b4028fa5f6d11bb675ff465fc222e3b656c01" - integrity sha512-H0fmIM/YAkT64LLMub0eDzpxvrNVjkFrRgX4YM10U/AQ0gILxjuEapRxv3+ueIJiy3DiBLkPWQ+SQN3Lwh4FOA== +"@abp/font-awesome@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-9.2.0-rc.2.tgz#51eb750f5697668db538ad68cc6b9279517da537" + integrity sha512-X9JfF4n4MDZLszwZHIHuxSdGGxImEzV91ROKqNeclErCx3bOXyq/l9C+haZl/3TLzTAOSDMLgHGrT3MUCVPF5w== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" "@fortawesome/fontawesome-free" "^6.6.0" -"@abp/jquery-form@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.1.tgz#558bcf9da8912e0014b407018d1f0fb7ab294bf0" - integrity sha512-MzhptVbyZ7WNYAw4KmWiI4WnR8H16jBshceO7DFtfyZDRUU0n4ZPTYs1rGlj4+5iv2B7r8dci0Nx94bkId7FwA== +"@abp/jquery-form@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-9.2.0-rc.2.tgz#58ce31a32bdfb355e5d4e3f97cb4761f594aa8e1" + integrity sha512-xN2xjK1RWKygwaqzTaWmpMlU0kGWGa2nKaudM6g9k/B6b1Pfdr8ykI4DaSuPb4BkRmurGkgy4r9o7IUoqv0T8Q== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.1.tgz#48b227ee95e0d7a12efbdfbdf1a28e3003dcdb8f" - integrity sha512-wTo5/oqU1TVOuuYfsu6XipryW2rrSx+bebP4fm/lQ1cZF+Ki1Rbvt5p+3fIGZfg8dJRMKXCtL3UYyadKTlqJ8A== +"@abp/jquery-validation-unobtrusive@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-9.2.0-rc.2.tgz#4e624e22cbf149d1c78da46aabaf6fc18d3b65ff" + integrity sha512-adKJxnWnhCrIYWoVdo41zgO5p4SjyypCxoHeQ7mkohry2WN6WuQG5nmHqhpdevw966DENvmVzFfz7vnO72vtrg== dependencies: - "@abp/jquery-validation" "~9.2.0-rc.1" + "@abp/jquery-validation" "~9.2.0-rc.2" jquery-validation-unobtrusive "^4.0.0" -"@abp/jquery-validation@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.1.tgz#fae0ce1e0db0af62f80836d3e982c9a79f7b1209" - integrity sha512-c2+BwErN2w6ikbOYuuSQHZeMdLaKR7l0CIvwtUnzwCHjdUGAbMX9w9lYwnO6R6DsNCV7Cb5+YrbjM7jGY7zMiQ== +"@abp/jquery-validation@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-9.2.0-rc.2.tgz#b6a8124d5056ddad515733bffc78703f6bd422be" + integrity sha512-4j1fg1qImif2vFZQFJ7z1olEUnjc3BByKS+7joNQ+96/NqOQdOQjRjB2n490od7ExCinKnvYx3JFttpYjHU3Xw== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" jquery-validation "^1.21.0" -"@abp/jquery@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.1.tgz#a930c1ef6a17a831cd7d064b7cbb20d604fbc4bb" - integrity sha512-qc461cJOQvEX95JbIFtDLj5dxUUDyP7PUXP8SjCvxP4GURoKhjxx0j0U0mBkMDJMrSrvALFKbF5S6OlgdgaPGQ== +"@abp/jquery@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-9.2.0-rc.2.tgz#335643787ab282d5d2fee4f360c2b62cce3db962" + integrity sha512-baKNDuiQMzkV0LFzBwEqS0JYtXIUe5KH+MVizGR6Zv10B8l/gIrUzWI/nnqDtbts6gmY9OBDXkCTcgMQBwKqjw== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" jquery "~3.7.1" -"@abp/lodash@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.1.tgz#0e0b455c84c6b6c52a3aaf1ccc4c704f49503ac8" - integrity sha512-Bg2Bz7G04jvz+QRXLlK3A2eUBR3Ef1rq622jWsaKo4fW4rCdHkZBbjeqYDLYc1PqDIJawhEdIByh8VzMgRd6tA== +"@abp/lodash@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-9.2.0-rc.2.tgz#521bccafcc09780c751932688b6ec45c368c2854" + integrity sha512-T6eYsDovUl4AYD9n2N4WZq9MeC4/ryke5ctvdhzuArqM7WpPvohq3VKGugrP/MLo9oD3MZ5DVQvMJ0AVg+IXNQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" lodash "^4.17.21" -"@abp/luxon@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.1.tgz#275726bf1f9ff14cdf902a7ea64213a3e7434927" - integrity sha512-vga0taYVDPGwcAQqFe6pAEAUu3vRH7MgxBQdMrEX80YhsSJevPHSl6jG3ey5IqWOy4dpMyiN4v7gWBHJ93mbFg== +"@abp/luxon@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-9.2.0-rc.2.tgz#da366d335f9575b104ea2206e076af35cbbfcfba" + integrity sha512-mr8ipYrJDDJPoImIwORK7Z6d1C07APl95L17ufRbig4sjdxjNEDR5uUXVviVafF1No2bVkYiS0xGKQmojA2twg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" luxon "^3.5.0" -"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.1.tgz#3d4c17a9d6ace815e4bc4dc825d0020474a794f7" - integrity sha512-Cqs6A88bWggdtDoiCREBTXknCI+c7vhmZ/SM84k4NfwzlPscZYMCbtJlrln4g3zmElJwwBPerl0Gs778kUOjog== +"@abp/malihu-custom-scrollbar-plugin@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-9.2.0-rc.2.tgz#cb79018adf08276041eb5c5dcf75130c8995686b" + integrity sha512-jdHXx7kPduaEfFXDvf5s+QVl10RqshNbnZkkqPx0mMkhz2H/qxwzF1e0mcLFL38nEgs+0gxIkcA8/MKq85tyqQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.1.tgz#1604d38429f1e0484223ea4a7a3a10f1785420f4" - integrity sha512-5VnPhCOnTug7tqlLsg46LY84LU5DrYNKxm5T3oz+OFq4I05Ut/LWGElRvOnEFxfFfkYuJvbxih3trAGuEJD6+A== +"@abp/moment@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-9.2.0-rc.2.tgz#f4339138668ca72be1d700624b91789344557bff" + integrity sha512-J4ZaCDEcXLGmJ+8zqgaMK9Lutnjga28LSbuiFaGLlZ1QgYZ5HDScE128o3vX9qr60tc6IIY0cDkHi4bBHo7ozw== dependencies: moment "^2.30.1" -"@abp/popper.js@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-9.2.0-rc.1.tgz#cf506a8a1987407ce3973d4523690ec023e1f9dd" - integrity sha512-d8EoIO9HrhhLHRXAAFt03BTjBSdoSwDVf9iOQJuA/a7Vz7EnkW7Fwge3T8pxL8VYZF0Hc3gdr991hkhZG8kufQ== +"@abp/popper.js@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-9.2.0-rc.2.tgz#b1c8edcbc2cbb7009848c147bc75a7f301fae067" + integrity sha512-RWodA4hYor/agFaiKVtnip/U0fI577fvJeZqXSWQzwVShiviTHZxtOmYqZBbbzNPoSlxcAYJRF7F0CvgrLxNDQ== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" "@popperjs/core" "^2.11.8" -"@abp/prismjs@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.1.tgz#623659c50c776bc8efcb7eacea70b2704ff87eec" - integrity sha512-QZ6NY4TXmWzrrZViN8v3CgH2l4fQUpEZLPsUaEmiRtq3+3meCaM3hxgNEOvcUg5IHZI7cPBRabQtVKoAPozcvQ== +"@abp/prismjs@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-9.2.0-rc.2.tgz#1ee12acdd9e1dcc9ae2ce4a9f21f159c3f9e3dec" + integrity sha512-GuKz6bujBlYHAgLhW1RT7aEOwKyZ+vnyMIhN0/fQ34+nbqg0PC4htwJcN6spgN8gZKD06lCqBH+GjLE2WtE/Rw== dependencies: - "@abp/clipboard" "~9.2.0-rc.1" - "@abp/core" "~9.2.0-rc.1" + "@abp/clipboard" "~9.2.0-rc.2" + "@abp/core" "~9.2.0-rc.2" prismjs "^1.29.0" -"@abp/select2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.1.tgz#6f378c9bd4a01dbe72bf41f175c964e36353ef4e" - integrity sha512-HlQtSmY3VRIbCbTJnWFmvPeUmHYX8cI5z0Dwa30/TNPWDQuws5Yx3F4B9crw6AC/EIzCobsAZ4QhsgQxsUHNvg== +"@abp/select2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-9.2.0-rc.2.tgz#ba6e839644b7ecdd198fe5286101302a3dc79ce3" + integrity sha512-AQMXb5ATgbN7grpKU8lB2xFFfirCe45lIvd9krW5SwUHCYZP7pRPbwQXAew+BqlIIYJJF2GA7/Nf//e/71bKtg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert2@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.1.tgz#b70784ff038ff4d6cdc07a7ef35edd7da5dfaa23" - integrity sha512-cJVdPB1hh7AtmfmcLLAFGxFDYc08sjtRS5kJ37ru9WFVOyzF1A99QgMOEBSB6BGKNbkCJwQbkwGCHjtQTHQ46w== +"@abp/sweetalert2@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-9.2.0-rc.2.tgz#075634dc3ec996607757694d636d276ba2350e06" + integrity sha512-ZgHgqM8Q+V9ECQyAyepM5KpshKpQP463xRHwgY45oR7/CfCcO/vS56YQgJNg2zE6+lRQZaRQ9OL7lph8975vVg== dependencies: - "@abp/core" "~9.2.0-rc.1" + "@abp/core" "~9.2.0-rc.2" sweetalert2 "^11.14.1" -"@abp/timeago@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.1.tgz#689fa9c9d4b0c0a239b37cd4d045dfb745f392df" - integrity sha512-mNmmRVzGryW45woLmDrxVnUCSi2+Xp2djHNKe7VF4D2Xywos9yxEImTX8B9lB0QMWl8BawsZCz/jsC3QURkXGw== +"@abp/timeago@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-9.2.0-rc.2.tgz#25324732966438bd6f505bdd932511ba2cc8c22b" + integrity sha512-WfWxxiycg77vVN2hPHqUOu552la+zxr0EZnHMqnEnnBe+gFYe9C0CpdYuyBq2eQXRXHoVzsB+4YRVNk5sbSGng== dependencies: - "@abp/jquery" "~9.2.0-rc.1" + "@abp/jquery" "~9.2.0-rc.2" timeago "^1.6.7" -"@abp/utils@~9.2.0-rc.1": - version "9.2.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.1.tgz#508d9922c842f2a76fc748574f0ae3a9954b6895" - integrity sha512-XFaBI4qxeXixAtapXRzETkS60+5XkZeEnW9O3wyHU6r4rEtIdOHo9w7t/vM5b5KAUlcEE02jS6pcqlJHd7miqw== +"@abp/utils@~9.2.0-rc.2": + version "9.2.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-9.2.0-rc.2.tgz#669885ad1e3ac7b8e182d7c392ea1b633df65aac" + integrity sha512-rfQxhJy04Qf50P3ciasKbDlJ+9JidD60xW77TjcoUJvljJE+A8iwTX8Wwqz7+YcC7rks2ILM4y3Ay7/47NOICQ== dependencies: just-compare "^2.3.0" diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/index.js b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/index.js index 6dd0e1bde2..91b3770c6f 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/index.js +++ b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/index.js @@ -2,7 +2,11 @@ $(function () { var l = abp.localization.getResource('Docs'); var service = window.volo.docs.admin.documentsAdmin; - moment.localeData().preparse = (s)=>s; + var getFormattedDate = function ($datePicker) { + return $datePicker.data('date'); + }; + + moment.localeData().preparse = (s)=>s; moment.localeData().postformat = (s)=>s; var singleDatePicker = $('#DocumentsContainer .singledatepicker'); @@ -26,7 +30,7 @@ $(function () { var comboboxItems = []; - + service.getFilterItems() .then(function (result) { comboboxItems = result; @@ -41,13 +45,13 @@ $(function () { $projectId.on('change', function () { fillOptions(); }); - + var comboboxs = { version: $('#Version'), languageCode: $('#LanguageCode'), format: $('#Format') }; - + for (var key in comboboxs) { comboboxs[key].on('change', function () { fillOptions(); @@ -62,7 +66,7 @@ $(function () { comboboxs[key].empty(); } } - + function getSelectedItem() { var item = {}; for (var key in comboboxs) { @@ -70,13 +74,13 @@ $(function () { } return item; } - + function SetComboboxsValues(item) { for (var key in comboboxs) { comboboxs[key].val(item[key]); } } - + function addComboboxsEmptyItem() { for (var key in comboboxs) { comboboxs[key].append($('