diff --git a/Directory.Packages.props b/Directory.Packages.props
index 2abd6aaf04..0a3051b2ee 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -19,10 +19,10 @@
-
-
-
-
+
+
+
+
@@ -151,7 +151,7 @@
-
+
diff --git a/docs/en/Community-Articles/2026-03-17-Shared-User-Accounts-in-ABP/POST.md b/docs/en/Community-Articles/2026-03-17-Shared-User-Accounts-in-ABP/POST.md
index dcb69c289d..4dc27218c0 100644
--- a/docs/en/Community-Articles/2026-03-17-Shared-User-Accounts-in-ABP/POST.md
+++ b/docs/en/Community-Articles/2026-03-17-Shared-User-Accounts-in-ABP/POST.md
@@ -50,6 +50,8 @@ After signing into a tenant, a tenant switcher appears in the user menu — clic
Users can also leave a tenant. Leaving doesn't delete the association record — it marks it as inactive. This preserves foreign key relationships with other entities. If the user is invited back later, the association is simply reactivated instead of recreated.
+The same soft removal is available to a tenant admin from the user list — a **Remove from tenant** action that takes a user off the tenant without touching the global account. Useful for the obvious case: an employee leaves the company, the admin removes them from the tenant, but their account (and any other tenant they belong to) stays intact.
+
Back to our earlier scenario: the financial consultant now has one account, one password. She picks which company to work in at login, switches between them during the day. The system knows it's the same person, and the audit log can trace her actions across every tenant.
## Invitations
diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json
index b1369b3236..fe78d199a0 100644
--- a/docs/en/docs-nav.json
+++ b/docs/en/docs-nav.json
@@ -586,6 +586,10 @@
}
]
},
+ {
+ "text": "Application URLs",
+ "path": "framework/infrastructure/app-urls.md"
+ },
{
"text": "Background Jobs",
"items": [
diff --git a/docs/en/framework/architecture/multi-tenancy/index.md b/docs/en/framework/architecture/multi-tenancy/index.md
index 11ac3f7af1..23c8316ee2 100644
--- a/docs/en/framework/architecture/multi-tenancy/index.md
+++ b/docs/en/framework/architecture/multi-tenancy/index.md
@@ -357,6 +357,8 @@ context.Services
```
+The configuration above resolves the current tenant from the incoming request (inbound). To make the **outbound** URLs your application generates — such as the password reset link inside an Account email — point to the tenant's subdomain as well, configure `AppUrlOptions`. See [Application URLs](../../infrastructure/app-urls.md#multi-tenant-aware-urls).
+
##### Custom Tenant Resolvers
You can add implement your custom tenant resolver and configure the `AbpTenantResolveOptions` in your module's `ConfigureServices` method as like below:
diff --git a/docs/en/framework/infrastructure/app-urls.md b/docs/en/framework/infrastructure/app-urls.md
new file mode 100644
index 0000000000..cc7d634800
--- /dev/null
+++ b/docs/en/framework/infrastructure/app-urls.md
@@ -0,0 +1,164 @@
+```json
+//[doc-seo]
+{
+ "Description": "Configure cross-application URLs in ABP with AppUrlOptions and IAppUrlProvider, including multi-tenant subdomain templates and redirect URL validation."
+}
+```
+
+# Application URLs
+
+ABP provides the `AppUrlOptions` options class and the `IAppUrlProvider` service to centrally configure and resolve URLs that point to **other applications** in your solution (for example, an MVC/Razor Pages UI, an Auth Server, an HTTP API host, etc.). They are typically used when code in one application needs to build a link that targets another — like the Account module putting a **password reset link** into an email.
+
+* Defines `AppUrlOptions` to register the **root URL** and named relative URLs of each application.
+* Provides `IAppUrlProvider` to **resolve** those URLs at runtime, with optional **tenant-aware** placeholder substitution.
+* Supports **subdomain-style templates** (e.g. `https://{0}.example.com`) that produce per-tenant URLs without extra code.
+* Maintains a `RedirectAllowedUrls` list used by `IAppUrlProvider.IsRedirectAllowedUrlAsync` to validate redirect targets.
+
+> `AppUrlOptions` is defined in the `Volo.Abp.UI.Navigation` package, which comes pre-installed with the [application startup template](../../solution-templates/layered-web-application).
+
+## Configuring Application URLs
+
+`AppUrlOptions` exposes a dictionary of **applications**, each with a `RootUrl` and a set of named `Urls`.
+
+**Example: Set the root URL and a named URL for the MVC application**
+
+```csharp
+Configure(options =>
+{
+ options.Applications["MVC"].RootUrl = "https://my-app.com";
+ options.Applications["MVC"].Urls["MyPage"] = "my-page";
+});
+```
+
+* `"MVC"` is the **application key**. Some modules (such as Account) register their URLs under a known key — `"MVC"` is the default for the **server-side UI**. You can use any key you want for your own applications.
+* `RootUrl` is the **base URL** of that application.
+* `Urls[urlName]` is a **relative path** appended to `RootUrl`. The final URL is built as `RootUrl.EnsureEndsWith('/') + Urls[urlName]`, so the relative path should **not** start with a `/`. When `RootUrl` is `null`, the value of `Urls[urlName]` is returned as-is.
+
+The Account module, for example, **pre-registers** its URLs in its application module:
+
+**Example: How the Account module registers the password reset URL**
+
+```csharp
+Configure(options =>
+{
+ options.Applications["MVC"].Urls[AccountUrlNames.PasswordReset] = "Account/ResetPassword";
+});
+```
+
+> So configuring `Applications["MVC"].RootUrl` in your own module is usually enough to make password reset and similar Account email links point to the right host.
+
+### Defaults in the application startup template
+
+The ABP **application startup template** wires `Applications["MVC"].RootUrl` to the `App:SelfUrl` setting and seeds `RedirectAllowedUrls` from `App:RedirectAllowedUrls`:
+
+```csharp
+Configure(options =>
+{
+ options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"];
+ options.RedirectAllowedUrls.AddRange(
+ configuration["App:RedirectAllowedUrls"]?.Split(',') ?? Array.Empty());
+});
+```
+
+> This is why Account email links point to your **host URL** out of the box: they reuse `App:SelfUrl`. If that default isn't what you want — for example, in a subdomain-based **multi-tenant** setup — override `Applications["MVC"].RootUrl` with the template you need (see [Multi-Tenant Aware URLs](#multi-tenant-aware-urls)).
+
+## Using `IAppUrlProvider`
+
+[Inject](../fundamentals/dependency-injection.md) the `IAppUrlProvider` service into any class that needs to build a cross-application URL.
+
+**Example: Resolve a root URL and a named URL of the MVC application**
+
+```csharp
+public class MyNotificationSender : ITransientDependency
+{
+ private readonly IAppUrlProvider _appUrlProvider;
+
+ public MyNotificationSender(IAppUrlProvider appUrlProvider)
+ {
+ _appUrlProvider = appUrlProvider;
+ }
+
+ public async Task SendAsync()
+ {
+ var rootUrl = await _appUrlProvider.GetUrlAsync("MVC");
+ var pageUrl = await _appUrlProvider.GetUrlAsync("MVC", "MyPage");
+ }
+}
+```
+
+* `GetUrlAsync(appName)` returns the configured `RootUrl` for the given application.
+* `GetUrlAsync(appName, urlName)` returns the **combined URL** described above.
+* `GetUrlAsync(...)` throws an `AbpException` when the resolved URL is `null` or empty (e.g. both `RootUrl` and `Urls[urlName]` are unset). Use `GetUrlOrNullAsync(...)` if you'd rather get `null` and decide what to do yourself.
+* `NormalizeUrlAsync(url)` applies tenant placeholder substitution to a URL string that you already have. Useful when the URL doesn't come from `AppUrlOptions`.
+
+## Multi-Tenant Aware URLs
+
+If your solution uses **subdomain-based** multi-tenancy (see the [Domain/Subdomain Tenant Resolver](../architecture/multi-tenancy/index.md#domainsubdomain-tenant-resolver)), you'll usually want the **outbound URLs** you generate (email links, redirects) to also be tenant-aware — otherwise the link in a password reset email won't point to the tenant's subdomain.
+
+`AppUrlOptions` supports the following **placeholders** in any URL value. They are substituted by `IAppUrlProvider` based on the **current tenant**:
+
+| Placeholder | Replaced with |
+| --- | --- |
+| `{0}` | Current tenant **name** |
+| `{%{{{ {{tenantName}} }}}%}` | Current tenant **name** |
+| `{%{{{ {{tenantId}} }}}%}` | Current tenant **id** |
+
+The `{0}` placeholder uses the **same convention** as `AddDomainTenantResolver("{0}.example.com")`, so a typical subdomain-tenant setup looks like this:
+
+**Example: Tenant-aware Account email links via a subdomain template**
+
+```csharp
+Configure(options =>
+{
+ options.AddDomainTenantResolver("{0}.example.com");
+});
+
+Configure(options =>
+{
+ options.Applications["MVC"].RootUrl = "https://{0}.example.com";
+});
+```
+
+With this configuration, password reset emails sent to a tenant whose name is `acme` will contain a link starting with `https://acme.example.com/`, matching the tenant's subdomain.
+
+### Host (no tenant) Fallback
+
+When there is **no current tenant** (host-side request), the placeholder **and the dot following it** are removed together:
+
+| Template | Tenant `acme` | Host (no tenant) |
+| --- | --- | --- |
+| `https://{0}.example.com` | `https://acme.example.com` | `https://example.com` |
+| `https://{%{{{ {{tenantId}} }}}%}.example.com` | `https://3a21....example.com` | `https://example.com` |
+
+A single subdomain-style template like the ones above therefore works for **both** tenant and host scenarios without extra configuration.
+
+> If your subdomain is based on the tenant **id** rather than the name, use `https://{%{{{ {{tenantId}} }}}%}.example.com`. The resolver's `{0}` placeholder accepts both name and id when finding a tenant, but `AppUrlOptions` substitutes `{0}` with the tenant **name**; if those two don't match, switch to the explicit `{%{{{ {{tenantId}} }}}%}` form on the `AppUrlOptions` side.
+
+## Redirect Allowed URLs
+
+`AppUrlOptions.RedirectAllowedUrls` is a list of URL entries used by `IAppUrlProvider.IsRedirectAllowedUrlAsync(url)` to decide whether a redirect target is allowed. A URL is allowed when it satisfies **either** of:
+
+* **Prefix match**: the URL string **starts with** a configured entry (case-insensitive).
+* **Subdomain match**: the URL and the entry have the **same scheme** and **port**, and the URL's host **ends with** `.{entry-host}`.
+
+**Example: Register allowed redirect URLs (including a wildcard)**
+
+```csharp
+Configure(options =>
+{
+ options.RedirectAllowedUrls.Add("https://my-app.com");
+ options.RedirectAllowedUrls.Add("https://admin.my-app.com");
+
+ options.RedirectAllowedUrls.Add("https://*.my-app.com");
+});
+```
+
+* A **plain entry** like `https://my-app.com` allows any URL that starts with that prefix, plus any subdomain of `my-app.com`.
+* A **wildcard entry** like `https://*.my-app.com` allows any subdomain of `my-app.com`; the `*.` is stripped before the subdomain check.
+* Entries also go through **tenant placeholder substitution**, so `https://{0}.my-app.com` is resolved to the current tenant's URL first (e.g. `https://acme.my-app.com`) and then compared. Use the wildcard form when you need to allow *any* tenant subdomain regardless of the current tenant.
+
+## See Also
+
+* [Multi-Tenancy](../architecture/multi-tenancy/index.md)
+* [Account Module](../../modules/account.md)
+* [Emailing](emailing.md)
diff --git a/docs/en/framework/infrastructure/blob-storing/aws.md b/docs/en/framework/infrastructure/blob-storing/aws.md
index 35293ec922..1ee55bbb74 100644
--- a/docs/en/framework/infrastructure/blob-storing/aws.md
+++ b/docs/en/framework/infrastructure/blob-storing/aws.md
@@ -7,7 +7,7 @@
# BLOB Storing Aws Provider
-BLOB Storing Aws Provider can store BLOBs in [Amazon Simple Storage Service](https://aws.amazon.com/s3/).
+BLOB Storing Aws Provider can store BLOBs in [Amazon Simple Storage Service](https://aws.amazon.com/s3/) and **S3-compatible storage services** like MinIO, DigitalOcean Spaces, Cloudflare R2, and others.
> Read the [BLOB Storing document](../blob-storing) to understand how to use the BLOB storing system. This document only covers how to configure containers to use a Aws BLOB as the storage provider.
@@ -41,7 +41,8 @@ Configure(options =>
Aws.UseTemporaryFederatedCredentials = "set true to use temporary federated credentials";
Aws.ProfileName = "the name of the profile to get credentials from";
Aws.ProfilesLocation = "the path to the aws credentials file to look at";
- Aws.Region = "the system name of the service";
+ Aws.Region = "the AWS region system name, e.g. us-east-1";
+ Aws.ServiceURL = "custom service URL for S3-compatible APIs (optional)";
Aws.Name = "the name of the federated user";
Aws.Policy = "policy";
Aws.DurationSeconds = "expiration date";
@@ -64,7 +65,9 @@ Configure(options =>
* **UseTemporaryFederatedCredentials** (bool): Use [federated user temporary credentials](https://docs.aws.amazon.com/AmazonS3/latest/dev/AuthUsingTempFederationToken.html) to access AWS services, default : `false`.
* **ProfileName** (string): The [name of the profile](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html) to get credentials from.
* **ProfilesLocation** (string): The path to the aws credentials file to look at.
-* **Region** (string): The system name of the service.
+* **Region** (string): The system name of the AWS region (e.g., `us-east-1`). **Required** for real AWS S3. Optional when `ServiceURL` is configured for an S3-compatible service; some services accept any value (or `auto` for Cloudflare R2).
+* **ServiceURL** (string): Custom service URL for S3-compatible APIs (e.g., MinIO, DigitalOcean Spaces, Cloudflare R2). If not specified, the default AWS S3 service URL will be used based on the region. When using S3-compatible services, this should point to your service endpoint (e.g., `https://minio.example.com:9000`). The AWS SDK automatically appends a trailing slash to the configured value.
+* **DisablePayloadSigning** (bool): Default `false`. When set to `true`, the provider sends `x-amz-content-sha256: UNSIGNED-PAYLOAD` on `PutObject` requests instead of the streaming chunked signature (`STREAMING-AWS4-HMAC-SHA256-PAYLOAD`) that the AWS SDK v4 uses by default. Required for Cloudflare R2 and other S3-compatible services that do not implement streaming signing. The endpoint must be HTTPS when this option is enabled. Leave as `false` for real AWS S3.
* **Policy** (string): An IAM policy in JSON format that you want to use as an inline session policy.
* **DurationSeconds** (int): Validity period(s) of a temporary access certificate,minimum is 900 and the maximum is 3600. **note**: Using sub-accounts operated OSS,if the value is 0.
* **ContainerName** (string): You can specify the container name in Aws. If this is not specified, it uses the name of the BLOB container defined with the `BlobContainerName` attribute (see the [BLOB storing document](../blob-storing)). Please note that Aws has some **rules for naming containers**. A container name must be a valid DNS name, conforming to the [following naming rules](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html):
@@ -77,6 +80,75 @@ Configure(options =>
* Buckets used with Amazon S3 Transfer Acceleration can't have dots (.) in their names. For more information about transfer acceleration, see Amazon S3 Transfer Acceleration.
* **CreateContainerIfNotExists** (bool): Default value is `false`, If a container does not exist in Aws, `AwsBlobProvider` will try to create it.
+## S3-Compatible Services
+
+The AWS provider supports S3-compatible storage services by configuring the `ServiceURL` property. Here are some examples:
+
+### MinIO Configuration
+
+````csharp
+Configure(options =>
+{
+ options.Containers.ConfigureDefault(container =>
+ {
+ container.UseAws(aws =>
+ {
+ aws.AccessKeyId = "your-minio-access-key";
+ aws.SecretAccessKey = "your-minio-secret-key";
+ aws.ServiceURL = "https://minio.example.com:9000";
+ aws.Region = "us-east-1"; // MinIO region (can be any valid region)
+ aws.ContainerName = "my-bucket";
+ aws.CreateContainerIfNotExists = true;
+ });
+ });
+});
+````
+
+### DigitalOcean Spaces Configuration
+
+````csharp
+Configure(options =>
+{
+ options.Containers.ConfigureDefault(container =>
+ {
+ container.UseAws(aws =>
+ {
+ aws.AccessKeyId = "your-spaces-access-key";
+ aws.SecretAccessKey = "your-spaces-secret-key";
+ aws.ServiceURL = "https://nyc3.digitaloceanspaces.com";
+ aws.Region = "us-east-1"; // DigitalOcean Spaces region
+ aws.ContainerName = "my-space";
+ aws.CreateContainerIfNotExists = true;
+ });
+ });
+});
+````
+
+### Cloudflare R2 Configuration
+
+````csharp
+Configure(options =>
+{
+ options.Containers.ConfigureDefault(container =>
+ {
+ container.UseAws(aws =>
+ {
+ aws.AccessKeyId = "your-r2-access-key";
+ aws.SecretAccessKey = "your-r2-secret-key";
+ aws.ServiceURL = "https://your-account-id.r2.cloudflarestorage.com";
+ aws.Region = "auto"; // Cloudflare R2 uses 'auto' as region
+ aws.DisablePayloadSigning = true; // R2 does not implement streaming chunked payload signing
+ aws.ContainerName = "my-bucket";
+ aws.CreateContainerIfNotExists = true;
+ });
+ });
+});
+````
+
+> **Note**: When using S3-compatible services, the provider automatically enables path-style requests which are required by most S3-compatible implementations.
+
+> **Note on `DisablePayloadSigning`**: AWS SDK v4 sends `PutObject` requests with `x-amz-content-sha256: STREAMING-AWS4-HMAC-SHA256-PAYLOAD`. Cloudflare R2 (and some other S3-compatible services) return `501 NotImplemented` for this signing mode. Setting `DisablePayloadSigning = true` switches to `UNSIGNED-PAYLOAD`, which these services accept. The endpoint must be HTTPS. Leave it `false` for real AWS S3.
+
## Aws Blob Name Calculator
Aws Blob Provider organizes BLOB name and implements some conventions. The full name of a BLOB is determined by the following rules by default:
diff --git a/docs/en/framework/infrastructure/blob-storing/index.md b/docs/en/framework/infrastructure/blob-storing/index.md
index 3672e43387..a00ad62ec8 100644
--- a/docs/en/framework/infrastructure/blob-storing/index.md
+++ b/docs/en/framework/infrastructure/blob-storing/index.md
@@ -36,6 +36,20 @@ More providers will be implemented by the time. You can [request](https://github
Multiple providers **can be used together** by the help of the **container system**, where each container can uses a different provider.
+### S3 Compatibility
+
+The [AWS provider](./aws.md) supports not only Amazon S3 but also **S3-compatible APIs** from various cloud providers and self-hosted solutions. This means you can use the same AWS provider to connect to:
+
+* **Amazon S3** - The original AWS S3 service
+* **MinIO** - Self-hosted S3-compatible object storage
+* **Cloudflare R2** - Cloudflare's S3-compatible object storage
+* **DigitalOcean Spaces** - DigitalOcean's S3-compatible object storage
+* **Wasabi** - S3-compatible cloud storage
+* **Backblaze B2** - S3-compatible cloud storage
+* **Any other S3-compatible storage** - Including private cloud solutions
+
+To use S3-compatible services, configure the `ServiceURL` property in the AWS provider configuration to point to your S3-compatible endpoint. Some services (e.g., Cloudflare R2) also require `DisablePayloadSigning = true` because they do not implement the streaming chunked payload signing that AWS SDK v4 uses by default. See the [AWS provider document](aws.md) for full configuration examples.
+
> BLOB storing system can not work unless you **configure a storage provider**. Refer to the linked documents for the storage provider configurations.
## Installation
diff --git a/docs/en/framework/infrastructure/emailing.md b/docs/en/framework/infrastructure/emailing.md
index a9304b2e57..ff7ab152df 100644
--- a/docs/en/framework/infrastructure/emailing.md
+++ b/docs/en/framework/infrastructure/emailing.md
@@ -265,3 +265,4 @@ So, don't confuse if you don't receive emails on DEBUG mode. Emails will be sent
## See Also
* [MailKit integration for sending emails](./mail-kit.md)
+* [Application URLs](./app-urls.md) — for building cross-application links inside email content (e.g. password reset links).
diff --git a/docs/en/framework/ui/angular/authorization.md b/docs/en/framework/ui/angular/authorization.md
index 365333224a..bec5478d3a 100644
--- a/docs/en/framework/ui/angular/authorization.md
+++ b/docs/en/framework/ui/angular/authorization.md
@@ -105,7 +105,7 @@ function configureAuthFilter() {
}
```
-- `AuthErrorFilter:` is a model for filter object and it have 3 properties
+- `AuthErrorFilter:` is a model for filter object and it has 3 properties
- `id:` a unique key in the list for the filter object
- `executable:` a status for the filter object. If it's false then it won't work, yet it'll stay in the list
- `execute:` a function that stores the skip logic
diff --git a/docs/en/framework/ui/angular/checkbox-component.md b/docs/en/framework/ui/angular/checkbox-component.md
index fa3824027d..c44952d545 100644
--- a/docs/en/framework/ui/angular/checkbox-component.md
+++ b/docs/en/framework/ui/angular/checkbox-component.md
@@ -14,7 +14,6 @@ The ABP Checkbox Component is a reusable form input component for the checkbox t
- `label`
- `labelClass (default form-check-label)`
- `checkboxId`
-- `checkboxReadonly`
- `checkboxReadonly (default form-check-input)`
- `checkboxStyle`
diff --git a/docs/en/framework/ui/angular/data-table-column-extensions.md b/docs/en/framework/ui/angular/data-table-column-extensions.md
index 81312cdd75..ed473b937f 100644
--- a/docs/en/framework/ui/angular/data-table-column-extensions.md
+++ b/docs/en/framework/ui/angular/data-table-column-extensions.md
@@ -15,6 +15,8 @@ Entity prop extension system allows you to add a new column to the data table fo
You will have access to the current entity in your code and display its value, make the column sortable, perform visibility checks, and more. You can also render custom HTML in table cells.
+> **Standalone-first:** Current ABP templates use standalone APIs. The `loadChildren` examples below lazy-load routes from `createRoutes({ ... })` — they do not require NgModules. Legacy NgModule projects can pass the same options to `IdentityModule.forLazy({ ... })` instead. See [ABP Now Supports Angular Standalone Applications](https://abp.io/community/articles/abp-now-supports-angular-standalone-applications-zzi2rr2z).
+
## How to Set Up
In this example, we will add a "Name" column and display the value of the `name` field in the user management page of the [Identity Module](../../../modules/identity.md).
@@ -64,7 +66,7 @@ Import `identityEntityPropContributors` in your routing configuration and pass i
```js
// src/app/app.routes.ts
-// other imports
+import { Routes } from '@angular/router';
import { identityEntityPropContributors } from './entity-prop-contributors';
export const APP_ROUTES: Routes = [
@@ -84,6 +86,20 @@ export const APP_ROUTES: Routes = [
];
```
+#### Legacy NgModule projects
+
+```js
+{
+ path: 'identity',
+ loadChildren: () =>
+ import('@abp/ng.identity').then(m =>
+ m.IdentityModule.forLazy({
+ entityPropContributors: identityEntityPropContributors,
+ }),
+ ),
+},
+```
+
That is it, `nameProp` entity prop will be added, and you will see the "Name" column next to the usernames on the grid in the users page (`UsersComponent`) of the `identity` package.
## How to Render Custom HTML in Cells
diff --git a/docs/en/framework/ui/angular/dynamic-form-extensions.md b/docs/en/framework/ui/angular/dynamic-form-extensions.md
index a92a06d609..5a9a157e10 100644
--- a/docs/en/framework/ui/angular/dynamic-form-extensions.md
+++ b/docs/en/framework/ui/angular/dynamic-form-extensions.md
@@ -16,6 +16,8 @@ Form prop extension system allows you to add a new field to the create and/or ed
You can validate the field, perform visibility checks, and do more. You will also have access to the current entity when creating a contributor for an edit form.
+> **Standalone-first:** Current ABP templates use standalone APIs. The `loadChildren` examples below lazy-load routes from `createRoutes({ ... })` — they do not require NgModules. Legacy NgModule projects can pass the same options to `IdentityModule.forLazy({ ... })` instead. See [ABP Now Supports Angular Standalone Applications](https://abp.io/community/articles/abp-now-supports-angular-standalone-applications-zzi2rr2z).
+
## How to Set Up
In this example, we will add a "Date of Birth" field in the user management page of the [Identity Module](../../../modules/identity.md) and validate it.
@@ -69,7 +71,7 @@ Import `identityCreateFormPropContributors` and `identityEditFormPropContributor
```js
// src/app/app.routes.ts
-// other imports
+import { Routes } from '@angular/router';
import {
identityCreateFormPropContributors,
identityEditFormPropContributors,
@@ -93,6 +95,21 @@ export const APP_ROUTES: Routes = [
];
```
+#### Legacy NgModule projects
+
+```js
+{
+ path: 'identity',
+ loadChildren: () =>
+ import('@abp/ng.identity').then(m =>
+ m.IdentityModule.forLazy({
+ createFormPropContributors: identityCreateFormPropContributors,
+ editFormPropContributors: identityEditFormPropContributors,
+ }),
+ ),
+},
+```
+
That is it, `birthdayProp` form prop will be added, and you will see the datepicker for the "Date of Birth" field right before the "Email address" in the forms of the users page in the `identity` package.
## Object Extensions
diff --git a/docs/en/framework/ui/angular/entity-action-extensions.md b/docs/en/framework/ui/angular/entity-action-extensions.md
index 5a8e74a2f9..5bdded94c0 100644
--- a/docs/en/framework/ui/angular/entity-action-extensions.md
+++ b/docs/en/framework/ui/angular/entity-action-extensions.md
@@ -15,6 +15,8 @@ Entity action extension system allows you to add a new action to the action menu
You can take any action (open a modal, make an HTTP API call, redirect to another page... etc) by writing your custom code. You can also access the current entity in your code.
+> **Standalone-first:** Current ABP templates use standalone APIs. The `loadChildren` examples below lazy-load routes from `createRoutes({ ... })` — they do not require NgModules. Legacy NgModule projects can pass the same options to `IdentityModule.forLazy({ ... })` instead. See [ABP Now Supports Angular Standalone Applications](https://abp.io/community/articles/abp-now-supports-angular-standalone-applications-zzi2rr2z).
+
## How to Set Up
In this example, we will add a "Click Me!" action and alert the current row's `userName` in the user management page of the [Identity Module](../../../modules/identity.md).
@@ -56,12 +58,12 @@ The list of actions, conveniently named as `actionList`, is a **doubly linked li
### Step 2. Import and Use Entity Action Contributors
-Import `identityEntityActionContributors` in your routing configuration and pass it to the static `configureRoutes` method for `identity` routes as seen below:
+Import `identityEntityActionContributors` in your routing configuration and pass it to the static `createRoutes` method for `identity` routes as seen below:
```js
// src/app/app.routes.ts
-// other imports
+import { Routes } from '@angular/router';
import { identityEntityActionContributors } from './entity-action-contributors';
export const APP_ROUTES: Routes = [
@@ -81,6 +83,20 @@ export const APP_ROUTES: Routes = [
];
```
+#### Legacy NgModule projects
+
+```js
+{
+ path: 'identity',
+ loadChildren: () =>
+ import('@abp/ng.identity').then(m =>
+ m.IdentityModule.forLazy({
+ entityActionContributors: identityEntityActionContributors,
+ }),
+ ),
+},
+```
+
That is it, `alertUserName` entity action will be added as the last action on the grid dropdown in the "Users" page (`UsersComponent`) of the `identity` package.
## How to Place a Custom Modal and Trigger It by Entity Actions
diff --git a/docs/en/framework/ui/angular/extensions-overall.md b/docs/en/framework/ui/angular/extensions-overall.md
index 03971a46c4..73eae88816 100644
--- a/docs/en/framework/ui/angular/extensions-overall.md
+++ b/docs/en/framework/ui/angular/extensions-overall.md
@@ -16,6 +16,8 @@ See the documents below for the details:
* [Page Toolbar Extension](page-toolbar-extensions.md)
* [Dynamic Form (or Form Prop) Extensions](dynamic-form-extensions.md)
+> **Standalone-first:** Current ABP templates use standalone APIs (`app.config.ts`, `app.routes.ts`, and `createRoutes()`). Extension examples register contributors through route-level lazy loading — `loadChildren` returns routes from `createRoutes({ ... })`, not NgModules. Legacy NgModule projects can pass the same contributor options to `SomeModule.forLazy({ ... })` instead. See [ABP Now Supports Angular Standalone Applications](https://abp.io/community/articles/abp-now-supports-angular-standalone-applications-zzi2rr2z) for the `forLazy()` → `createRoutes()` migration.
+
## Extensible Table Component
Using [ngx-datatable](https://github.com/swimlane/ngx-datatable) in extensible table.
diff --git a/docs/en/framework/ui/angular/feature-libraries.md b/docs/en/framework/ui/angular/feature-libraries.md
index 48ef6de504..b4c9325505 100644
--- a/docs/en/framework/ui/angular/feature-libraries.md
+++ b/docs/en/framework/ui/angular/feature-libraries.md
@@ -9,6 +9,8 @@
ABP has an ever-growing number of feature modules and [introducing a new one](../../architecture/modularity/basics.md) is always possible. When the UI is Angular, these features have modular Angular libraries accompanying them.
+> **Standalone-first:** Current templates use standalone APIs. Configuration providers such as `provideIdentityConfig()` belong in `app.config.ts`, and features are lazy-loaded via `createRoutes()` in `app.routes.ts`. The `loadChildren` pattern below loads **route definitions**, not NgModules. In legacy NgModule projects, replace `createRoutes()` with `IdentityModule.forLazy()` (or the equivalent `forLazy()` method on the feature module). See [ABP Now Supports Angular Standalone Applications](https://abp.io/community/articles/abp-now-supports-angular-standalone-applications-zzi2rr2z).
+
## Feature Library Content
Each library has at least two key elements:
@@ -85,6 +87,20 @@ When you load the identity feature like this, the "Users" page, for example, wil
Depending on the library, the `.createRoutes` static method may also receive some options that configure how the feature works.
+#### Legacy NgModule projects
+
+If your application still uses NgModules, lazy-load the feature with `forLazy()` instead:
+
+```js
+{
+ path: "identity",
+ loadChildren: () =>
+ import("@abp/ng.identity").then((m) => m.IdentityModule.forLazy()),
+},
+```
+
+Pass the same options object to `forLazy({ ... })` that you would pass to `createRoutes({ ... })` when configuring extensions or other feature options.
+
---
1 _Libraries expect to work at a predefined path. Please check [how to patch a navigation element](./modifying-the-menu.md#how-to-patch-or-remove-a-navigation-element), if you want to use a different path from the default one (e.g. '/identity')._ [↩](#a-modify-route)
diff --git a/docs/en/framework/ui/angular/features.md b/docs/en/framework/ui/angular/features.md
index eece10bfb2..e190519f98 100644
--- a/docs/en/framework/ui/angular/features.md
+++ b/docs/en/framework/ui/angular/features.md
@@ -7,7 +7,7 @@
# Features
-You can get the value of a feature on the client-side using the [config state service](./config-state.md) if it is allowed by the feature definition on the server-side.
+You can get the value of a feature on the client-side using the [config state service](./config-state-service.md) if it is allowed by the feature definition on the server-side.
> This document explains how to get feature values in an Angular application. See the [Features document](../../infrastructure/features.md) to learn the feature system.
diff --git a/docs/en/framework/ui/angular/how-replaceable-components-work-with-extensions.md b/docs/en/framework/ui/angular/how-replaceable-components-work-with-extensions.md
index 6db3c95fda..b9f8fa14f5 100644
--- a/docs/en/framework/ui/angular/how-replaceable-components-work-with-extensions.md
+++ b/docs/en/framework/ui/angular/how-replaceable-components-work-with-extensions.md
@@ -9,6 +9,8 @@
Additional UI extensibility points ([Entity action extensions](../angular/entity-action-extensions.md), [data table column extensions](../angular/data-table-column-extensions.md), [page toolbar extensions](../angular/page-toolbar-extensions.md) and others) are used in ABP pages to allow to control entity actions, table columns and page toolbar of a page. If you replace a page, you need to apply some configurations to be able to work extension components in your component. Let's see how to do this by replacing the roles page.
+> **Standalone-first:** The example below uses standalone components with an `imports` array and `inject()`. Current ABP templates follow this pattern. Module-based examples in older docs remain valid for legacy projects — see [ABP Now Supports Angular Standalone Applications](https://abp.io/community/articles/abp-now-supports-angular-standalone-applications-zzi2rr2z).
+
Create a new component called `MyRolesComponent`:
```bash
diff --git a/docs/en/framework/ui/angular/internet-connection-service.md b/docs/en/framework/ui/angular/internet-connection-service.md
index 945234f8bd..c2d067f4be 100644
--- a/docs/en/framework/ui/angular/internet-connection-service.md
+++ b/docs/en/framework/ui/angular/internet-connection-service.md
@@ -17,7 +17,7 @@ When you inject the InternetConnectionService you can get the current internet s
# How To Use
-İt's easy, just inject the service and get the network status.
+It's easy, just inject the service and get the network status.
**You can get via signal**
```ts
diff --git a/docs/en/framework/ui/angular/oauth-module.md b/docs/en/framework/ui/angular/oauth-module.md
index d8ecab52fc..9e6d4a8e1e 100644
--- a/docs/en/framework/ui/angular/oauth-module.md
+++ b/docs/en/framework/ui/angular/oauth-module.md
@@ -7,7 +7,7 @@
# ABP OAuth Package
-The authentication functionality has been moved from @abp/ng.core to @abp/ng.ouath since v7.0.
+The authentication functionality has been moved from @abp/ng.core to @abp/ng.oauth since v7.0.
If your app is version 8.3 or higher, you should include "provideAbpOAuth()" after "provideAbpCore()" in the `appConfig` array of your `app.config.ts`.
diff --git a/docs/en/framework/ui/angular/page-toolbar-extensions.md b/docs/en/framework/ui/angular/page-toolbar-extensions.md
index 30c5c9813d..1348bdc265 100644
--- a/docs/en/framework/ui/angular/page-toolbar-extensions.md
+++ b/docs/en/framework/ui/angular/page-toolbar-extensions.md
@@ -15,6 +15,8 @@ Page toolbar extension system allows you to add a new action to the toolbar of a
You can take any action (open a modal, make an HTTP API call, redirect to another page... etc) by writing your custom code. You can also access to page data (the main record, usually an entity list) in your code. Additionally, you can pass in custom components instead of using the default button.
+> **Standalone-first:** Current ABP templates use standalone APIs. The `loadChildren` examples below lazy-load routes from `createRoutes({ ... })` — they do not require NgModules. Legacy NgModule projects can pass the same options to `IdentityModule.forLazy({ ... })` instead. See [ABP Now Supports Angular Standalone Applications](https://abp.io/community/articles/abp-now-supports-angular-standalone-applications-zzi2rr2z).
+
## How to Add an Action to Page Toolbar
In this example, we will add a "Click Me!" action and log `userName` of all users in the user management page of the [Identity Module](../../../modules/identity.md) to the console.
@@ -65,7 +67,7 @@ Import `identityToolbarActionContributors` in your routing configuration and pas
```js
// src/app/app.routes.ts
-// other imports
+import { Routes } from '@angular/router';
import { identityToolbarActionContributors } from './toolbar-action-contributors';
export const APP_ROUTES: Routes = [
@@ -85,6 +87,20 @@ export const APP_ROUTES: Routes = [
];
```
+#### Legacy NgModule projects
+
+```js
+{
+ path: 'identity',
+ loadChildren: () =>
+ import('@abp/ng.identity').then(m =>
+ m.IdentityModule.forLazy({
+ toolbarActionContributors: identityToolbarActionContributors,
+ }),
+ ),
+},
+```
+
That is it, `logUserNames` toolbar action will be added as the first action on the page toolbar in the users page (`UsersComponent`) of the `identity` package.
## How to Add a Custom Component to Page Toolbar
@@ -100,7 +116,7 @@ We need to have a component before we can pass it to the toolbar action contribu
```js
// src/app/click-me-button.component.ts
-import { Component, Inject } from '@angular/core';
+import { Component, inject } from '@angular/core';
import { IdentityUserDto } from '@abp/ng.identity/proxy';
import { ActionData, EXTENSIONS_ACTION_DATA } from '@abp/ng.components/extensible';
@@ -109,10 +125,7 @@ import { ActionData, EXTENSIONS_ACTION_DATA } from '@abp/ng.components/extensibl
template: ``,
})
export class ClickMeButtonComponent {
- constructor(
- @Inject(EXTENSIONS_ACTION_DATA)
- private data: ActionData
- ) {}
+ private data = inject>(EXTENSIONS_ACTION_DATA);
handleClick() {
this.data.record.forEach(user => console.log(user.userName));
@@ -168,7 +181,7 @@ Import `identityToolbarActionContributors` in your routing configuration and pas
```js
// src/app/app.routes.ts
-// other imports
+import { Routes } from '@angular/router';
import { identityToolbarActionContributors } from './toolbar-action-contributors';
export const APP_ROUTES: Routes = [
@@ -188,6 +201,20 @@ export const APP_ROUTES: Routes = [
];
```
+#### Legacy NgModule projects
+
+```js
+{
+ path: 'identity',
+ loadChildren: () =>
+ import('@abp/ng.identity').then(m =>
+ m.IdentityModule.forLazy({
+ toolbarActionContributors: identityToolbarActionContributors,
+ }),
+ ),
+},
+```
+
That is it, `logUserNames` toolbar action will be added as the first action on the page toolbar in the users page (`UsersComponent`) of the `identity` package and it will be triggered by a custom button, i.e. `ClickMeButtonComponent`. Please note that **component projection is not limited to buttons** and you may use other UI components.
## How to Place a Custom Modal and Trigger It by Toolbar Actions
diff --git a/docs/en/framework/ui/angular/quick-start.md b/docs/en/framework/ui/angular/quick-start.md
index 2417b187b1..8a9f6cb7b4 100644
--- a/docs/en/framework/ui/angular/quick-start.md
+++ b/docs/en/framework/ui/angular/quick-start.md
@@ -7,7 +7,7 @@
# ABP Angular Quick Start
-**In this version ABP uses Angular [21.0.x](https://github.com/angular/angular/tree/21.0.x) version. You don't have to install Angular CLI globally**
+**In this version ABP uses Angular [21.2.x](https://github.com/angular/angular/tree/21.2.x) version. You don't have to install Angular CLI globally**
## How to Prepare Development Environment
@@ -22,7 +22,6 @@ Please follow the steps below to prepare your development environment for Angula
- [Visual Studio IntelliCode](https://marketplace.visualstudio.com/items?itemName=visualstudioexptteam.vscodeintellicode)
- [Path Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense)
- [npm Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense)
- - [Angular 10 Snippets - TypeScript, Html, Angular Material, ngRx, RxJS & Flex Layout](https://marketplace.visualstudio.com/items?itemName=Mikael.Angular-BeastCode)
- [JavaScript (ES6) code snippets](https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets)
- [JavaScript Debugger](https://marketplace.visualstudio.com/items?itemName=ms-vscode.js-debug) (built-in, usually pre-installed)
- [Git History](https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory)
@@ -167,7 +166,7 @@ When you run the development server, variables defined in _environment.ts_ take
2. Run `yarn` or `npm install` if you have not installed dependencies already.
3. Run `yarn build:prod` or `npm run build:prod`.
-
+
Depending on project size, the compilation may take a few minutes. When it is finished, the compiled output will be placed inside the _/dist_ folder. Voila! You have deployment-ready build artifacts.
diff --git a/docs/en/framework/ui/angular/settings.md b/docs/en/framework/ui/angular/settings.md
index dc352e96a1..28689ce5f4 100644
--- a/docs/en/framework/ui/angular/settings.md
+++ b/docs/en/framework/ui/angular/settings.md
@@ -7,7 +7,7 @@
# Settings
-You can get settings on the client-side using the [config state service](./config-state.md) if they are allowed by their setting definition on the server-side.
+You can get settings on the client-side using the [config state service](./config-state-service.md) if they are allowed by their setting definition on the server-side.
> This document only explains how settings work in the Angular UI projects. See the [settings document](../../infrastructure/settings.md) to understand the ABP setting system.
diff --git a/docs/en/framework/ui/angular/testing.md b/docs/en/framework/ui/angular/testing.md
index ab215f7eba..4ec5577f73 100644
--- a/docs/en/framework/ui/angular/testing.md
+++ b/docs/en/framework/ui/angular/testing.md
@@ -1,7 +1,7 @@
```json
//[doc-seo]
{
- "Description": "Learn how to unit test your ABP Angular UI applications with preconfigured Karma and Jasmine, plus ABP-specific testing topics."
+ "Description": "Learn how to unit test your ABP Angular UI applications with preconfigured Vitest and TestBed, plus ABP-specific testing topics."
}
```
@@ -9,89 +9,105 @@
ABP Angular UI is tested like any other Angular application. So, [the guide here](https://angular.dev/guide/testing) applies to ABP too. That said, we would like to point out some **unit testing topics specific to ABP Angular applications**.
-## Setup
+## Test Stack
-In Angular, unit tests use [Karma](https://karma-runner.github.io/) and [Jasmine](https://jasmine.github.io) by default. Although we like Jest more, we chose not to deviate from these defaults, so **the application template you download will have Karma and Jasmine preconfigured**. You can find the Karma configuration inside the _karma.conf.js_ file in the root folder. You don't have to do anything. Adding a spec file and running `npm test` will work.
+The application template you download is preconfigured for unit testing. You can add a `*.spec.ts` file and run `yarn test` without adding extra test infrastructure.
-## Basics
+| Package / API | Purpose |
+| --- | --- |
+| [Vitest](https://vitest.dev/) | Test runner and assertion library. |
+| [jsdom](https://github.com/jsdom/jsdom) | Browser-like DOM environment for component tests. |
+| `@angular/core/testing` (`TestBed`) | The standard testing utilities of Angular for components, services, and pipes. |
+| `@abp/ng.core/testing` | ABP testing module and helpers that replace real ABP services with mocks. |
+| `@abp/ng.theme.shared/testing` | Testing module for shared theme features such as validation. |
-An over-simplified spec file looks like this:
+ABP Angular packages in the [framework repository](https://github.com/abpframework/abp/tree/dev/npm/ng-packs) use the same Vitest setup. Library tests there also use [`@ngneat/spectator/vitest`](https://github.com/ngneat/spectator) for HTTP and component tests, but the application template uses `TestBed` directly.
-```js
-import { CoreTestingModule } from "@abp/ng.core/testing";
-import { ThemeBasicTestingModule } from "@abp/ng.theme.basic/testing";
-import { ThemeSharedTestingModule } from "@abp/ng.theme.shared/testing";
-import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
-import { NgxValidateCoreModule } from "@ngx-validate/core";
-import { MyComponent } from "./my.component";
+## Configuration
-describe("MyComponent", () => {
- let fixture: ComponentFixture;
+The test target in _angular.json_ uses Angular's built-in Vitest builder:
- beforeEach(
- waitForAsync(() => {
- TestBed.configureTestingModule({
- declarations: [MyComponent],
- imports: [
- CoreTestingModule.withConfig(),
- ThemeSharedTestingModule.withConfig(),
- ThemeBasicTestingModule.withConfig(),
- NgxValidateCoreModule,
- ],
- providers: [
- /* mock providers here */
- ],
- }).compileComponents();
- })
- );
+```json
+// angular.json
- beforeEach(() => {
- fixture = TestBed.createComponent(MyComponent);
- fixture.detectChanges();
- });
+"test": {
+ "builder": "@angular/build:unit-test"
+}
+```
- it("should be initiated", () => {
- expect(fixture.componentInstance).toBeTruthy();
- });
-});
+Spec files are compiled with _tsconfig.spec.json_, which enables Vitest globals:
+
+```json
+// tsconfig.spec.json
+
+{
+ "compilerOptions": {
+ "types": ["vitest/globals"]
+ },
+ "include": ["src/**/*.spec.ts"]
+}
```
-If you take a look at the imports, you will notice that we have prepared some testing modules to replace built-in ABP modules. This is necessary for providing mocks for some features which otherwise would break your tests. Please remember to **use testing modules** and **call their `withConfig` static method**.
+You do not need a _karma.conf.js_ file. Angular CLI wires Vitest and jsdom for you.
-## Tips
+## Running Tests
-### Angular Testing Library
+Run tests in watch mode:
+
+```bash
+yarn test
+```
-Although you can test your code with Angular TestBed, you may find [Angular Testing Library](https://testing-library.com/docs/angular-testing-library/intro) a good alternative.
+Run tests once, which is useful for CI:
-The simple example above can be written with Angular Testing Library as follows:
+```bash
+ng test --watch=false
+```
+
+Vitest exits with a non-zero status code when a test fails, so the command above works in pipelines.
+
+## Basics
-```js
+An over-simplified spec file looks like this:
+
+```ts
import { CoreTestingModule } from "@abp/ng.core/testing";
-import { ThemeBasicTestingModule } from "@abp/ng.theme.basic/testing";
import { ThemeSharedTestingModule } from "@abp/ng.theme.shared/testing";
-import { ComponentFixture } from "@angular/core/testing";
+import { ComponentFixture, TestBed } from "@angular/core/testing";
import { NgxValidateCoreModule } from "@ngx-validate/core";
-import { render } from "@testing-library/angular";
+import { AuthService } from "@abp/ng.core";
+import { vi } from "vitest";
import { MyComponent } from "./my.component";
describe("MyComponent", () => {
let fixture: ComponentFixture;
+ let mockAuthService: { isAuthenticated: boolean; navigateToLogin: ReturnType };
beforeEach(async () => {
- const result = await render(MyComponent, {
+ mockAuthService = {
+ isAuthenticated: false,
+ navigateToLogin: vi.fn(),
+ };
+
+ await TestBed.configureTestingModule({
imports: [
CoreTestingModule.withConfig(),
ThemeSharedTestingModule.withConfig(),
- ThemeBasicTestingModule.withConfig(),
NgxValidateCoreModule,
+ MyComponent,
],
providers: [
- /* mock providers here */
+ {
+ provide: AuthService,
+ useValue: mockAuthService,
+ },
],
- });
+ }).compileComponents();
+ });
- fixture = result.fixture;
+ beforeEach(() => {
+ fixture = TestBed.createComponent(MyComponent);
+ fixture.detectChanges();
});
it("should be initiated", () => {
@@ -100,45 +116,36 @@ describe("MyComponent", () => {
});
```
-Very similar, as you can see. The real difference kicks in when we use queries and fire events.
+If you take a look at the imports, you will notice that we have prepared some testing modules to replace built-in ABP modules. This is necessary for providing mocks for some features which otherwise would break your tests. Please remember to **use testing modules** and **call their `withConfig` static method**.
-```js
-// other imports
-import { getByLabelText, screen } from "@testing-library/angular";
-import userEvent from "@testing-library/user-event";
+Current templates use standalone components, so put the component under test in the `imports` array instead of `declarations`.
-describe("MyComponent", () => {
- beforeEach(/* removed for sake of brevity */);
+If your application uses `@abp/ng.theme.basic`, also import `ThemeBasicTestingModule.withConfig()` from `@abp/ng.theme.basic/testing`.
- it("should display advanced filters", () => {
- const filters = screen.getByTestId("author-filters");
- const nameInput = getByLabelText(filters, /name/i) as HTMLInputElement;
- expect(nameInput.offsetWidth).toBe(0);
+### Mocking Dependencies
- const advancedFiltersBtn = screen.getByRole("link", { name: /advanced/i });
- userEvent.click(advancedFiltersBtn);
+Use Vitest mocks instead of Jasmine spies:
- expect(nameInput.offsetWidth).toBeGreaterThan(0);
+```ts
+import { vi } from "vitest";
- userEvent.type(nameInput, "fooo{backspace}");
- expect(nameInput.value).toBe("foo");
- });
-});
+const deleteSpy = vi.fn().mockReturnValue(of(null));
+fixture.componentInstance.service.delete = deleteSpy;
+
+expect(deleteSpy).toHaveBeenCalledWith("some-id");
```
-The **queries in Angular Testing Library follow practices for maintainable tests**, the user event package provides a **human-like interaction** with the DOM, and the library in general has **a clear API** that simplifies component testing. Please find some useful links below:
+The template's `home.component.spec.ts` is a good reference for mocking ABP services and asserting DOM behavior with `TestBed`.
-- [Queries](https://testing-library.com/docs/dom-testing-library/api-queries)
-- [User Event](https://testing-library.com/docs/ecosystem-user-event)
-- [Examples](https://github.com/testing-library/angular-testing-library/tree/main/apps/example-app/src/app/examples)
+## Tips
### Clearing DOM After Each Spec
-One thing to remember is that Karma runs tests in real browser instances. That means, you will be able to see the result of your test code, but also have problems with components attached to the document body which may not get cleared after each test, even when you configure Karma to do so.
+Tests run in jsdom, not a real browser. Components attached to `document.body` — such as modals, confirmation dialogs, and toasts — may not be removed automatically between specs.
-We have prepared a simple function with which you can clear any leftover DOM elements after each test.
+We have prepared a simple function with which you can clear leftover DOM elements after each test:
-```js
+```ts
// other imports
import { clearPage } from "@abp/ng.core/testing";
@@ -147,239 +154,189 @@ describe("MyComponent", () => {
afterEach(() => clearPage(fixture));
- beforeEach(async () => {
- const result = await render(MyComponent, {
- /* removed for sake of brevity */
- });
- fixture = result.fixture;
- });
-
// specs here
});
```
-Please make sure you use it because Karma will fail to remove dialogs otherwise and you will have multiple copies of modals, confirmation boxes, and alike.
+Please use it when you test features that render into the document body. Otherwise you may end up with multiple copies of modals, confirmation boxes, and similar elements.
### Waiting
-Some components, modals, in particular, work off-detection-cycle. In other words, you cannot reach DOM elements inserted by these components immediately after opening them. Similarly, inserted elements are not immediately destroyed upon closing them.
+Some components, modals in particular, work off the change-detection cycle. In other words, you cannot reach DOM elements inserted by these components immediately after opening them. Similarly, inserted elements are not immediately destroyed upon closing them.
-For this purpose, we have prepared a `wait` function.
+For this purpose, we have prepared a `wait` function:
-```js
+```ts
// other imports
import { wait } from "@abp/ng.core/testing";
describe("MyComponent", () => {
- beforeEach(/* removed for sake of brevity */);
+ let fixture: ComponentFixture;
it("should open a modal", async () => {
- const openModalBtn = screen.getByRole("button", { name: "Open Modal" });
- userEvent.click(openModalBtn);
+ const openModalBtn = fixture.nativeElement.querySelector('[role="button"]');
+ openModalBtn.click();
await wait(fixture);
- const modal = screen.getByRole("dialog");
-
+ const modal = fixture.nativeElement.ownerDocument.querySelector('[role="dialog"]');
expect(modal).toBeTruthy();
-
- /* wait again after closing the modal */
});
});
```
The `wait` function takes a second parameter, i.e. timeout (default: `0`). Try not to use it though. Using a timeout bigger than `0` is usually a signal that something is not quite right.
-## Testing Example
+### Angular Testing Library
+
+Although you can test your code with Angular TestBed, you may find [Angular Testing Library](https://testing-library.com/docs/angular-testing-library/intro) a good alternative. It is not included in the application template by default, but you can add `@testing-library/angular` and `@testing-library/user-event` if you prefer that style.
-Here is an example test suite. It doesn't cover all, but gives quite a good idea about what the testing experience will be like.
+The ABP testing modules work the same way with Testing Library:
-```js
-import { clearPage, CoreTestingModule, wait } from "@abp/ng.core/testing";
-import { ThemeBasicTestingModule } from "@abp/ng.theme.basic/testing";
+```ts
+import { CoreTestingModule } from "@abp/ng.core/testing";
import { ThemeSharedTestingModule } from "@abp/ng.theme.shared/testing";
import { ComponentFixture } from "@angular/core/testing";
-import {
- NgbCollapseModule,
- NgbDatepickerModule,
- NgbDropdownModule,
-} from "@ng-bootstrap/ng-bootstrap";
import { NgxValidateCoreModule } from "@ngx-validate/core";
-import { CountryService } from "@proxy/countries";
-import {
- findByText,
- getByLabelText,
- getByRole,
- getByText,
- queryByRole,
- render,
- screen,
-} from "@testing-library/angular";
-import userEvent from "@testing-library/user-event";
-import { BehaviorSubject, of } from "rxjs";
-import { CountryComponent } from "./country.component";
-
-const list$ = new BehaviorSubject({
- items: [{ id: "ID_US", name: "United States of America" }],
- totalCount: 1,
-});
-
-describe("Country", () => {
- let fixture: ComponentFixture;
+import { render, screen } from "@testing-library/angular";
+import { MyComponent } from "./my.component";
- afterEach(() => clearPage(fixture));
+describe("MyComponent", () => {
+ let fixture: ComponentFixture;
beforeEach(async () => {
- const result = await render(CountryComponent, {
+ const result = await render(MyComponent, {
imports: [
CoreTestingModule.withConfig(),
ThemeSharedTestingModule.withConfig(),
- ThemeBasicTestingModule.withConfig(),
NgxValidateCoreModule,
- NgbCollapseModule,
- NgbDatepickerModule,
- NgbDropdownModule,
],
providers: [
- {
- provide: CountryService,
- useValue: {
- getList: () => list$,
- },
- },
+ /* mock providers here */
],
});
fixture = result.fixture;
});
- it("should display advanced filters", () => {
- const filters = screen.getByTestId("country-filters");
- const nameInput = getByLabelText(filters, /name/i) as HTMLInputElement;
- expect(nameInput.offsetWidth).toBe(0);
-
- const advancedFiltersBtn = screen.getByRole("link", { name: /advanced/i });
- userEvent.click(advancedFiltersBtn);
-
- expect(nameInput.offsetWidth).toBeGreaterThan(0);
-
- userEvent.type(nameInput, "fooo{backspace}");
- expect(nameInput.value).toBe("foo");
-
- userEvent.click(advancedFiltersBtn);
- expect(nameInput.offsetWidth).toBe(0);
- });
-
- it("should have a heading", () => {
- const heading = screen.getByRole("heading", { name: "Countries" });
- expect(heading).toBeTruthy();
+ it("should be initiated", () => {
+ expect(fixture.componentInstance).toBeTruthy();
});
+});
+```
- it("should render list in table", async () => {
- const table = await screen.findByTestId("country-table");
+The **queries in Angular Testing Library follow practices for maintainable tests**, the user event package provides a **human-like interaction** with the DOM, and the library in general has **a clear API** that simplifies component testing. Please find some useful links below:
- const name = getByText(table, "United States of America");
- expect(name).toBeTruthy();
- });
+- [Queries](https://testing-library.com/docs/dom-testing-library/api-queries)
+- [User Event](https://testing-library.com/docs/ecosystem-user-event)
+- [Examples](https://github.com/testing-library/angular-testing-library/tree/main/apps/example-app/src/app/examples)
- it("should display edit modal", async () => {
- const actionsBtn = screen.queryByRole("button", { name: /actions/i });
- userEvent.click(actionsBtn);
+When you use Testing Library with modals or confirmation dialogs, combine it with `clearPage` and `wait` from `@abp/ng.core/testing` as shown above.
- const editBtn = screen.getByRole("button", { name: /edit/i });
- userEvent.click(editBtn);
+## Testing Example
- await wait(fixture);
+Here is an example based on the application template's `home.component.spec.ts`. It shows how to mock an ABP service and assert component state and DOM output:
- const modal = screen.getByRole("dialog");
- const modalHeading = queryByRole(modal, "heading", { name: /edit/i });
- expect(modalHeading).toBeTruthy();
+```ts
+import { CoreTestingModule } from "@abp/ng.core/testing";
+import { ThemeSharedTestingModule } from "@abp/ng.theme.shared/testing";
+import { ComponentFixture, TestBed } from "@angular/core/testing";
+import { NgxValidateCoreModule } from "@ngx-validate/core";
+import { AuthService } from "@abp/ng.core";
+import { vi } from "vitest";
+import { HomeComponent } from "./home.component";
- const closeBtn = getByText(modal, "×");
- userEvent.click(closeBtn);
+describe("HomeComponent", () => {
+ let fixture: ComponentFixture;
+ let mockAuthService: { isAuthenticated: boolean; navigateToLogin: ReturnType };
- await wait(fixture);
+ beforeEach(async () => {
+ mockAuthService = {
+ isAuthenticated: false,
+ navigateToLogin: vi.fn(),
+ };
- expect(screen.queryByRole("dialog")).toBeFalsy();
+ await TestBed.configureTestingModule({
+ imports: [
+ CoreTestingModule.withConfig(),
+ ThemeSharedTestingModule.withConfig(),
+ NgxValidateCoreModule,
+ HomeComponent,
+ ],
+ providers: [
+ {
+ provide: AuthService,
+ useValue: mockAuthService,
+ },
+ ],
+ }).compileComponents();
});
- it("should display create modal", async () => {
- const newBtn = screen.getByRole("button", { name: /new/i });
- userEvent.click(newBtn);
-
- await wait(fixture);
-
- const modal = screen.getByRole("dialog");
- const modalHeading = queryByRole(modal, "heading", { name: /new/i });
-
- expect(modalHeading).toBeTruthy();
+ it("should be initiated", () => {
+ fixture = TestBed.createComponent(HomeComponent);
+ fixture.detectChanges();
+ expect(fixture.componentInstance).toBeTruthy();
});
- it("should validate required name field", async () => {
- const newBtn = screen.getByRole("button", { name: /new/i });
- userEvent.click(newBtn);
+ describe("when login state is false", () => {
+ beforeEach(() => {
+ mockAuthService.isAuthenticated = false;
+ fixture = TestBed.createComponent(HomeComponent);
+ fixture.detectChanges();
+ });
- await wait(fixture);
+ it("hasLoggedIn should be false", () => {
+ expect(fixture.componentInstance.hasLoggedIn).toBe(false);
+ });
- const modal = screen.getByRole("dialog");
- const nameInput = getByRole(modal, "textbox", {
- name: /^name/i,
- }) as HTMLInputElement;
+ it("button should exist", () => {
+ const button = fixture.nativeElement.querySelector('[role="button"]');
+ expect(button).toBeDefined();
+ });
- userEvent.type(nameInput, "x");
- userEvent.type(nameInput, "{backspace}");
+ describe("when button clicked", () => {
+ beforeEach(() => {
+ const button = fixture.nativeElement.querySelector('[role="button"]');
+ button.click();
+ });
- const nameError = await findByText(modal, /required/i);
- expect(nameError).toBeTruthy();
+ it("navigateToLogin should have been called", () => {
+ expect(mockAuthService.navigateToLogin).toHaveBeenCalled();
+ });
+ });
});
+});
+```
- it("should delete a country", () => {
- const getSpy = spyOn(fixture.componentInstance.list, "get");
- const deleteSpy = jasmine.createSpy().and.returnValue(of(null));
- fixture.componentInstance.service.delete = deleteSpy;
-
- const actionsBtn = screen.queryByRole("button", { name: /actions/i });
- userEvent.click(actionsBtn);
-
- const deleteBtn = screen.getByRole("button", { name: /delete/i });
- userEvent.click(deleteBtn);
+For list pages with modals, confirmations, and service proxies, keep using the ABP testing modules, mock your generated proxy services with `vi.fn()`, and use `clearPage` / `wait` when body-level UI is involved.
- const confirmText = screen.getByText("AreYouSure");
- expect(confirmText).toBeTruthy();
+## CI Configuration
- const confirmBtn = screen.getByRole("button", { name: "Yes" });
- userEvent.click(confirmBtn);
+Run unit tests once in CI with:
- expect(deleteSpy).toHaveBeenCalledWith(list$.value.items[0].id);
- expect(getSpy).toHaveBeenCalledTimes(1);
- });
-});
+```sh
+ng test --watch=false
```
-## CI Configuration
-
-You would need a different configuration for your CI environment. To set up a new configuration for your unit tests, find the test project in _angular.json_ file and add one as seen below:
+If you need a dedicated CI configuration, add one under the `test` target in _angular.json_:
```json
// angular.json
"test": {
- "builder": "@angular-devkit/build-angular:karma",
- "options": { /* several options here */ },
+ "builder": "@angular/build:unit-test",
"configurations": {
- "production": {
- "karmaConfig": "karma.conf.prod.js"
+ "ci": {
+ "watch": false
}
}
}
```
-Now you can copy the _karma.conf.js_ as _karma.conf.prod.js_ and use any configuration you like in it. Please check [Karma configuration file document](http://karma-runner.github.io/5.2/config/configuration-file.html) for config options.
-
-Finally, don't forget to run your CI tests with the following command:
+Then run:
```sh
-npm test -- --prod
+ng test --configuration=ci
```
## See Also
diff --git a/docs/en/guides/ms-multi-tenant-domain-resolving.md b/docs/en/guides/ms-multi-tenant-domain-resolving.md
index 7603491f56..c8fdaae84c 100644
--- a/docs/en/guides/ms-multi-tenant-domain-resolving.md
+++ b/docs/en/guides/ms-multi-tenant-domain-resolving.md
@@ -68,6 +68,8 @@ This configuration will allow subdomain tenant resolving. Ex, if you have a tena
**For angular application**, you don't need to add anything since we will be overriding the angular environment via kubernetes values file.
+> The configuration above resolves the current tenant from the incoming request. To make outbound URLs generated through `IAppUrlProvider` (Account email links, redirects, etc.) also tenant-aware, configure `AppUrlOptions` with the same `{0}` template. See [Application URLs](../framework/infrastructure/app-urls.md#multi-tenant-aware-urls).
+
## Configuring AuthServer
When the tenant try to login from an application (Ex `https://volosoft.angular.mystore.dev`) it will be redirected to AuthServer (`https://volosoft.authserver.mystore.dev`) and you will be seeing a **HTTP 400 error** related to `invalid redirect_uri`. If you check the authserver application logs (under Logs/logs.txt file or console logs), you will notice that the `https://volosoft.angular.mystore.dev` is not a valid redirect_uri since it is not been seeded by the OpenIddictDataSeeder. Only the **host** applications, gateways and microservice URLs are seeded (like `https://angular.mystore.dev`).
diff --git a/docs/en/modules/account.md b/docs/en/modules/account.md
index 3fc2c8e3aa..844e00e06f 100644
--- a/docs/en/modules/account.md
+++ b/docs/en/modules/account.md
@@ -43,6 +43,8 @@ Social/external login buttons becomes visible if you setup it. See the *Social/E

+> The host part of the password reset link is built from `AppUrlOptions.Applications["MVC"].RootUrl`. Configure it if the default `App:SelfUrl` isn't what you want users to see in emails — for example, when you use subdomain-based multi-tenancy and want the link to point to the tenant's subdomain. See [Application URLs](../framework/infrastructure/app-urls.md).
+
### Account Management
`/Account/Manage` page is used to change password and personal information of the user.
diff --git a/docs/en/modules/account/shared-user-accounts.md b/docs/en/modules/account/shared-user-accounts.md
index 6f028238c6..908b342de2 100644
--- a/docs/en/modules/account/shared-user-accounts.md
+++ b/docs/en/modules/account/shared-user-accounts.md
@@ -56,6 +56,8 @@ Users can leave a tenant. After leaving, the user is no longer a member of that
> When a user leaves and later re-joins the same tenant, the `UserId` does not change and tenant-related data (roles, permissions, etc.) is preserved.
+Tenant administrators with the `Identity.Users.Delete` permission can also remove a member from the tenant via the **Remove from tenant** action on the user list. This is a soft removal — the global account stays and the user can be re-invited later, exactly like the self-service Leave.
+
## Inviting Users to a Tenant
Tenant administrators can invite existing or not-yet-registered users to join a tenant. The invited user receives an email; clicking the link completes the join process. If the user doesn't have an account yet, they can register and join through the same flow.
@@ -156,9 +158,12 @@ The following operations can only be performed by a host administrator when Shar
- Enable or disable two-factor authentication
- Change `LockoutEnabled` or `ShouldChangePasswordOnNextLogin`
+> `Delete` here means deleting the **global user account**, not removing a user from a single tenant. Removing a member from one tenant is a tenant-level soft operation and is available to tenant administrators — see **Remove from tenant** below.
+
### What tenant admins can do
- Invite users to the tenant (see the Invitation flow above)
+- Remove users from the tenant (soft removal; the global account stays)
- Manage role and organization-unit assignments within the tenant
- View audit / security logs scoped to the tenant
@@ -172,4 +177,5 @@ If you plan to migrate an existing multi-tenant application from an isolated str
1. **Uniqueness check**: Before enabling Shared, ensure all existing usernames and emails are unique globally. ABP performs this check when you switch the strategy and reports conflicts.
2. **Tenants with separate databases**: If some tenants use separate databases, you must ensure the Host database contains matching user records in the `AbpUsers` table (and, if you use social login / passkeys, also sync `AbpUserLogins` and `AbpUserPasskeys`) so the Host-side records match the tenant-side data. After that, the framework can create/manage the user-to-tenant associations.
+ - **Important — each host-side shadow row must have a new primary key (`Id`) different from the tenant user's `Id`.** Generate a fresh `Guid` for every shadow row instead of reusing the tenant user's primary key. The framework relies on this to distinguish a separate-database tenant from a shared-database one; reusing the Id can mask "Leave Tenant" and external login / passkey synchronization on legacy data. The other identifying fields (`UserName`, `Email`, `PasswordHash`, `TenantId`, etc.) should still match the tenant-side row.
diff --git a/docs/en/package-version-changes.md b/docs/en/package-version-changes.md
index 500d1e8e20..3bdaf00a17 100644
--- a/docs/en/package-version-changes.md
+++ b/docs/en/package-version-changes.md
@@ -12,12 +12,17 @@
| Package | Old Version | New Version | PR |
|---------|-------------|-------------|-----|
| MongoDB.Driver | 3.8.1 | 3.9.0 | #25484 |
+| Blazorise | 2.0.4 | 2.1.3 | #25494 |
+| Blazorise.Components | 2.0.4 | 2.1.3 | #25494 |
+| Blazorise.DataGrid | 2.0.4 | 2.1.3 | #25494 |
+| Blazorise.Snackbar | 2.0.4 | 2.1.3 | #25494 |
## 10.4.1
| Package | Old Version | New Version | PR |
|---------|-------------|-------------|-----|
| MudBlazor | 8.0.0 | 9.4.0 | #25393 |
+| Scriban | 7.0.0 | 7.2.1 | #25493 |
## 10.4.0-rc.2
diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor
index da90bd66e7..c1891ebda2 100644
--- a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor
+++ b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor
@@ -120,9 +120,9 @@
else
{
-
+
@{
- var entity = context.Item as IHasExtraProperties;
+ var entity = rowContext.Item as IHasExtraProperties;
var propertyName = ExtensionPropertiesRegex.Match(column.Data).Groups[1].Value;
var propertyValue = entity?.GetProperty(propertyName);
if (propertyValue != null && propertyValue.GetType() == typeof(bool))
@@ -140,7 +140,7 @@
{
if (column.ValueConverter != null)
{
- @((MarkupString)GetConvertedFieldValue(context.Item, column))
+ @((MarkupString)GetConvertedFieldValue(rowContext.Item, column))
}
else
{
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 7c520da471..b81d722bae 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
@@ -47,7 +47,8 @@ public class AwsBlobProvider : BlobProviderBase, ITransientDependency
{
BucketName = containerName,
Key = blobName,
- InputStream = args.BlobStream
+ InputStream = args.BlobStream,
+ DisablePayloadSigning = configuration.DisablePayloadSigning
});
}
}
diff --git a/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProviderConfiguration.cs b/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProviderConfiguration.cs
index 1b31d176c8..fa318bdcb8 100644
--- a/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProviderConfiguration.cs
+++ b/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProviderConfiguration.cs
@@ -57,9 +57,53 @@ public class AwsBlobProviderConfiguration
set => _containerConfiguration.SetConfiguration(AwsBlobProviderConfigurationNames.Policy, value);
}
- public string Region {
- get => _containerConfiguration.GetConfiguration(AwsBlobProviderConfigurationNames.Region);
- set => _containerConfiguration.SetConfiguration(AwsBlobProviderConfigurationNames.Region, Check.NotNull(value, nameof(value)));
+ ///
+ /// The system name of the AWS region (e.g., us-east-1). Required for real AWS S3.
+ /// Optional when is configured for an S3-compatible service;
+ /// some services accept any value (or auto for Cloudflare R2).
+ ///
+ public string? Region {
+ get => _containerConfiguration.GetConfigurationOrDefault(AwsBlobProviderConfigurationNames.Region);
+ set
+ {
+ if (value == null)
+ {
+ _containerConfiguration.ClearConfiguration(AwsBlobProviderConfigurationNames.Region);
+ return;
+ }
+ _containerConfiguration.SetConfiguration(AwsBlobProviderConfigurationNames.Region, value);
+ }
+ }
+
+ ///
+ /// Custom service URL for S3-compatible APIs (e.g., MinIO, DigitalOcean Spaces, Cloudflare R2).
+ /// When omitted, becomes required and the default AWS S3 endpoint for that
+ /// region is used. The AWS SDK automatically appends a trailing slash to the configured value.
+ ///
+ public string? ServiceURL {
+ get => _containerConfiguration.GetConfigurationOrDefault(AwsBlobProviderConfigurationNames.ServiceURL);
+ set
+ {
+ if (value == null)
+ {
+ _containerConfiguration.ClearConfiguration(AwsBlobProviderConfigurationNames.ServiceURL);
+ return;
+ }
+ _containerConfiguration.SetConfiguration(AwsBlobProviderConfigurationNames.ServiceURL, value);
+ }
+ }
+
+ ///
+ /// When true, payload signing is disabled on PutObject upload requests so the SDK sends
+ /// x-amz-content-sha256: UNSIGNED-PAYLOAD instead of the streaming chunked signature
+ /// (STREAMING-AWS4-HMAC-SHA256-PAYLOAD) that AWS SDK v4 uses by default. Required for
+ /// Cloudflare R2 and other S3-compatible services that do not implement streaming signing.
+ /// The endpoint must be HTTPS when this option is enabled (AWS SDK rejects unsigned payloads
+ /// over HTTP). Default: false (keep AWS SDK defaults for real AWS S3 and MinIO).
+ ///
+ public bool DisablePayloadSigning {
+ get => _containerConfiguration.GetConfigurationOrDefault(AwsBlobProviderConfigurationNames.DisablePayloadSigning, false);
+ set => _containerConfiguration.SetConfiguration(AwsBlobProviderConfigurationNames.DisablePayloadSigning, value);
}
///
diff --git a/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProviderConfigurationNames.cs b/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProviderConfigurationNames.cs
index d1b775c812..b30d6813ff 100644
--- a/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProviderConfigurationNames.cs
+++ b/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProviderConfigurationNames.cs
@@ -14,6 +14,8 @@ public static class AwsBlobProviderConfigurationNames
public const string Name = "Aws.Name";
public const string Policy = "Aws.Policy";
public const string Region = "Aws.Region";
+ public const string ServiceURL = "Aws.ServiceURL";
+ public const string DisablePayloadSigning = "Aws.DisablePayloadSigning";
public const string ContainerName = "Aws.ContainerName";
public const string CreateContainerIfNotExists = "Aws.CreateContainerIfNotExists";
}
diff --git a/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/DefaultAmazonS3ClientFactory.cs b/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/DefaultAmazonS3ClientFactory.cs
index dee0bf5096..7d3d0b3869 100644
--- a/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/DefaultAmazonS3ClientFactory.cs
+++ b/framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/DefaultAmazonS3ClientFactory.cs
@@ -30,31 +30,60 @@ public class DefaultAmazonS3ClientFactory : IAmazonS3ClientFactory, ITransientDe
public virtual async Task GetAmazonS3Client(
AwsBlobProviderConfiguration configuration)
{
- var region = RegionEndpoint.GetBySystemName(configuration.Region);
+ if (configuration.Region.IsNullOrWhiteSpace() && configuration.ServiceURL.IsNullOrWhiteSpace())
+ {
+ throw new AbpException(
+ $"Either {nameof(AwsBlobProviderConfiguration.Region)} or {nameof(AwsBlobProviderConfiguration.ServiceURL)} must be configured on {nameof(AwsBlobProviderConfiguration)}.");
+ }
+
+ var region = !configuration.Region.IsNullOrWhiteSpace()
+ ? RegionEndpoint.GetBySystemName(configuration.Region)
+ : null;
+ var clientConfig = await CreateS3ClientConfigAsync(configuration, region);
if (configuration.UseCredentials)
{
var awsCredentials = GetAwsCredentials(configuration);
return awsCredentials == null
- ? new AmazonS3Client(region)
- : new AmazonS3Client(awsCredentials, region);
+ ? new AmazonS3Client(clientConfig)
+ : new AmazonS3Client(awsCredentials, clientConfig);
}
if (configuration.UseTemporaryCredentials)
{
- return new AmazonS3Client(await GetTemporaryCredentialsAsync(configuration), region);
+ return new AmazonS3Client(await GetTemporaryCredentialsAsync(configuration), clientConfig);
}
if (configuration.UseTemporaryFederatedCredentials)
{
return new AmazonS3Client(await GetTemporaryFederatedCredentialsAsync(configuration),
- region);
+ clientConfig);
}
Check.NotNullOrWhiteSpace(configuration.AccessKeyId, nameof(configuration.AccessKeyId));
Check.NotNullOrWhiteSpace(configuration.SecretAccessKey, nameof(configuration.SecretAccessKey));
- return new AmazonS3Client(configuration.AccessKeyId, configuration.SecretAccessKey, region);
+ return new AmazonS3Client(configuration.AccessKeyId, configuration.SecretAccessKey, clientConfig);
+ }
+
+ protected virtual Task CreateS3ClientConfigAsync(AwsBlobProviderConfiguration configuration, RegionEndpoint? region)
+ {
+ var clientConfig = new AmazonS3Config();
+
+ if (region != null)
+ {
+ clientConfig.RegionEndpoint = region;
+ }
+
+ if (!configuration.ServiceURL.IsNullOrWhiteSpace())
+ {
+ clientConfig.ServiceURL = configuration.ServiceURL;
+ clientConfig.ForcePathStyle = true;
+ clientConfig.RequestChecksumCalculation = RequestChecksumCalculation.WHEN_REQUIRED;
+ clientConfig.ResponseChecksumValidation = ResponseChecksumValidation.WHEN_REQUIRED;
+ }
+
+ return Task.FromResult(clientConfig);
}
protected virtual AWSCredentials? GetAwsCredentials(
diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs
index 6e0a5008a3..107008deea 100644
--- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs
+++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs
@@ -50,7 +50,9 @@ public class ClientProxyBase : ITransientDependency
protected virtual async Task RequestAsync(string methodName, ClientProxyRequestTypeValue? arguments = null)
{
- await RequestAsync(BuildHttpProxyClientProxyContext(methodName, arguments));
+ using (await RequestAsync(BuildHttpProxyClientProxyContext(methodName, arguments)))
+ {
+ }
}
protected virtual async Task RequestAsync(string methodName, ClientProxyRequestTypeValue? arguments = null)
@@ -120,18 +122,21 @@ public class ClientProxyBase : ITransientDependency
responseContent.Headers?.ContentLength);
}
- var stringContent = await responseContent.ReadAsStringAsync();
- if (typeof(T) == typeof(string))
+ using (responseContent)
{
- return (T)(object)stringContent;
- }
+ var stringContent = await responseContent.ReadAsStringAsync();
+ if (typeof(T) == typeof(string))
+ {
+ return (T)(object)stringContent;
+ }
- if (stringContent.IsNullOrWhiteSpace())
- {
- return default!;
- }
+ if (stringContent.IsNullOrWhiteSpace())
+ {
+ return default!;
+ }
- return JsonSerializer.Deserialize(stringContent);
+ return JsonSerializer.Deserialize(stringContent);
+ }
}
protected virtual async Task RequestAsync(ClientProxyRequestContext requestContext)
@@ -184,7 +189,15 @@ public class ClientProxyBase : ITransientDependency
if (!response.IsSuccessStatusCode)
{
- await ThrowExceptionForResponseAsync(response);
+ try
+ {
+ await ThrowExceptionForResponseAsync(response);
+ }
+ catch
+ {
+ response.Dispose();
+ throw;
+ }
}
return response.Content;
diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs
index 0f5a9e3642..a0b60ce006 100644
--- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs
+++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs
@@ -59,7 +59,9 @@ public class DynamicHttpProxyInterceptor : AbpInterceptor, ITransientD
if (invocation.Method.ReturnType.GenericTypeArguments.IsNullOrEmpty())
{
- await InterceptorClientProxy.CallRequestAsync(context);
+ using (await InterceptorClientProxy.CallRequestAsync(context))
+ {
+ }
}
else
{
diff --git a/framework/src/Volo.Abp.Mapperly/Volo/Abp/Mapperly/MapperlyAutoObjectMappingProvider.cs b/framework/src/Volo.Abp.Mapperly/Volo/Abp/Mapperly/MapperlyAutoObjectMappingProvider.cs
index 4fd72ded4b..32dfa93807 100644
--- a/framework/src/Volo.Abp.Mapperly/Volo/Abp/Mapperly/MapperlyAutoObjectMappingProvider.cs
+++ b/framework/src/Volo.Abp.Mapperly/Volo/Abp/Mapperly/MapperlyAutoObjectMappingProvider.cs
@@ -46,7 +46,7 @@ public class MapperlyAutoObjectMappingProvider : IAutoObjectMappingProvider
{
mapper.BeforeMap((TSource)source);
var destination = mapper.Map((TSource)source);
- TryMapExtraProperties(mapper.GetType().GetSingleAttributeOrNull(), (TSource)source, destination, GetExtraProperties(destination));
+ TryMapExtraProperties(mapper.GetType().GetSingleAttributeOrNull(), (TSource)source, destination, new ExtraPropertyDictionary());
mapper.AfterMap((TSource)source, destination);
return destination;
}
@@ -56,7 +56,7 @@ public class MapperlyAutoObjectMappingProvider : IAutoObjectMappingProvider
{
reverseMapper.BeforeReverseMap((TSource)source);
var destination = reverseMapper.ReverseMap((TSource)source);
- TryMapExtraProperties(reverseMapper.GetType().GetSingleAttributeOrNull(), (TSource)source, destination, GetExtraProperties(destination));
+ TryMapExtraProperties(reverseMapper.GetType().GetSingleAttributeOrNull(), (TSource)source, destination, new ExtraPropertyDictionary());
reverseMapper.AfterReverseMap((TSource)source, destination);
return destination;
}
diff --git a/framework/src/Volo.Abp.MudBlazorUI/MudBlazorUiPageProgressService.cs b/framework/src/Volo.Abp.MudBlazorUI/MudBlazorUiPageProgressService.cs
index aeb9d51841..9a9c11e717 100644
--- a/framework/src/Volo.Abp.MudBlazorUI/MudBlazorUiPageProgressService.cs
+++ b/framework/src/Volo.Abp.MudBlazorUI/MudBlazorUiPageProgressService.cs
@@ -17,33 +17,57 @@ public class MudBlazorUiPageProgressService : IUiPageProgressService, IScopedDep
protected virtual int HideDelayMs => 250;
private int _activeCount;
- private UiPageProgressOptions _lastOptions = new();
+ private bool _visible;
+ private UiPageProgressOptions _lastOptions;
private readonly Timer _hideTimer;
public MudBlazorUiPageProgressService()
{
- _hideTimer = new Timer(_ => ProgressChanged?.Invoke(this, new UiPageProgressEventArgs(-1, _lastOptions)));
+ _lastOptions = CreateDefaultOptions();
+ _hideTimer = new Timer(_ =>
+ {
+ _visible = false;
+ ProgressChanged?.Invoke(this, new UiPageProgressEventArgs(-1, _lastOptions));
+ });
}
public Task Go(int? percentage, Action? options = null)
{
- var opt = new UiPageProgressOptions();
+ var opt = CreateDefaultOptions();
options?.Invoke(opt);
_lastOptions = opt;
- if (percentage == -1 && Interlocked.Decrement(ref _activeCount) <= 0)
+ if (percentage == -1)
{
- Interlocked.Exchange(ref _activeCount, 0);
- _hideTimer.Change(HideDelayMs, Timeout.Infinite);
+ _activeCount--;
+ if (_activeCount <= 0)
+ {
+ _activeCount = 0;
+ _hideTimer.Change(HideDelayMs, Timeout.Infinite);
+ }
}
- else if (percentage == null && Interlocked.Increment(ref _activeCount) == 1)
+ else if (percentage == null)
{
+ _activeCount++;
_hideTimer.Change(Timeout.Infinite, Timeout.Infinite);
- ProgressChanged?.Invoke(this, new UiPageProgressEventArgs(null, opt));
+ if (!_visible)
+ {
+ _visible = true;
+ ProgressChanged?.Invoke(this, new UiPageProgressEventArgs(null, opt));
+ }
+ }
+ else
+ {
+ ProgressChanged?.Invoke(this, new UiPageProgressEventArgs(percentage, opt));
}
return Task.CompletedTask;
}
+ protected virtual UiPageProgressOptions CreateDefaultOptions()
+ {
+ return new UiPageProgressOptions();
+ }
+
public void Dispose() => _hideTimer.Dispose();
}
diff --git a/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/AbpBlobStoringAwsTestModule.cs b/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/AbpBlobStoringAwsTestModule.cs
index 6edd0fc669..bd7b07c40c 100644
--- a/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/AbpBlobStoringAwsTestModule.cs
+++ b/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/AbpBlobStoringAwsTestModule.cs
@@ -1,11 +1,15 @@
using System;
+using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using Amazon.S3;
using Amazon.S3.Model;
using Amazon.S3.Util;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection.Extensions;
using Volo.Abp.Modularity;
+using Volo.Abp.MultiTenancy;
using Volo.Abp.Threading;
namespace Volo.Abp.BlobStoring.Aws;
@@ -28,9 +32,19 @@ public class AbpBlobStoringAwsTestModule : AbpModule
{
private const string UserSecretsId = "9f0d2c00-80c1-435b-bfab-2c39c8249091";
- private readonly string _randomContainerName = "abp-aws-test-container-" + Guid.NewGuid().ToString("N");
+ private readonly string _runId = Guid.NewGuid().ToString("N");
+ private readonly string _randomContainerName;
+ private readonly string _externalRunPrefix;
private AwsBlobProviderConfiguration _configuration;
+ private string _actualContainerName;
+ private bool _externalContainer;
+
+ public AbpBlobStoringAwsTestModule()
+ {
+ _randomContainerName = "abp-aws-test-container-" + _runId;
+ _externalRunPrefix = "abp-aws-test-run-" + _runId + "/";
+ }
public override void ConfigureServices(ServiceConfigurationContext context)
{
@@ -42,7 +56,30 @@ public class AbpBlobStoringAwsTestModule : AbpModule
var configuration = context.Services.GetConfiguration();
var accessKeyId = configuration["Aws:AccessKeyId"];
var secretAccessKey = configuration["Aws:SecretAccessKey"];
+
+ // No credentials configured (e.g., CI without user secrets) → skip container wiring.
+ // `BlobContainerConfiguration.SetConfiguration` rejects nulls, so any attempt to resolve
+ // a container with null values from configuration would throw at runtime.
+ if (string.IsNullOrEmpty(accessKeyId) || string.IsNullOrEmpty(secretAccessKey))
+ {
+ return;
+ }
+
var region = configuration["Aws:Region"];
+ var serviceUrl = configuration["Aws:ServiceURL"];
+ var disablePayloadSigning = bool.TryParse(configuration["Aws:DisablePayloadSigning"], out var dps) && dps;
+ var configuredContainerName = configuration["Aws:ContainerName"];
+ var createContainerIfNotExists = !bool.TryParse(configuration["Aws:CreateContainerIfNotExists"], out var cci) || cci;
+
+ _externalContainer = !string.IsNullOrWhiteSpace(configuredContainerName);
+ _actualContainerName = _externalContainer ? configuredContainerName : _randomContainerName;
+
+ if (_externalContainer)
+ {
+ var prefix = _externalRunPrefix;
+ context.Services.Replace(ServiceDescriptor.Transient(sp =>
+ new TestRunPrefixedAwsBlobNameCalculator(sp.GetRequiredService(), prefix)));
+ }
Configure(options =>
{
@@ -53,8 +90,10 @@ public class AbpBlobStoringAwsTestModule : AbpModule
aws.AccessKeyId = accessKeyId;
aws.SecretAccessKey = secretAccessKey;
aws.Region = region;
- aws.CreateContainerIfNotExists = true;
- aws.ContainerName = _randomContainerName;
+ aws.ServiceURL = serviceUrl;
+ aws.DisablePayloadSigning = disablePayloadSigning;
+ aws.CreateContainerIfNotExists = createContainerIfNotExists;
+ aws.ContainerName = _actualContainerName;
_configuration = aws;
});
@@ -64,28 +103,107 @@ public class AbpBlobStoringAwsTestModule : AbpModule
public override void OnApplicationShutdown(ApplicationShutdownContext context)
{
- AsyncHelper.RunSync(() => DeleteBucketAsync(context));
+ AsyncHelper.RunSync(() => CleanupAsync(context));
}
- private async Task DeleteBucketAsync(ApplicationShutdownContext context)
+ private async Task CleanupAsync(ApplicationShutdownContext context)
{
- var amazonS3Client = await context.ServiceProvider.GetRequiredService()
- .GetAmazonS3Client(_configuration);
+ if (_configuration == null ||
+ string.IsNullOrWhiteSpace(_configuration.AccessKeyId) ||
+ string.IsNullOrWhiteSpace(_configuration.SecretAccessKey) ||
+ (string.IsNullOrWhiteSpace(_configuration.Region) && string.IsNullOrWhiteSpace(_configuration.ServiceURL)))
+ {
+ return;
+ }
+
+ try
+ {
+ using var amazonS3Client = await context.ServiceProvider.GetRequiredService()
+ .GetAmazonS3Client(_configuration);
+
+ if (!await AmazonS3Util.DoesS3BucketExistV2Async(amazonS3Client, _actualContainerName))
+ {
+ return;
+ }
+
+ await DeleteObjectsAsync(amazonS3Client, _externalContainer ? _externalRunPrefix : null);
+
+ if (!_externalContainer)
+ {
+ await amazonS3Client.DeleteBucketAsync(_actualContainerName);
+ }
+ }
+ catch
+ {
+ // Ignore errors during test cleanup
+ }
+ }
- if (await AmazonS3Util.DoesS3BucketExistV2Async(amazonS3Client, _randomContainerName))
+ private async Task DeleteObjectsAsync(AmazonS3Client client, string? prefix)
+ {
+ string? continuationToken = null;
+ do
{
- var blobs = await amazonS3Client.ListObjectsAsync(_randomContainerName);
+ var listResponse = await client.ListObjectsV2Async(new ListObjectsV2Request
+ {
+ BucketName = _actualContainerName,
+ Prefix = prefix,
+ ContinuationToken = continuationToken,
+ MaxKeys = 1000
+ });
- if (blobs.S3Objects.Any())
+ if (listResponse.S3Objects.Any())
{
- await amazonS3Client.DeleteObjectsAsync(new DeleteObjectsRequest
+ foreach (var batch in Chunk(listResponse.S3Objects, 1000))
{
- BucketName = _randomContainerName,
- Objects = blobs.S3Objects.Select(o => new KeyVersion { Key = o.Key }).ToList()
- });
+ await client.DeleteObjectsAsync(new DeleteObjectsRequest
+ {
+ BucketName = _actualContainerName,
+ Objects = batch.Select(o => new KeyVersion { Key = o.Key }).ToList()
+ });
+ }
}
- await amazonS3Client.DeleteBucketAsync(_randomContainerName);
+ continuationToken = listResponse.IsTruncated == true ? listResponse.NextContinuationToken : null;
+ } while (continuationToken != null);
+ }
+
+ private static IEnumerable> Chunk(IEnumerable source, int size)
+ {
+ var bucket = new List(size);
+ foreach (var item in source)
+ {
+ bucket.Add(item);
+ if (bucket.Count == size)
+ {
+ yield return bucket;
+ bucket = new List(size);
+ }
}
+ if (bucket.Count > 0)
+ {
+ yield return bucket;
+ }
+ }
+}
+
+internal sealed class TestRunPrefixedAwsBlobNameCalculator : IAwsBlobNameCalculator
+{
+ private readonly ICurrentTenant _currentTenant;
+ private readonly string _runPrefix;
+
+ public TestRunPrefixedAwsBlobNameCalculator(ICurrentTenant currentTenant, string runPrefix)
+ {
+ _currentTenant = currentTenant;
+ _runPrefix = runPrefix;
+ }
+
+ public string Calculate(BlobProviderArgs args)
+ {
+ var baseName = _currentTenant.Id == null
+ ? $"host/{args.BlobName}"
+ : $"tenants/{_currentTenant.Id.Value:D}/{args.BlobName}";
+
+ return _runPrefix + baseName;
}
}
diff --git a/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/AwsBlobContainer_Tests.cs b/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/AwsBlobContainer_Tests.cs
index db1aef2be2..a750bb5678 100644
--- a/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/AwsBlobContainer_Tests.cs
+++ b/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/AwsBlobContainer_Tests.cs
@@ -1 +1,25 @@
-namespace Volo.Abp.BlobStoring.Aws;
+namespace Volo.Abp.BlobStoring.Aws;
+
+/*
+ To run this integration test, populate user secrets (id `9f0d2c00-80c1-435b-bfab-2c39c8249091`)
+ with credentials for real AWS S3 or an S3-compatible service (Cloudflare R2, MinIO, etc.):
+
+ {
+ "Aws:AccessKeyId": "...",
+ "Aws:SecretAccessKey": "...",
+ "Aws:Region": "us-east-1", // "auto" for Cloudflare R2
+ "Aws:ServiceURL": "", // e.g. https://.r2.cloudflarestorage.com for R2, http://localhost:9000 for MinIO
+ "Aws:DisablePayloadSigning": "false", // set "true" for R2 (requires HTTPS); leave "false" for MinIO and AWS S3
+ "Aws:ContainerName": "", // leave empty to let the test create a unique bucket; set to a pre-existing bucket for services that disallow bucket creation
+ "Aws:CreateContainerIfNotExists": "true" // set "false" when using an existing bucket
+ }
+
+ When `ContainerName` is supplied, the test prefixes every object with `abp-aws-test-run-{guid}/`
+ so cleanup deletes only what this run created (the bucket itself is left untouched).
+
+ Then uncomment the class below:
+
+public class AwsBlobContainer_Tests : BlobContainer_Tests
+{
+}
+*/
diff --git a/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/AwsBlobProviderConfiguration_Tests.cs b/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/AwsBlobProviderConfiguration_Tests.cs
new file mode 100644
index 0000000000..a48c7cb6be
--- /dev/null
+++ b/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/AwsBlobProviderConfiguration_Tests.cs
@@ -0,0 +1,72 @@
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.BlobStoring.Aws;
+
+public class AwsBlobProviderConfiguration_Tests : AbpBlobStoringAwsTestCommonBase
+{
+ [Fact]
+ public void Should_Set_And_Get_ServiceURL()
+ {
+ // Arrange
+ var containerConfiguration = new BlobContainerConfiguration();
+ var awsConfiguration = new AwsBlobProviderConfiguration(containerConfiguration);
+ const string serviceUrl = "https://minio.example.com:9000";
+
+ // Act
+ awsConfiguration.ServiceURL = serviceUrl;
+
+ // Assert
+ awsConfiguration.ServiceURL.ShouldBe(serviceUrl);
+ }
+
+ [Fact]
+ public void Should_Return_Null_When_ServiceURL_Not_Set()
+ {
+ // Arrange
+ var containerConfiguration = new BlobContainerConfiguration();
+ var awsConfiguration = new AwsBlobProviderConfiguration(containerConfiguration);
+
+ // Act & Assert
+ awsConfiguration.ServiceURL.ShouldBeNull();
+ }
+
+ [Fact]
+ public void Should_Configure_ServiceURL_Using_UseAws_Extension()
+ {
+ // Arrange
+ var containerConfiguration = new BlobContainerConfiguration();
+ const string serviceUrl = "https://spaces.digitalocean.com";
+
+ // Act
+ containerConfiguration.UseAws(config =>
+ {
+ config.ServiceURL = serviceUrl;
+ config.Region = "us-east-1";
+ });
+
+ // Assert
+ var awsConfig = containerConfiguration.GetAwsConfiguration();
+ awsConfig.ServiceURL.ShouldBe(serviceUrl);
+ }
+
+ [Fact]
+ public void Should_Default_DisablePayloadSigning_To_False()
+ {
+ var containerConfiguration = new BlobContainerConfiguration();
+ var awsConfiguration = new AwsBlobProviderConfiguration(containerConfiguration);
+
+ awsConfiguration.DisablePayloadSigning.ShouldBeFalse();
+ }
+
+ [Fact]
+ public void Should_Set_And_Get_DisablePayloadSigning()
+ {
+ var containerConfiguration = new BlobContainerConfiguration();
+ var awsConfiguration = new AwsBlobProviderConfiguration(containerConfiguration);
+
+ awsConfiguration.DisablePayloadSigning = true;
+
+ awsConfiguration.DisablePayloadSigning.ShouldBeTrue();
+ }
+}
diff --git a/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/DefaultAmazonS3ClientFactory_Tests.cs b/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/DefaultAmazonS3ClientFactory_Tests.cs
new file mode 100644
index 0000000000..e4886f602b
--- /dev/null
+++ b/framework/test/Volo.Abp.BlobStoring.Aws.Tests/Volo/Abp/BlobStoring/Aws/DefaultAmazonS3ClientFactory_Tests.cs
@@ -0,0 +1,114 @@
+using System.Threading.Tasks;
+using Amazon.Runtime;
+using Amazon.S3;
+using Microsoft.Extensions.DependencyInjection;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.BlobStoring.Aws;
+
+public class DefaultAmazonS3ClientFactory_Tests : AbpBlobStoringAwsTestBase
+{
+ private readonly IAmazonS3ClientFactory _amazonS3ClientFactory;
+
+ public DefaultAmazonS3ClientFactory_Tests()
+ {
+ _amazonS3ClientFactory = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task Should_Create_S3Client_With_Custom_ServiceURL()
+ {
+ // Arrange
+ var containerConfiguration = new BlobContainerConfiguration();
+ const string serviceUrl = "https://minio.example.com:9000";
+
+ var awsConfiguration = new AwsBlobProviderConfiguration(containerConfiguration)
+ {
+ AccessKeyId = "test-access-key",
+ SecretAccessKey = "test-secret-key",
+ Region = "us-east-1",
+ ServiceURL = serviceUrl
+ };
+
+ // Act
+ using var s3Client = await _amazonS3ClientFactory.GetAmazonS3Client(awsConfiguration);
+
+ // Assert
+ s3Client.ShouldNotBeNull();
+ s3Client.Config.ServiceURL?.TrimEnd('/').ShouldBe(serviceUrl);
+ ((AmazonS3Config)s3Client.Config).ForcePathStyle.ShouldBeTrue();
+ }
+
+ [Fact]
+ public async Task Should_Create_S3Client_Without_Custom_ServiceURL()
+ {
+ // Arrange
+ var containerConfiguration = new BlobContainerConfiguration();
+
+ var awsConfiguration = new AwsBlobProviderConfiguration(containerConfiguration)
+ {
+ AccessKeyId = "test-access-key",
+ SecretAccessKey = "test-secret-key",
+ Region = "us-east-1"
+ // ServiceURL not set
+ };
+
+ // Act
+ using var s3Client = await _amazonS3ClientFactory.GetAmazonS3Client(awsConfiguration);
+
+ // Assert
+ s3Client.ShouldNotBeNull();
+ s3Client.Config.ServiceURL.ShouldBeNull(); // Should use default AWS S3 service
+ ((AmazonS3Config)s3Client.Config).ForcePathStyle.ShouldBeFalse(); // Should be false for AWS S3
+ }
+
+ [Fact]
+ public async Task Should_Create_S3Client_Without_Region_For_S3Compatible_Services()
+ {
+ // Arrange
+ var containerConfiguration = new BlobContainerConfiguration();
+
+ var awsConfiguration = new AwsBlobProviderConfiguration(containerConfiguration)
+ {
+ AccessKeyId = "test-access-key",
+ SecretAccessKey = "test-secret-key",
+ ServiceURL = "https://minio.example.com:9000"
+ // Region not set - should work for S3-compatible services
+ };
+
+ // Act
+ using var s3Client = await _amazonS3ClientFactory.GetAmazonS3Client(awsConfiguration);
+
+ // Assert
+ s3Client.ShouldNotBeNull();
+ s3Client.Config.ServiceURL?.TrimEnd('/').ShouldBe("https://minio.example.com:9000");
+ ((AmazonS3Config)s3Client.Config).ForcePathStyle.ShouldBeTrue();
+ }
+
+ [Fact]
+ public async Task Should_Set_Checksum_Properties_For_S3Compatible_Services()
+ {
+ // Arrange
+ var containerConfiguration = new BlobContainerConfiguration();
+
+ var awsConfiguration = new AwsBlobProviderConfiguration(containerConfiguration)
+ {
+ AccessKeyId = "test-access-key",
+ SecretAccessKey = "test-secret-key",
+ ServiceURL = "https://r2.cloudflarestorage.com",
+ Region = "auto"
+ };
+
+ // Act
+ using var s3Client = await _amazonS3ClientFactory.GetAmazonS3Client(awsConfiguration);
+
+ // Assert
+ s3Client.ShouldNotBeNull();
+ var config = (AmazonS3Config)s3Client.Config;
+ config.ServiceURL?.TrimEnd('/').ShouldBe("https://r2.cloudflarestorage.com");
+ config.ForcePathStyle.ShouldBeTrue();
+ config.RequestChecksumCalculation.ShouldBe(RequestChecksumCalculation.WHEN_REQUIRED);
+ config.ResponseChecksumValidation.ShouldBe(ResponseChecksumValidation.WHEN_REQUIRED);
+ }
+}
diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/ClientProxyResponseDisposal_Tests.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/ClientProxyResponseDisposal_Tests.cs
new file mode 100644
index 0000000000..810781fe15
--- /dev/null
+++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/ClientProxyResponseDisposal_Tests.cs
@@ -0,0 +1,157 @@
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Http;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection.Extensions;
+using Shouldly;
+using Volo.Abp.AspNetCore.TestBase;
+using Volo.Abp.Http.Client;
+using Volo.Abp.Http.Client.Proxying;
+using Xunit;
+
+namespace Volo.Abp.Http.DynamicProxying;
+
+public class ClientProxyResponseDisposal_Tests : AbpHttpClientTestBase
+{
+ private readonly IRegularTestController _controller;
+ private readonly StubProxyHttpClientFactory _factory;
+
+ public ClientProxyResponseDisposal_Tests()
+ {
+ _controller = ServiceProvider.GetRequiredService();
+ _factory = (StubProxyHttpClientFactory)ServiceProvider.GetRequiredService();
+ }
+
+ protected override void ConfigureServices(IServiceCollection services)
+ {
+ services.Replace(ServiceDescriptor.Singleton());
+ }
+
+ [Fact]
+ public async Task Non_Abp_Error_Response_Should_Dispose_HttpContent()
+ {
+ var content = new TrackingHttpContent("Bad Gateway from upstream");
+ _factory.SetStubResponse(() => new HttpResponseMessage(HttpStatusCode.BadGateway)
+ {
+ Content = content
+ });
+
+ var exception = await Assert.ThrowsAsync(
+ () => _controller.IncrementValueAsync(1));
+
+ exception.HttpStatusCode.ShouldBe((int)HttpStatusCode.BadGateway);
+ content.Disposed.ShouldBeTrue();
+ }
+
+ [Fact]
+ public async Task Successful_Response_With_Json_Return_Should_Dispose_HttpContent()
+ {
+ var content = new TrackingHttpContent("42");
+ _factory.SetStubResponse(() => new HttpResponseMessage(HttpStatusCode.OK)
+ {
+ Content = content
+ });
+
+ var result = await _controller.IncrementValueAsync(0);
+
+ result.ShouldBe(42);
+ content.Disposed.ShouldBeTrue();
+ }
+
+ [Fact]
+ public async Task Successful_Response_With_Void_Return_Should_Dispose_HttpContent()
+ {
+ var content = new TrackingHttpContent(string.Empty);
+ _factory.SetStubResponse(() => new HttpResponseMessage(HttpStatusCode.NoContent)
+ {
+ Content = content
+ });
+
+ await _controller.GetException1Async();
+
+ content.Disposed.ShouldBeTrue();
+ }
+
+ class StubProxyHttpClientFactory : IProxyHttpClientFactory
+ {
+ private readonly ITestServerAccessor _testServerAccessor;
+
+ private int _count;
+ private Func _responseFactory;
+
+ public StubProxyHttpClientFactory(ITestServerAccessor testServerAccessor)
+ {
+ _testServerAccessor = testServerAccessor;
+ }
+
+ public void SetStubResponse(Func responseFactory)
+ {
+ _responseFactory = responseFactory;
+ }
+
+ public HttpClient Create(string name) => Create();
+
+ public HttpClient Create()
+ {
+ if (_count++ == 0)
+ {
+ return _testServerAccessor.Server.CreateClient();
+ }
+
+ return new HttpClient(new StubHttpMessageHandler(() =>
+ _responseFactory?.Invoke()
+ ?? throw new InvalidOperationException("Stub response is not configured.")))
+ {
+ BaseAddress = new Uri("http://localhost/")
+ };
+ }
+ }
+
+ class StubHttpMessageHandler : HttpMessageHandler
+ {
+ private readonly Func _responseFactory;
+
+ public StubHttpMessageHandler(Func responseFactory)
+ {
+ _responseFactory = responseFactory;
+ }
+
+ protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
+ {
+ return Task.FromResult(_responseFactory());
+ }
+ }
+
+ class TrackingHttpContent : HttpContent
+ {
+ private readonly byte[] _data;
+
+ public bool Disposed { get; private set; }
+
+ public TrackingHttpContent(string text)
+ {
+ _data = Encoding.UTF8.GetBytes(text);
+ }
+
+ protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)
+ {
+ return stream.WriteAsync(_data, 0, _data.Length);
+ }
+
+ protected override bool TryComputeLength(out long length)
+ {
+ length = _data.Length;
+ return true;
+ }
+
+ protected override void Dispose(bool disposing)
+ {
+ Disposed = true;
+ base.Dispose(disposing);
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Mapperly.Tests/Mapperly/AbpAutoMapperExtensibleDtoExtensions_Tests.cs b/framework/test/Volo.Abp.Mapperly.Tests/Mapperly/AbpAutoMapperExtensibleDtoExtensions_Tests.cs
index 9e5fe4f8cf..9eca171e4e 100644
--- a/framework/test/Volo.Abp.Mapperly.Tests/Mapperly/AbpAutoMapperExtensibleDtoExtensions_Tests.cs
+++ b/framework/test/Volo.Abp.Mapperly.Tests/Mapperly/AbpAutoMapperExtensibleDtoExtensions_Tests.cs
@@ -40,6 +40,25 @@ public class AbpAutoMapperExtensibleDtoExtensions_Tests : AbpIntegratedTest(person);
+
+ personDto.GetProperty("Name").ShouldBe("John"); //Defined in both classes
+ personDto.GetProperty("ChildCount").ShouldBe(0); //Not defined in the source, but was set to the default value by ExtensibleTestPersonDto constructor
+ personDto.GetProperty("CityName").ShouldBeNull(); //Ignored, but was set to the default value by ExtensibleTestPersonDto constructor
+ personDto.HasProperty("Age").ShouldBeFalse(); //Not defined on the destination
+ personDto.HasProperty("Sex").ShouldBeFalse(); //Not defined in both classes
+ }
+
[Fact]
public void MapExtraProperties_Also_Should_Map_To_RegularProperties()
{
@@ -65,6 +84,22 @@ public class AbpAutoMapperExtensibleDtoExtensions_Tests : AbpIntegratedTest(person);
+
+ personDto.HasProperty("Name").ShouldBe(false);
+ personDto.Name.ShouldBe("John");
+
+ personDto.HasProperty("Age").ShouldBe(false);
+ personDto.Age.ShouldBe(42);
+ }
+
[Fact(Skip = "Mapperly requires IHasExtraProperties.ExtraPropertyDictionary to be marked as nullable")]
public void MapExtraPropertiesTo_Should_Ignored_If_ExtraProperties_Is_Null()
{
diff --git a/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/AbpReverseMapperly_Tests.cs b/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/AbpReverseMapperly_Tests.cs
index 5eeebe6b82..5d166f7dc8 100644
--- a/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/AbpReverseMapperly_Tests.cs
+++ b/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/AbpReverseMapperly_Tests.cs
@@ -1,6 +1,9 @@
+using System;
using Microsoft.Extensions.DependencyInjection;
using Riok.Mapperly.Abstractions;
using Shouldly;
+using Volo.Abp.Data;
+using Volo.Abp.Mapperly.SampleClasses;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Testing;
using Xunit;
@@ -83,4 +86,17 @@ public class AbpReverseMapperly_Tests : AbpIntegratedTest
myClass.Id.ShouldBe("2");
myClass.Name.ShouldBe("BeforeReverseMap Test2 AfterReverseMap");
}
+
+ [Fact]
+ public void MapExtraProperties_Should_Filter_With_Single_Parameter_ReverseMap()
+ {
+ var dto = new ExtensibleReverseDto { Id = Guid.NewGuid() }
+ .SetProperty("Tag", "ok")
+ .SetProperty("Secret", "leaked");
+
+ var entity = _objectMapper.Map(dto);
+
+ entity.GetProperty("Tag").ShouldBe("ok");
+ entity.HasProperty("Secret").ShouldBeFalse();
+ }
}
diff --git a/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/ExtraProperties_Dictionary_Reference_Tests.cs b/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/ExtraProperties_Dictionary_Reference_Tests.cs
index e5453d09a3..6334422c09 100644
--- a/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/ExtraProperties_Dictionary_Reference_Tests.cs
+++ b/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/ExtraProperties_Dictionary_Reference_Tests.cs
@@ -101,6 +101,28 @@ public class ExtraProperties_Dictionary_Reference_Tests : AbpIntegratedTest(source);
+
+ ReferenceEquals(source.ExtraProperties, originalSourceReference).ShouldBeTrue();
+ ReferenceEquals(source.ExtraProperties, destination.ExtraProperties).ShouldBeFalse();
+
+ destination.ExtraProperties["TestProperty"].ShouldBe("TestValue");
+ destination.ExtraProperties["NumberProperty"].ShouldBe(42);
+ }
+
[Fact]
public void Should_Handle_Readonly_ExtraProperties_Gracefully()
{
diff --git a/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/MapperlyTestModule.cs b/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/MapperlyTestModule.cs
index 8ff5ca2eb1..5153109472 100644
--- a/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/MapperlyTestModule.cs
+++ b/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/MapperlyTestModule.cs
@@ -1,5 +1,7 @@
-using Volo.Abp.Modularity;
+using Volo.Abp.Mapperly.SampleClasses;
+using Volo.Abp.Modularity;
using Volo.Abp.ObjectExtending;
+using Volo.Abp.Threading;
namespace Volo.Abp.Mapperly;
@@ -9,5 +11,17 @@ namespace Volo.Abp.Mapperly;
)]
public class MapperlyTestModule : AbpModule
{
+ private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ OneTimeRunner.Run(() =>
+ {
+ ObjectExtensionManager.Instance
+ .AddOrUpdateProperty("Tag")
+ .AddOrUpdateProperty("Secret")
+ .AddOrUpdateProperty("Tag")
+ .AddOrUpdateProperty("Secret");
+ });
+ }
}
diff --git a/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/SampleClasses/MapperlyMappers.cs b/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/SampleClasses/MapperlyMappers.cs
index eb11d16be1..218ed36e1c 100644
--- a/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/SampleClasses/MapperlyMappers.cs
+++ b/framework/test/Volo.Abp.Mapperly.Tests/Volo/Abp/Mapperly/SampleClasses/MapperlyMappers.cs
@@ -82,4 +82,27 @@ public partial class TestEntityWithReadonlyExtraPropertiesMapper : MapperBase
+{
+ public override partial ExtensibleReverseDto Map(ExtensibleReverseEntity source);
+
+ public override partial void Map(ExtensibleReverseEntity source, ExtensibleReverseDto destination);
+
+ public override partial ExtensibleReverseEntity ReverseMap(ExtensibleReverseDto destination);
+
+ public override partial void ReverseMap(ExtensibleReverseDto destination, ExtensibleReverseEntity source);
}
\ No newline at end of file
diff --git a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs
index 9e3fff950b..676f37aa47 100644
--- a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs
+++ b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs
@@ -159,6 +159,23 @@ public class IdentityServerSupportedLoginModel : LoginModel
if (result.IsNotAllowed)
{
+ var notAllowedUser = await UserManager.FindByNameAsync(LoginInput.UserNameOrEmailAddress) ??
+ await UserManager.FindByEmailAsync(LoginInput.UserNameOrEmailAddress);
+ if (notAllowedUser != null)
+ {
+ using (CurrentTenant.Change(notAllowedUser.TenantId))
+ {
+ await IdentityOptions.SetAsync();
+ if ((notAllowedUser.ShouldChangePasswordOnNextLogin ||
+ await UserManager.ShouldPeriodicallyChangePasswordAsync(notAllowedUser)) &&
+ !await UserManager.CheckPasswordAsync(notAllowedUser, LoginInput.Password))
+ {
+ Alerts.Danger(L["InvalidUserNameOrPassword"]);
+ return Page();
+ }
+ }
+ }
+
Alerts.Warning(L["LoginIsNotAllowed"]);
return Page();
}
diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs
index cef45c2f4f..57fcbe9e46 100644
--- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs
+++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs
@@ -130,6 +130,23 @@ public class LoginModel : AccountPageModel
if (result.IsNotAllowed)
{
+ var notAllowedUser = await UserManager.FindByNameAsync(LoginInput.UserNameOrEmailAddress) ??
+ await UserManager.FindByEmailAsync(LoginInput.UserNameOrEmailAddress);
+ if (notAllowedUser != null)
+ {
+ using (CurrentTenant.Change(notAllowedUser.TenantId))
+ {
+ await IdentityOptions.SetAsync();
+ if ((notAllowedUser.ShouldChangePasswordOnNextLogin ||
+ await UserManager.ShouldPeriodicallyChangePasswordAsync(notAllowedUser)) &&
+ !await UserManager.CheckPasswordAsync(notAllowedUser, LoginInput.Password))
+ {
+ Alerts.Danger(L["InvalidUserNameOrPassword"]);
+ return Page();
+ }
+ }
+ }
+
Alerts.Warning(L["LoginIsNotAllowed"]);
return Page();
}
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 243fc50605..cfc328b308 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": "~10.4.0",
- "@abp/prismjs": "~10.4.0",
- "@abp/highlight.js": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.shared": "~10.4.1",
+ "@abp/prismjs": "~10.4.1",
+ "@abp/highlight.js": "~10.4.1"
}
}
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 0686fa964b..a0ca5d6eb2 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,204 +2,204 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8"
- integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.4.0"
- "@abp/bootstrap" "~10.4.0"
- "@abp/bootstrap-datepicker" "~10.4.0"
- "@abp/bootstrap-daterangepicker" "~10.4.0"
- "@abp/datatables.net-bs5" "~10.4.0"
- "@abp/font-awesome" "~10.4.0"
- "@abp/jquery-validation-unobtrusive" "~10.4.0"
- "@abp/lodash" "~10.4.0"
- "@abp/luxon" "~10.4.0"
- "@abp/malihu-custom-scrollbar-plugin" "~10.4.0"
- "@abp/moment" "~10.4.0"
- "@abp/select2" "~10.4.0"
- "@abp/sweetalert2" "~10.4.0"
- "@abp/timeago" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c"
- integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw==
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
+ integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~10.4.1"
+ "@abp/bootstrap" "~10.4.1"
+ "@abp/bootstrap-datepicker" "~10.4.1"
+ "@abp/bootstrap-daterangepicker" "~10.4.1"
+ "@abp/datatables.net-bs5" "~10.4.1"
+ "@abp/font-awesome" "~10.4.1"
+ "@abp/jquery-validation-unobtrusive" "~10.4.1"
+ "@abp/lodash" "~10.4.1"
+ "@abp/luxon" "~10.4.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
+ "@abp/moment" "~10.4.1"
+ "@abp/select2" "~10.4.1"
+ "@abp/sweetalert2" "~10.4.1"
+ "@abp/timeago" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
+ integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e"
- integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA==
+"@abp/bootstrap-datepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
+ integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a"
- integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA==
+"@abp/bootstrap-daterangepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
+ integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies:
- "@abp/moment" "~10.4.0"
+ "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f"
- integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg==
+"@abp/bootstrap@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
+ integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies:
- "@abp/core" "~10.4.0"
- "@abp/popper.js" "~10.4.0"
+ "@abp/core" "~10.4.1"
+ "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8"
-"@abp/clipboard@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0.tgz#bac5854af4f8bcaa987d39f234edd58b675a71c8"
- integrity sha512-KTTzCDEe+wjpGLdud8MHlwnPr/NdzFDmfHtENgESdIa5KilGOwy2wv24lQ5cyJOB4ftoJzkBaHinKJxg/KU0pw==
+"@abp/clipboard@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.1.tgz#eec933cef5a3d740e70e8736be6a68092dece645"
+ integrity sha512-xvAuXcY099h3IlBYKhLG2mwfZnTRmcu5RqBp+PJz33uOMM4ZcdzxQ5lAD73ukYX32SuSE0EJaSw5SV2jqT3RGw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
clipboard "^2.0.11"
-"@abp/core@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd"
- integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q==
+"@abp/core@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
+ integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies:
- "@abp/utils" "~10.4.0"
+ "@abp/utils" "~10.4.1"
-"@abp/datatables.net-bs5@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1"
- integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw==
+"@abp/datatables.net-bs5@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
+ integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies:
- "@abp/datatables.net" "~10.4.0"
+ "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181"
- integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg==
+"@abp/datatables.net@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
+ integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce"
- integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg==
+"@abp/font-awesome@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
+ integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/highlight.js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.0.tgz#b1b53329743f3eeb203ec35ebcf9c6e79c9fbe93"
- integrity sha512-L0mL/AErFsYdJbCLUu22lm/fn+Eelc0H57OQrUAzVy+22XXALiFtyq/cci3sjOcxfpf2CW/v+z0JKCouuJd7Ag==
+"@abp/highlight.js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.1.tgz#9e956ae62c9640253db321aa7eaa31f99220fa41"
+ integrity sha512-AU//tBPE7jsONdZHXAS6eFsiqRCRT4p0MeasHqVfFbdZztzlGbnHr4En++9b6Jpqf0WHQts0sBr06wakmI/oVQ==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@highlightjs/cdn-assets" "~11.11.1"
-"@abp/jquery-validation-unobtrusive@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88"
- integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg==
+"@abp/jquery-validation-unobtrusive@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
+ integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies:
- "@abp/jquery-validation" "~10.4.0"
+ "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5"
- integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA==
+"@abp/jquery-validation@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
+ integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1"
- integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg==
+"@abp/jquery@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
+ integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
jquery "~3.7.1"
-"@abp/lodash@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd"
- integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA==
+"@abp/lodash@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
+ integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
lodash "^4.18.1"
-"@abp/luxon@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90"
- integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw==
+"@abp/luxon@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
+ integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7"
- integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA==
+"@abp/malihu-custom-scrollbar-plugin@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
+ integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d"
- integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg==
+"@abp/moment@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
+ integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84"
- integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw==
+"@abp/popper.js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
+ integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8"
-"@abp/prismjs@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0.tgz#0061d71d18252bc1e66e763aab6d81a7b4fe51b7"
- integrity sha512-kjV11XNt2uP01zlhrrScr4WA27lgZ03Cz3svA7/HHnfhFy76MHYo+Dyn7sS4Gp3UobMcf1QWHl4KQNCUnYNTOQ==
+"@abp/prismjs@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.1.tgz#cb1144481ba34b1150ba2587ed3940d217d16abd"
+ integrity sha512-kC9VnxwTLLToiRXP6vHQD0nBoHQvQKHNssTHM4OsNjazToAVgqfHJyEqGsJwb1uulwR05vMspST2MbMFS8fx7g==
dependencies:
- "@abp/clipboard" "~10.4.0"
- "@abp/core" "~10.4.0"
+ "@abp/clipboard" "~10.4.1"
+ "@abp/core" "~10.4.1"
prismjs "^1.30.0"
-"@abp/select2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8"
- integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww==
+"@abp/select2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
+ integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73"
- integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw==
+"@abp/sweetalert2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
+ integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d"
- integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg==
+"@abp/timeago@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
+ integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
timeago "^1.6.7"
-"@abp/utils@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226"
- integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw==
+"@abp/utils@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
+ integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
index 432c74459b..4171ca7f7e 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": "~10.4.0",
- "@abp/prismjs": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1",
+ "@abp/prismjs": "~10.4.1"
},
"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 7b7ba0a9a7..73021ba83c 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,203 +2,203 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0"
- integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8"
- integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.4.0"
- "@abp/bootstrap" "~10.4.0"
- "@abp/bootstrap-datepicker" "~10.4.0"
- "@abp/bootstrap-daterangepicker" "~10.4.0"
- "@abp/datatables.net-bs5" "~10.4.0"
- "@abp/font-awesome" "~10.4.0"
- "@abp/jquery-validation-unobtrusive" "~10.4.0"
- "@abp/lodash" "~10.4.0"
- "@abp/luxon" "~10.4.0"
- "@abp/malihu-custom-scrollbar-plugin" "~10.4.0"
- "@abp/moment" "~10.4.0"
- "@abp/select2" "~10.4.0"
- "@abp/sweetalert2" "~10.4.0"
- "@abp/timeago" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c"
- integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
+ integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
+ integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~10.4.1"
+ "@abp/bootstrap" "~10.4.1"
+ "@abp/bootstrap-datepicker" "~10.4.1"
+ "@abp/bootstrap-daterangepicker" "~10.4.1"
+ "@abp/datatables.net-bs5" "~10.4.1"
+ "@abp/font-awesome" "~10.4.1"
+ "@abp/jquery-validation-unobtrusive" "~10.4.1"
+ "@abp/lodash" "~10.4.1"
+ "@abp/luxon" "~10.4.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
+ "@abp/moment" "~10.4.1"
+ "@abp/select2" "~10.4.1"
+ "@abp/sweetalert2" "~10.4.1"
+ "@abp/timeago" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
+ integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e"
- integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA==
+"@abp/bootstrap-datepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
+ integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a"
- integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA==
+"@abp/bootstrap-daterangepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
+ integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies:
- "@abp/moment" "~10.4.0"
+ "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f"
- integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg==
+"@abp/bootstrap@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
+ integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies:
- "@abp/core" "~10.4.0"
- "@abp/popper.js" "~10.4.0"
+ "@abp/core" "~10.4.1"
+ "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8"
-"@abp/clipboard@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0.tgz#bac5854af4f8bcaa987d39f234edd58b675a71c8"
- integrity sha512-KTTzCDEe+wjpGLdud8MHlwnPr/NdzFDmfHtENgESdIa5KilGOwy2wv24lQ5cyJOB4ftoJzkBaHinKJxg/KU0pw==
+"@abp/clipboard@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.1.tgz#eec933cef5a3d740e70e8736be6a68092dece645"
+ integrity sha512-xvAuXcY099h3IlBYKhLG2mwfZnTRmcu5RqBp+PJz33uOMM4ZcdzxQ5lAD73ukYX32SuSE0EJaSw5SV2jqT3RGw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
clipboard "^2.0.11"
-"@abp/core@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd"
- integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q==
+"@abp/core@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
+ integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies:
- "@abp/utils" "~10.4.0"
+ "@abp/utils" "~10.4.1"
-"@abp/datatables.net-bs5@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1"
- integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw==
+"@abp/datatables.net-bs5@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
+ integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies:
- "@abp/datatables.net" "~10.4.0"
+ "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181"
- integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg==
+"@abp/datatables.net@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
+ integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce"
- integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg==
+"@abp/font-awesome@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
+ integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88"
- integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg==
+"@abp/jquery-validation-unobtrusive@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
+ integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies:
- "@abp/jquery-validation" "~10.4.0"
+ "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5"
- integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA==
+"@abp/jquery-validation@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
+ integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1"
- integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg==
+"@abp/jquery@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
+ integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
jquery "~3.7.1"
-"@abp/lodash@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd"
- integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA==
+"@abp/lodash@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
+ integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
lodash "^4.18.1"
-"@abp/luxon@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90"
- integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw==
+"@abp/luxon@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
+ integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7"
- integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA==
+"@abp/malihu-custom-scrollbar-plugin@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
+ integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d"
- integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg==
+"@abp/moment@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
+ integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84"
- integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw==
+"@abp/popper.js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
+ integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8"
-"@abp/prismjs@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0.tgz#0061d71d18252bc1e66e763aab6d81a7b4fe51b7"
- integrity sha512-kjV11XNt2uP01zlhrrScr4WA27lgZ03Cz3svA7/HHnfhFy76MHYo+Dyn7sS4Gp3UobMcf1QWHl4KQNCUnYNTOQ==
+"@abp/prismjs@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.1.tgz#cb1144481ba34b1150ba2587ed3940d217d16abd"
+ integrity sha512-kC9VnxwTLLToiRXP6vHQD0nBoHQvQKHNssTHM4OsNjazToAVgqfHJyEqGsJwb1uulwR05vMspST2MbMFS8fx7g==
dependencies:
- "@abp/clipboard" "~10.4.0"
- "@abp/core" "~10.4.0"
+ "@abp/clipboard" "~10.4.1"
+ "@abp/core" "~10.4.1"
prismjs "^1.30.0"
-"@abp/select2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8"
- integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww==
+"@abp/select2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
+ integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73"
- integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw==
+"@abp/sweetalert2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
+ integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d"
- integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg==
+"@abp/timeago@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
+ integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
timeago "^1.6.7"
-"@abp/utils@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226"
- integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw==
+"@abp/utils@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
+ integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
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 2ed7bc314a..fd5daaa1b3 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": "~10.4.0",
- "@abp/blogging": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1",
+ "@abp/blogging": "~10.4.1"
}
}
diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
index e9417a19ba..011d7af860 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
+++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
@@ -2,229 +2,229 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0"
- integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8"
- integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.4.0"
- "@abp/bootstrap" "~10.4.0"
- "@abp/bootstrap-datepicker" "~10.4.0"
- "@abp/bootstrap-daterangepicker" "~10.4.0"
- "@abp/datatables.net-bs5" "~10.4.0"
- "@abp/font-awesome" "~10.4.0"
- "@abp/jquery-validation-unobtrusive" "~10.4.0"
- "@abp/lodash" "~10.4.0"
- "@abp/luxon" "~10.4.0"
- "@abp/malihu-custom-scrollbar-plugin" "~10.4.0"
- "@abp/moment" "~10.4.0"
- "@abp/select2" "~10.4.0"
- "@abp/sweetalert2" "~10.4.0"
- "@abp/timeago" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c"
- integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
+ integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
+ integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~10.4.1"
+ "@abp/bootstrap" "~10.4.1"
+ "@abp/bootstrap-datepicker" "~10.4.1"
+ "@abp/bootstrap-daterangepicker" "~10.4.1"
+ "@abp/datatables.net-bs5" "~10.4.1"
+ "@abp/font-awesome" "~10.4.1"
+ "@abp/jquery-validation-unobtrusive" "~10.4.1"
+ "@abp/lodash" "~10.4.1"
+ "@abp/luxon" "~10.4.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
+ "@abp/moment" "~10.4.1"
+ "@abp/select2" "~10.4.1"
+ "@abp/sweetalert2" "~10.4.1"
+ "@abp/timeago" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
+ integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/blogging@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-10.4.0.tgz#ae468b0cdfdd011fcb709b627dc9cb7a3076506b"
- integrity sha512-UHoEeo3lBTXA4TpkPkOSaNklsbB4MG6OC6oM2l9ApihMzJyKV3osczBr8COZ+awpRGCsEAjotOw8OMIVH4evcQ==
+"@abp/blogging@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-10.4.1.tgz#04a2409ac5fb52a7ebee66b1c1b6e9471076fd06"
+ integrity sha512-G6wwFKfDnxqlUMQVEROTOg6gqyP5epJxh0wWF2jzhxIiwsrzIWK8CQdNIJJt7+IF7aWJBtuo6gWkftuv1wpGhw==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0"
- "@abp/owl.carousel" "~10.4.0"
- "@abp/prismjs" "~10.4.0"
- "@abp/tui-editor" "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.1"
+ "@abp/owl.carousel" "~10.4.1"
+ "@abp/prismjs" "~10.4.1"
+ "@abp/tui-editor" "~10.4.1"
-"@abp/bootstrap-datepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e"
- integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA==
+"@abp/bootstrap-datepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
+ integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a"
- integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA==
+"@abp/bootstrap-daterangepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
+ integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies:
- "@abp/moment" "~10.4.0"
+ "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f"
- integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg==
+"@abp/bootstrap@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
+ integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies:
- "@abp/core" "~10.4.0"
- "@abp/popper.js" "~10.4.0"
+ "@abp/core" "~10.4.1"
+ "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8"
-"@abp/clipboard@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0.tgz#bac5854af4f8bcaa987d39f234edd58b675a71c8"
- integrity sha512-KTTzCDEe+wjpGLdud8MHlwnPr/NdzFDmfHtENgESdIa5KilGOwy2wv24lQ5cyJOB4ftoJzkBaHinKJxg/KU0pw==
+"@abp/clipboard@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.1.tgz#eec933cef5a3d740e70e8736be6a68092dece645"
+ integrity sha512-xvAuXcY099h3IlBYKhLG2mwfZnTRmcu5RqBp+PJz33uOMM4ZcdzxQ5lAD73ukYX32SuSE0EJaSw5SV2jqT3RGw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
clipboard "^2.0.11"
-"@abp/core@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd"
- integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q==
+"@abp/core@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
+ integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies:
- "@abp/utils" "~10.4.0"
+ "@abp/utils" "~10.4.1"
-"@abp/datatables.net-bs5@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1"
- integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw==
+"@abp/datatables.net-bs5@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
+ integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies:
- "@abp/datatables.net" "~10.4.0"
+ "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181"
- integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg==
+"@abp/datatables.net@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
+ integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce"
- integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg==
+"@abp/font-awesome@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
+ integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88"
- integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg==
+"@abp/jquery-validation-unobtrusive@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
+ integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies:
- "@abp/jquery-validation" "~10.4.0"
+ "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5"
- integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA==
+"@abp/jquery-validation@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
+ integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1"
- integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg==
+"@abp/jquery@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
+ integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
jquery "~3.7.1"
-"@abp/lodash@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd"
- integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA==
+"@abp/lodash@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
+ integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
lodash "^4.18.1"
-"@abp/luxon@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90"
- integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw==
+"@abp/luxon@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
+ integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7"
- integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA==
+"@abp/malihu-custom-scrollbar-plugin@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
+ integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d"
- integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg==
+"@abp/moment@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
+ integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies:
moment "^2.30.1"
-"@abp/owl.carousel@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-10.4.0.tgz#03cb3abec37b9e61196982d20f8b48ca9ff9818a"
- integrity sha512-wSMMMVJ5LRSmmV4jXekrWJdI7MQ+37LWKu83dQRD1Bwegy2USuB2efBcwVB/juI2iaxP9b0jTrKmxTlFPkNbCg==
+"@abp/owl.carousel@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-10.4.1.tgz#4f05616f56c37efa32c90a0ee92d528f12816e3b"
+ integrity sha512-FqyqIG6ezNe2aFs/Xg3UIlVER03mF+alP0jE/wMewQAzB9btbhcBC6icG0RRqs6z5PPt3I85j/EhyjMQQAQMeg==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
owl.carousel "^2.3.4"
-"@abp/popper.js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84"
- integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw==
+"@abp/popper.js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
+ integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8"
-"@abp/prismjs@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0.tgz#0061d71d18252bc1e66e763aab6d81a7b4fe51b7"
- integrity sha512-kjV11XNt2uP01zlhrrScr4WA27lgZ03Cz3svA7/HHnfhFy76MHYo+Dyn7sS4Gp3UobMcf1QWHl4KQNCUnYNTOQ==
+"@abp/prismjs@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.1.tgz#cb1144481ba34b1150ba2587ed3940d217d16abd"
+ integrity sha512-kC9VnxwTLLToiRXP6vHQD0nBoHQvQKHNssTHM4OsNjazToAVgqfHJyEqGsJwb1uulwR05vMspST2MbMFS8fx7g==
dependencies:
- "@abp/clipboard" "~10.4.0"
- "@abp/core" "~10.4.0"
+ "@abp/clipboard" "~10.4.1"
+ "@abp/core" "~10.4.1"
prismjs "^1.30.0"
-"@abp/select2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8"
- integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww==
+"@abp/select2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
+ integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73"
- integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw==
+"@abp/sweetalert2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
+ integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d"
- integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg==
+"@abp/timeago@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
+ integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
timeago "^1.6.7"
-"@abp/tui-editor@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.0.tgz#8041b62eb464f4a8adddc043904e2bc8475d45e3"
- integrity sha512-SbbAs3V94UaF6xaMIaRNpDE9KSvOU45XZl24jCWjCAwkyTkN0bHlpnqs0UuJUtCnnQAzj4C+AvVy5ykrDKGtIg==
+"@abp/tui-editor@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.1.tgz#e7012ed869a5de852f454e14fbe1342c55d1c07b"
+ integrity sha512-lFcSkESJnAjIqiU12F19U8BYko/jLTXWN6s0uqvgQ14qhPPWMr13PidMjijj/x/m0wtFg2lHwbAFt3nl+6O+sA==
dependencies:
- "@abp/jquery" "~10.4.0"
- "@abp/prismjs" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
+ "@abp/prismjs" "~10.4.1"
-"@abp/utils@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226"
- integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw==
+"@abp/utils@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
+ integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
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 667968540e..0f2ec115ca 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": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1"
}
}
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
index 6cbad6797a..1504b8a6e1 100644
--- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
@@ -2,186 +2,186 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0"
- integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
+ integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.1"
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8"
- integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A==
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
+ integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.4.0"
- "@abp/bootstrap" "~10.4.0"
- "@abp/bootstrap-datepicker" "~10.4.0"
- "@abp/bootstrap-daterangepicker" "~10.4.0"
- "@abp/datatables.net-bs5" "~10.4.0"
- "@abp/font-awesome" "~10.4.0"
- "@abp/jquery-validation-unobtrusive" "~10.4.0"
- "@abp/lodash" "~10.4.0"
- "@abp/luxon" "~10.4.0"
- "@abp/malihu-custom-scrollbar-plugin" "~10.4.0"
- "@abp/moment" "~10.4.0"
- "@abp/select2" "~10.4.0"
- "@abp/sweetalert2" "~10.4.0"
- "@abp/timeago" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c"
- integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw==
+ "@abp/aspnetcore.mvc.ui" "~10.4.1"
+ "@abp/bootstrap" "~10.4.1"
+ "@abp/bootstrap-datepicker" "~10.4.1"
+ "@abp/bootstrap-daterangepicker" "~10.4.1"
+ "@abp/datatables.net-bs5" "~10.4.1"
+ "@abp/font-awesome" "~10.4.1"
+ "@abp/jquery-validation-unobtrusive" "~10.4.1"
+ "@abp/lodash" "~10.4.1"
+ "@abp/luxon" "~10.4.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
+ "@abp/moment" "~10.4.1"
+ "@abp/select2" "~10.4.1"
+ "@abp/sweetalert2" "~10.4.1"
+ "@abp/timeago" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
+ integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e"
- integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA==
+"@abp/bootstrap-datepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
+ integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a"
- integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA==
+"@abp/bootstrap-daterangepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
+ integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies:
- "@abp/moment" "~10.4.0"
+ "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f"
- integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg==
+"@abp/bootstrap@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
+ integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies:
- "@abp/core" "~10.4.0"
- "@abp/popper.js" "~10.4.0"
+ "@abp/core" "~10.4.1"
+ "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8"
-"@abp/core@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd"
- integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q==
+"@abp/core@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
+ integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies:
- "@abp/utils" "~10.4.0"
+ "@abp/utils" "~10.4.1"
-"@abp/datatables.net-bs5@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1"
- integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw==
+"@abp/datatables.net-bs5@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
+ integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies:
- "@abp/datatables.net" "~10.4.0"
+ "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181"
- integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg==
+"@abp/datatables.net@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
+ integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce"
- integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg==
+"@abp/font-awesome@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
+ integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88"
- integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg==
+"@abp/jquery-validation-unobtrusive@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
+ integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies:
- "@abp/jquery-validation" "~10.4.0"
+ "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5"
- integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA==
+"@abp/jquery-validation@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
+ integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1"
- integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg==
+"@abp/jquery@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
+ integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
jquery "~3.7.1"
-"@abp/lodash@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd"
- integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA==
+"@abp/lodash@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
+ integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
lodash "^4.18.1"
-"@abp/luxon@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90"
- integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw==
+"@abp/luxon@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
+ integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7"
- integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA==
+"@abp/malihu-custom-scrollbar-plugin@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
+ integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d"
- integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg==
+"@abp/moment@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
+ integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84"
- integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw==
+"@abp/popper.js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
+ integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8"
-"@abp/select2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8"
- integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww==
+"@abp/select2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
+ integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73"
- integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw==
+"@abp/sweetalert2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
+ integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d"
- integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg==
+"@abp/timeago@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
+ integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
timeago "^1.6.7"
-"@abp/utils@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226"
- integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw==
+"@abp/utils@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
+ integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json
index d752aab145..cae40d9302 100644
--- a/modules/cms-kit/angular/package.json
+++ b/modules/cms-kit/angular/package.json
@@ -17,9 +17,9 @@
"dependencies": {
"@abp/ng.account": "~10.4.0",
"@abp/ng.identity": "~10.4.0",
- "@abp/ng.setting-management": "~10.4.0",
+ "@abp/ng.setting-management": "~10.4.1",
"@abp/ng.tenant-management": "~10.4.0",
- "@abp/ng.theme.basic": "~10.4.0",
+ "@abp/ng.theme.basic": "~10.4.1",
"@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 d1c09fb92e..27fac1bc53 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": ">=10.4.0",
- "@abp/ng.theme.shared": ">=10.4.0"
+ "@abp/ng.core": ">=10.4.1",
+ "@abp/ng.theme.shared": ">=10.4.1"
},
"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 9ab2f0e3a0..ee17e2827b 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": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1"
}
}
diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
index 6cbad6797a..1504b8a6e1 100644
--- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
@@ -2,186 +2,186 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0"
- integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
+ integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.1"
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8"
- integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A==
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
+ integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.4.0"
- "@abp/bootstrap" "~10.4.0"
- "@abp/bootstrap-datepicker" "~10.4.0"
- "@abp/bootstrap-daterangepicker" "~10.4.0"
- "@abp/datatables.net-bs5" "~10.4.0"
- "@abp/font-awesome" "~10.4.0"
- "@abp/jquery-validation-unobtrusive" "~10.4.0"
- "@abp/lodash" "~10.4.0"
- "@abp/luxon" "~10.4.0"
- "@abp/malihu-custom-scrollbar-plugin" "~10.4.0"
- "@abp/moment" "~10.4.0"
- "@abp/select2" "~10.4.0"
- "@abp/sweetalert2" "~10.4.0"
- "@abp/timeago" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c"
- integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw==
+ "@abp/aspnetcore.mvc.ui" "~10.4.1"
+ "@abp/bootstrap" "~10.4.1"
+ "@abp/bootstrap-datepicker" "~10.4.1"
+ "@abp/bootstrap-daterangepicker" "~10.4.1"
+ "@abp/datatables.net-bs5" "~10.4.1"
+ "@abp/font-awesome" "~10.4.1"
+ "@abp/jquery-validation-unobtrusive" "~10.4.1"
+ "@abp/lodash" "~10.4.1"
+ "@abp/luxon" "~10.4.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
+ "@abp/moment" "~10.4.1"
+ "@abp/select2" "~10.4.1"
+ "@abp/sweetalert2" "~10.4.1"
+ "@abp/timeago" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
+ integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e"
- integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA==
+"@abp/bootstrap-datepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
+ integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a"
- integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA==
+"@abp/bootstrap-daterangepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
+ integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies:
- "@abp/moment" "~10.4.0"
+ "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f"
- integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg==
+"@abp/bootstrap@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
+ integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies:
- "@abp/core" "~10.4.0"
- "@abp/popper.js" "~10.4.0"
+ "@abp/core" "~10.4.1"
+ "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8"
-"@abp/core@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd"
- integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q==
+"@abp/core@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
+ integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies:
- "@abp/utils" "~10.4.0"
+ "@abp/utils" "~10.4.1"
-"@abp/datatables.net-bs5@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1"
- integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw==
+"@abp/datatables.net-bs5@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
+ integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies:
- "@abp/datatables.net" "~10.4.0"
+ "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181"
- integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg==
+"@abp/datatables.net@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
+ integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce"
- integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg==
+"@abp/font-awesome@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
+ integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88"
- integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg==
+"@abp/jquery-validation-unobtrusive@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
+ integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies:
- "@abp/jquery-validation" "~10.4.0"
+ "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5"
- integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA==
+"@abp/jquery-validation@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
+ integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1"
- integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg==
+"@abp/jquery@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
+ integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
jquery "~3.7.1"
-"@abp/lodash@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd"
- integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA==
+"@abp/lodash@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
+ integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
lodash "^4.18.1"
-"@abp/luxon@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90"
- integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw==
+"@abp/luxon@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
+ integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7"
- integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA==
+"@abp/malihu-custom-scrollbar-plugin@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
+ integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d"
- integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg==
+"@abp/moment@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
+ integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84"
- integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw==
+"@abp/popper.js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
+ integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8"
-"@abp/select2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8"
- integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww==
+"@abp/select2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
+ integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73"
- integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw==
+"@abp/sweetalert2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
+ integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d"
- integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg==
+"@abp/timeago@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
+ integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
timeago "^1.6.7"
-"@abp/utils@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226"
- integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw==
+"@abp/utils@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
+ integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
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 0b8b07c6be..0bb873130f 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": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1"
}
}
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 6cbad6797a..1504b8a6e1 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
@@ -2,186 +2,186 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0"
- integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
+ integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.1"
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8"
- integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A==
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
+ integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.4.0"
- "@abp/bootstrap" "~10.4.0"
- "@abp/bootstrap-datepicker" "~10.4.0"
- "@abp/bootstrap-daterangepicker" "~10.4.0"
- "@abp/datatables.net-bs5" "~10.4.0"
- "@abp/font-awesome" "~10.4.0"
- "@abp/jquery-validation-unobtrusive" "~10.4.0"
- "@abp/lodash" "~10.4.0"
- "@abp/luxon" "~10.4.0"
- "@abp/malihu-custom-scrollbar-plugin" "~10.4.0"
- "@abp/moment" "~10.4.0"
- "@abp/select2" "~10.4.0"
- "@abp/sweetalert2" "~10.4.0"
- "@abp/timeago" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c"
- integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw==
+ "@abp/aspnetcore.mvc.ui" "~10.4.1"
+ "@abp/bootstrap" "~10.4.1"
+ "@abp/bootstrap-datepicker" "~10.4.1"
+ "@abp/bootstrap-daterangepicker" "~10.4.1"
+ "@abp/datatables.net-bs5" "~10.4.1"
+ "@abp/font-awesome" "~10.4.1"
+ "@abp/jquery-validation-unobtrusive" "~10.4.1"
+ "@abp/lodash" "~10.4.1"
+ "@abp/luxon" "~10.4.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
+ "@abp/moment" "~10.4.1"
+ "@abp/select2" "~10.4.1"
+ "@abp/sweetalert2" "~10.4.1"
+ "@abp/timeago" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
+ integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e"
- integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA==
+"@abp/bootstrap-datepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
+ integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a"
- integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA==
+"@abp/bootstrap-daterangepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
+ integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies:
- "@abp/moment" "~10.4.0"
+ "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f"
- integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg==
+"@abp/bootstrap@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
+ integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies:
- "@abp/core" "~10.4.0"
- "@abp/popper.js" "~10.4.0"
+ "@abp/core" "~10.4.1"
+ "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8"
-"@abp/core@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd"
- integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q==
+"@abp/core@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
+ integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies:
- "@abp/utils" "~10.4.0"
+ "@abp/utils" "~10.4.1"
-"@abp/datatables.net-bs5@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1"
- integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw==
+"@abp/datatables.net-bs5@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
+ integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies:
- "@abp/datatables.net" "~10.4.0"
+ "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181"
- integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg==
+"@abp/datatables.net@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
+ integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce"
- integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg==
+"@abp/font-awesome@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
+ integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88"
- integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg==
+"@abp/jquery-validation-unobtrusive@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
+ integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies:
- "@abp/jquery-validation" "~10.4.0"
+ "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5"
- integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA==
+"@abp/jquery-validation@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
+ integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1"
- integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg==
+"@abp/jquery@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
+ integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
jquery "~3.7.1"
-"@abp/lodash@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd"
- integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA==
+"@abp/lodash@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
+ integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
lodash "^4.18.1"
-"@abp/luxon@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90"
- integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw==
+"@abp/luxon@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
+ integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7"
- integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA==
+"@abp/malihu-custom-scrollbar-plugin@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
+ integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d"
- integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg==
+"@abp/moment@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
+ integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84"
- integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw==
+"@abp/popper.js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
+ integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8"
-"@abp/select2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8"
- integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww==
+"@abp/select2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
+ integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73"
- integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw==
+"@abp/sweetalert2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
+ integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d"
- integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg==
+"@abp/timeago@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
+ integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
timeago "^1.6.7"
-"@abp/utils@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226"
- integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw==
+"@abp/utils@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
+ integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
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 ba4f6cad1d..51c80608b4 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": "~10.4.0",
- "@abp/cms-kit": "10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1",
+ "@abp/cms-kit": "10.4.1"
}
}
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 22a1070b60..e0ea060438 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
@@ -2,294 +2,294 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0"
- integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8"
- integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.4.0"
- "@abp/bootstrap" "~10.4.0"
- "@abp/bootstrap-datepicker" "~10.4.0"
- "@abp/bootstrap-daterangepicker" "~10.4.0"
- "@abp/datatables.net-bs5" "~10.4.0"
- "@abp/font-awesome" "~10.4.0"
- "@abp/jquery-validation-unobtrusive" "~10.4.0"
- "@abp/lodash" "~10.4.0"
- "@abp/luxon" "~10.4.0"
- "@abp/malihu-custom-scrollbar-plugin" "~10.4.0"
- "@abp/moment" "~10.4.0"
- "@abp/select2" "~10.4.0"
- "@abp/sweetalert2" "~10.4.0"
- "@abp/timeago" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c"
- integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
+ integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
+ integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~10.4.1"
+ "@abp/bootstrap" "~10.4.1"
+ "@abp/bootstrap-datepicker" "~10.4.1"
+ "@abp/bootstrap-daterangepicker" "~10.4.1"
+ "@abp/datatables.net-bs5" "~10.4.1"
+ "@abp/font-awesome" "~10.4.1"
+ "@abp/jquery-validation-unobtrusive" "~10.4.1"
+ "@abp/lodash" "~10.4.1"
+ "@abp/luxon" "~10.4.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
+ "@abp/moment" "~10.4.1"
+ "@abp/select2" "~10.4.1"
+ "@abp/sweetalert2" "~10.4.1"
+ "@abp/timeago" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
+ integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e"
- integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA==
+"@abp/bootstrap-datepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
+ integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a"
- integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA==
+"@abp/bootstrap-daterangepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
+ integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies:
- "@abp/moment" "~10.4.0"
+ "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f"
- integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg==
+"@abp/bootstrap@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
+ integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies:
- "@abp/core" "~10.4.0"
- "@abp/popper.js" "~10.4.0"
+ "@abp/core" "~10.4.1"
+ "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8"
-"@abp/clipboard@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0.tgz#bac5854af4f8bcaa987d39f234edd58b675a71c8"
- integrity sha512-KTTzCDEe+wjpGLdud8MHlwnPr/NdzFDmfHtENgESdIa5KilGOwy2wv24lQ5cyJOB4ftoJzkBaHinKJxg/KU0pw==
+"@abp/clipboard@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.1.tgz#eec933cef5a3d740e70e8736be6a68092dece645"
+ integrity sha512-xvAuXcY099h3IlBYKhLG2mwfZnTRmcu5RqBp+PJz33uOMM4ZcdzxQ5lAD73ukYX32SuSE0EJaSw5SV2jqT3RGw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
clipboard "^2.0.11"
-"@abp/cms-kit.admin@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-10.4.0.tgz#f3d2272d8ab6adb60b7b23807b1d48a174411377"
- integrity sha512-klxpGOF4aiJevsZT+7zM/TpWfoEAXlBBWSrFWNtxMNMmYisOFEX2AWCDVl2lQvoEiwTFNR+D9zhuKYFdWKQXFQ==
+"@abp/cms-kit.admin@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-10.4.1.tgz#11b3359298f24522fd37c2184971a5d7757693d6"
+ integrity sha512-AENxQkn9s21xitgbIppA0FiqJjKTICvctx/gyITFn5NzyldENTZYvqSfBSttd9fweJoxgs6xWzaKd2aM1GvsGA==
dependencies:
- "@abp/codemirror" "~10.4.0"
- "@abp/jstree" "~10.4.0"
- "@abp/markdown-it" "~10.4.0"
- "@abp/slugify" "~10.4.0"
- "@abp/tui-editor" "~10.4.0"
- "@abp/uppy" "~10.4.0"
+ "@abp/codemirror" "~10.4.1"
+ "@abp/jstree" "~10.4.1"
+ "@abp/markdown-it" "~10.4.1"
+ "@abp/slugify" "~10.4.1"
+ "@abp/tui-editor" "~10.4.1"
+ "@abp/uppy" "~10.4.1"
-"@abp/cms-kit.public@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-10.4.0.tgz#a7f0c5b45f7cd4c6189311f4f293fa4ee09d4e2c"
- integrity sha512-LbQC0Q05fCuTa9ZXIcNYGp3b9vbdlFif/tL8LReNWVQQ2FgzjdtOoCajz9v4lfbqbjsQeH+fMir+gCQDQggYOQ==
+"@abp/cms-kit.public@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-10.4.1.tgz#d464e1e04acd6411c20403c708494b041a024d4b"
+ integrity sha512-e54WAu7/1yyJP6y6Ntgp75LxXR7LIvDEYlz01xdjVTVyiyU5M7QwwnNib8tNOEs4I5UDpj2pa+O7q641pOAyhA==
dependencies:
- "@abp/highlight.js" "~10.4.0"
- "@abp/star-rating-svg" "~10.4.0"
+ "@abp/highlight.js" "~10.4.1"
+ "@abp/star-rating-svg" "~10.4.1"
-"@abp/cms-kit@10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-10.4.0.tgz#03773131bf5e74d410f4657d68179328059a04c4"
- integrity sha512-7J93H3pWbsD0fAoEJP+ELkYMlcj+bC442ypB5sLrPDOBZ2cLB4Nji4m9D/17KMIb87vu7gNQuUnk+OhjpBrmFg==
+"@abp/cms-kit@10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-10.4.1.tgz#f275d861ea5012987ebe50ee3e0cff9dfc437c43"
+ integrity sha512-I2s1ma/ovMfGz2rmhkazVy1pPmPVDdV6wZoCo9G2mJA0OiqOs5sCbztIsrcOcQMKie3yczsGYLlGUr2RMrw8Xg==
dependencies:
- "@abp/cms-kit.admin" "~10.4.0"
- "@abp/cms-kit.public" "~10.4.0"
+ "@abp/cms-kit.admin" "~10.4.1"
+ "@abp/cms-kit.public" "~10.4.1"
-"@abp/codemirror@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-10.4.0.tgz#1e5f9a37dbaaa6484f67ce57a187263b8b95b860"
- integrity sha512-6C0AOVon9S89b+8SuBy3fuKq/CQ4rvgpJk+8o90veGm4s0BDZkyGbee/vaJItX7c3ZzAYpWdcO22ybUuJVHpJA==
+"@abp/codemirror@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-10.4.1.tgz#450cb7bd5091fa6fdf64a4115cf91c1864c51a32"
+ integrity sha512-yL0joL60tr2fpatrmu2tsSPlJNtwWU6neZURfXnWYdyP2D/LRDZK3OKw7YUA/XS7Mg5GdVfmht2DowYmWpRnQg==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
codemirror "^5.65.1"
-"@abp/core@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd"
- integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q==
+"@abp/core@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
+ integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies:
- "@abp/utils" "~10.4.0"
+ "@abp/utils" "~10.4.1"
-"@abp/datatables.net-bs5@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1"
- integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw==
+"@abp/datatables.net-bs5@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
+ integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies:
- "@abp/datatables.net" "~10.4.0"
+ "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181"
- integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg==
+"@abp/datatables.net@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
+ integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce"
- integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg==
+"@abp/font-awesome@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
+ integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/highlight.js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.0.tgz#b1b53329743f3eeb203ec35ebcf9c6e79c9fbe93"
- integrity sha512-L0mL/AErFsYdJbCLUu22lm/fn+Eelc0H57OQrUAzVy+22XXALiFtyq/cci3sjOcxfpf2CW/v+z0JKCouuJd7Ag==
+"@abp/highlight.js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-10.4.1.tgz#9e956ae62c9640253db321aa7eaa31f99220fa41"
+ integrity sha512-AU//tBPE7jsONdZHXAS6eFsiqRCRT4p0MeasHqVfFbdZztzlGbnHr4En++9b6Jpqf0WHQts0sBr06wakmI/oVQ==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@highlightjs/cdn-assets" "~11.11.1"
-"@abp/jquery-validation-unobtrusive@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88"
- integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg==
+"@abp/jquery-validation-unobtrusive@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
+ integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies:
- "@abp/jquery-validation" "~10.4.0"
+ "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5"
- integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA==
+"@abp/jquery-validation@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
+ integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1"
- integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg==
+"@abp/jquery@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
+ integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
jquery "~3.7.1"
-"@abp/jstree@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-10.4.0.tgz#99f49383dd016bfa66e0512603a4a02b3534b36a"
- integrity sha512-GXcK+JZGLBwGWs3GiFK/sLQt4VJIlweXR6MymE9YvG2X9i9Q8GrhfivINhbWAttSvbBTGca0RiKG2SxiZMAyhg==
+"@abp/jstree@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-10.4.1.tgz#857b633756adb04199739de38a140ea53f52371e"
+ integrity sha512-QszVxmUSeW1XeMELRfL6z4C6KGH51PaQf0TsE2ygyiVJiV3Xvw8dhb6DkVMlNo+7icQbDojAEJZXDBG34T7o7Q==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
jstree "^3.3.17"
-"@abp/lodash@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd"
- integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA==
+"@abp/lodash@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
+ integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
lodash "^4.18.1"
-"@abp/luxon@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90"
- integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw==
+"@abp/luxon@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
+ integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7"
- integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA==
+"@abp/malihu-custom-scrollbar-plugin@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
+ integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/markdown-it@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-10.4.0.tgz#bb0bf97f13462454fc84782a09b50f637a49f200"
- integrity sha512-Tb1hiZiq024WeveNJBS49HL6W+uNAGEn3NHV335wSlN9e+x4LeyYd79wj+PAfRaX9yWCXjupqrafpDZ6Nj0C7g==
+"@abp/markdown-it@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-10.4.1.tgz#2f3b37b7107d7dac31b45a00a4527163e8860d41"
+ integrity sha512-bPfvJACsIdZFHs9ewTBzDOT6BEceea3s4fAiOcf2/xaRHXIT1H1xsg7lulEdsMSA9+sthKLHHgcGW9ao5lfXEw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
markdown-it "^14.1.0"
-"@abp/moment@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d"
- integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg==
+"@abp/moment@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
+ integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84"
- integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw==
+"@abp/popper.js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
+ integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8"
-"@abp/prismjs@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0.tgz#0061d71d18252bc1e66e763aab6d81a7b4fe51b7"
- integrity sha512-kjV11XNt2uP01zlhrrScr4WA27lgZ03Cz3svA7/HHnfhFy76MHYo+Dyn7sS4Gp3UobMcf1QWHl4KQNCUnYNTOQ==
+"@abp/prismjs@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.1.tgz#cb1144481ba34b1150ba2587ed3940d217d16abd"
+ integrity sha512-kC9VnxwTLLToiRXP6vHQD0nBoHQvQKHNssTHM4OsNjazToAVgqfHJyEqGsJwb1uulwR05vMspST2MbMFS8fx7g==
dependencies:
- "@abp/clipboard" "~10.4.0"
- "@abp/core" "~10.4.0"
+ "@abp/clipboard" "~10.4.1"
+ "@abp/core" "~10.4.1"
prismjs "^1.30.0"
-"@abp/select2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8"
- integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww==
+"@abp/select2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
+ integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
select2 "^4.0.13"
-"@abp/slugify@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-10.4.0.tgz#eb70ee28499f4406b738478cf4a26319ea4b9097"
- integrity sha512-bJXo86hWHQiF9QlYHu869AcDV1sy1p7nlqWxjA3kMkZ5OvP+/7qkwuGfRzkhVhQ9MK6hcMOKwasZ6xw9UPERFQ==
+"@abp/slugify@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-10.4.1.tgz#838904a9f8206eb73daf0976cc24be7e79594a98"
+ integrity sha512-lAcyFBiQdBVHDhoOa9QCqe3U/gd6R7bpxfSiZYI6aiGXh/2E32j9wZw70Vdl8zbBjdnzYgOd7Cniw9uMkead7w==
dependencies:
slugify "^1.6.6"
-"@abp/star-rating-svg@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-10.4.0.tgz#9aa9226494be5d0d4cd99237d6bd75cedf41a0c6"
- integrity sha512-cvu+9ARD9dq7qWHsmb+7Ml9ITyzuUzDHBvBxt5xE4WV0e3jszJRhOJ4TROlh15Z8ymZtStMVb2m1F2JGx1i3xA==
+"@abp/star-rating-svg@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-10.4.1.tgz#9d51107d8e349fbd5b347c05178b8a51faafc193"
+ integrity sha512-zerJfy1wjFnl3UN8rPrqxSWXv9q7Os1Y/G5hJWCX5JPfgka9lMATruvBpGBg6pEOUJGkYDS4NJamL4zDpOsu5g==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
star-rating-svg "^3.5.0"
-"@abp/sweetalert2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73"
- integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw==
+"@abp/sweetalert2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
+ integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d"
- integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg==
+"@abp/timeago@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
+ integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
timeago "^1.6.7"
-"@abp/tui-editor@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.0.tgz#8041b62eb464f4a8adddc043904e2bc8475d45e3"
- integrity sha512-SbbAs3V94UaF6xaMIaRNpDE9KSvOU45XZl24jCWjCAwkyTkN0bHlpnqs0UuJUtCnnQAzj4C+AvVy5ykrDKGtIg==
+"@abp/tui-editor@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-10.4.1.tgz#e7012ed869a5de852f454e14fbe1342c55d1c07b"
+ integrity sha512-lFcSkESJnAjIqiU12F19U8BYko/jLTXWN6s0uqvgQ14qhPPWMr13PidMjijj/x/m0wtFg2lHwbAFt3nl+6O+sA==
dependencies:
- "@abp/jquery" "~10.4.0"
- "@abp/prismjs" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
+ "@abp/prismjs" "~10.4.1"
-"@abp/uppy@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-10.4.0.tgz#876650cda8f5187cf9e4a0f4731632fed9be1356"
- integrity sha512-E+86xlPFZemx56K6nK1gbDC1pcYHMEWw03QOfZwtwP5UGU5JvyyW6CpV3M8PdfBRo4sx+lRqOW2I/X8MIsbTig==
+"@abp/uppy@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-10.4.1.tgz#81aaf6f0779fb5ba9d1ca5297e2d4ea57e17f4d5"
+ integrity sha512-olNAAg+jjBFRQYIUhjx4PR5TcGhA3aAOPMySCVSxDhA3nWavc1Tb60SkqlOHScqmxM6RonooUTRVtD9G5RKixA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
uppy "^5.1.2"
-"@abp/utils@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226"
- integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw==
+"@abp/utils@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
+ integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
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 eb3423aca9..277b3c28ad 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": "~10.4.0",
- "@abp/docs": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1",
+ "@abp/docs": "~10.4.1"
}
}
diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock
index 2c8b945a40..bd79633355 100644
--- a/modules/docs/app/VoloDocs.Web/yarn.lock
+++ b/modules/docs/app/VoloDocs.Web/yarn.lock
@@ -2,222 +2,222 @@
# yarn lockfile v1
-"@abp/anchor-js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-10.4.0.tgz#32a6e61e7d2ca6cd5b5b1fc53a684bd52d1fc710"
- integrity sha512-/ZmG6hbKFRY1w18jNdhfEX9614d/OAH++BTOGuQ/1ZQUZqxu+FTLLlDMczce3UmL4d5devYocu5f/x2JnKROZw==
+"@abp/anchor-js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-10.4.1.tgz#93e482ab4a0a34c5764284246d3515fd1ba78a88"
+ integrity sha512-6Vmwie96ThlGYGouP7dteTuviP0nIzg5gpMOSwL037Buu8M6a+ScXhQ9VsPdlTCf/kjwoCG1jfyIpCyp6YGmXw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
anchor-js "^5.0.0"
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0"
- integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8"
- integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.4.0"
- "@abp/bootstrap" "~10.4.0"
- "@abp/bootstrap-datepicker" "~10.4.0"
- "@abp/bootstrap-daterangepicker" "~10.4.0"
- "@abp/datatables.net-bs5" "~10.4.0"
- "@abp/font-awesome" "~10.4.0"
- "@abp/jquery-validation-unobtrusive" "~10.4.0"
- "@abp/lodash" "~10.4.0"
- "@abp/luxon" "~10.4.0"
- "@abp/malihu-custom-scrollbar-plugin" "~10.4.0"
- "@abp/moment" "~10.4.0"
- "@abp/select2" "~10.4.0"
- "@abp/sweetalert2" "~10.4.0"
- "@abp/timeago" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c"
- integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
+ integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
+ integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~10.4.1"
+ "@abp/bootstrap" "~10.4.1"
+ "@abp/bootstrap-datepicker" "~10.4.1"
+ "@abp/bootstrap-daterangepicker" "~10.4.1"
+ "@abp/datatables.net-bs5" "~10.4.1"
+ "@abp/font-awesome" "~10.4.1"
+ "@abp/jquery-validation-unobtrusive" "~10.4.1"
+ "@abp/lodash" "~10.4.1"
+ "@abp/luxon" "~10.4.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
+ "@abp/moment" "~10.4.1"
+ "@abp/select2" "~10.4.1"
+ "@abp/sweetalert2" "~10.4.1"
+ "@abp/timeago" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
+ integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e"
- integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA==
+"@abp/bootstrap-datepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
+ integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a"
- integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA==
+"@abp/bootstrap-daterangepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
+ integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies:
- "@abp/moment" "~10.4.0"
+ "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f"
- integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg==
+"@abp/bootstrap@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
+ integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies:
- "@abp/core" "~10.4.0"
- "@abp/popper.js" "~10.4.0"
+ "@abp/core" "~10.4.1"
+ "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8"
-"@abp/clipboard@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.0.tgz#bac5854af4f8bcaa987d39f234edd58b675a71c8"
- integrity sha512-KTTzCDEe+wjpGLdud8MHlwnPr/NdzFDmfHtENgESdIa5KilGOwy2wv24lQ5cyJOB4ftoJzkBaHinKJxg/KU0pw==
+"@abp/clipboard@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-10.4.1.tgz#eec933cef5a3d740e70e8736be6a68092dece645"
+ integrity sha512-xvAuXcY099h3IlBYKhLG2mwfZnTRmcu5RqBp+PJz33uOMM4ZcdzxQ5lAD73ukYX32SuSE0EJaSw5SV2jqT3RGw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
clipboard "^2.0.11"
-"@abp/core@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd"
- integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q==
+"@abp/core@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
+ integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies:
- "@abp/utils" "~10.4.0"
+ "@abp/utils" "~10.4.1"
-"@abp/datatables.net-bs5@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1"
- integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw==
+"@abp/datatables.net-bs5@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
+ integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies:
- "@abp/datatables.net" "~10.4.0"
+ "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181"
- integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg==
+"@abp/datatables.net@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
+ integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4"
-"@abp/docs@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-10.4.0.tgz#b5ad9177888b2421cd5bfc417d2ae2260ded2a63"
- integrity sha512-JMdqns4h/Bm9yOu2aXz6LmxGvTnWRTlZ3gFUKV3KiVy0FZfX09DhGh1zZbpr2lBxkSjhjBzcLYptLlUjIL6bzA==
+"@abp/docs@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-10.4.1.tgz#eac6736b3f5f0073b278df88327506b8a01064ce"
+ integrity sha512-U3R6IgLwj2Gkup1EgFWFAEoWMkC3P7EQztQV2EsMZmqirr4CgM0DxoBd29h/gN6cAYX3q7Vwwo+j59dR+JNssQ==
dependencies:
- "@abp/anchor-js" "~10.4.0"
- "@abp/clipboard" "~10.4.0"
- "@abp/malihu-custom-scrollbar-plugin" "~10.4.0"
- "@abp/popper.js" "~10.4.0"
- "@abp/prismjs" "~10.4.0"
+ "@abp/anchor-js" "~10.4.1"
+ "@abp/clipboard" "~10.4.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
+ "@abp/popper.js" "~10.4.1"
+ "@abp/prismjs" "~10.4.1"
-"@abp/font-awesome@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce"
- integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg==
+"@abp/font-awesome@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
+ integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88"
- integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg==
+"@abp/jquery-validation-unobtrusive@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
+ integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies:
- "@abp/jquery-validation" "~10.4.0"
+ "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5"
- integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA==
+"@abp/jquery-validation@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
+ integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1"
- integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg==
+"@abp/jquery@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
+ integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
jquery "~3.7.1"
-"@abp/lodash@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd"
- integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA==
+"@abp/lodash@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
+ integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
lodash "^4.18.1"
-"@abp/luxon@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90"
- integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw==
+"@abp/luxon@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
+ integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7"
- integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA==
+"@abp/malihu-custom-scrollbar-plugin@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
+ integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d"
- integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg==
+"@abp/moment@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
+ integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84"
- integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw==
+"@abp/popper.js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
+ integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8"
-"@abp/prismjs@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.0.tgz#0061d71d18252bc1e66e763aab6d81a7b4fe51b7"
- integrity sha512-kjV11XNt2uP01zlhrrScr4WA27lgZ03Cz3svA7/HHnfhFy76MHYo+Dyn7sS4Gp3UobMcf1QWHl4KQNCUnYNTOQ==
+"@abp/prismjs@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-10.4.1.tgz#cb1144481ba34b1150ba2587ed3940d217d16abd"
+ integrity sha512-kC9VnxwTLLToiRXP6vHQD0nBoHQvQKHNssTHM4OsNjazToAVgqfHJyEqGsJwb1uulwR05vMspST2MbMFS8fx7g==
dependencies:
- "@abp/clipboard" "~10.4.0"
- "@abp/core" "~10.4.0"
+ "@abp/clipboard" "~10.4.1"
+ "@abp/core" "~10.4.1"
prismjs "^1.30.0"
-"@abp/select2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8"
- integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww==
+"@abp/select2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
+ integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73"
- integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw==
+"@abp/sweetalert2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
+ integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d"
- integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg==
+"@abp/timeago@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
+ integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
timeago "^1.6.7"
-"@abp/utils@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226"
- integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw==
+"@abp/utils@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
+ integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs
index af0bce93db..dd139e9b61 100644
--- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs
@@ -38,6 +38,7 @@ public class FeatureAppService : FeatureManagementAppServiceBase, IFeatureAppSer
{
var groupDto = CreateFeatureGroupDto(group);
+ var includedFeatures = new HashSet();
foreach (var featureDefinition in group.GetFeaturesWithChildren())
{
if (providerName == TenantFeatureValueProvider.ProviderName &&
@@ -48,6 +49,18 @@ public class FeatureAppService : FeatureManagementAppServiceBase, IFeatureAppSer
continue;
}
+ if (featureDefinition.AllowedProviders.Any() &&
+ !featureDefinition.AllowedProviders.Contains(providerName))
+ {
+ continue;
+ }
+
+ if (featureDefinition.Parent != null && !includedFeatures.Contains(featureDefinition.Parent))
+ {
+ continue;
+ }
+
+ includedFeatures.Add(featureDefinition);
var feature = await FeatureManager.GetOrNullWithProviderAsync(featureDefinition.Name, providerName, providerKey);
groupDto.Features.Add(CreateFeatureDto(feature, featureDefinition));
}
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs
index c105779546..9ac5a894d4 100644
--- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs
@@ -93,8 +93,17 @@ public class FeatureManager : IFeatureManager, ISingletonDependency
foreach (var feature in featureDefinitions)
{
+ var featureProviderList = feature.AllowedProviders.Any()
+ ? providerList.Where(p => feature.AllowedProviders.Contains(p.Name)).ToList()
+ : providerList;
+
+ if (!featureProviderList.Any())
+ {
+ continue;
+ }
+
var featureNameValueWithGrantedProvider = new FeatureNameValueWithGrantedProvider(feature.Name, null);
- foreach (var provider in providerList)
+ foreach (var provider in featureProviderList)
{
string pk = null;
if (provider.Compatible(providerName))
@@ -137,6 +146,11 @@ public class FeatureManager : IFeatureManager, ISingletonDependency
throw new FeatureValueInvalidException(feature.DisplayName.Localize(StringLocalizerFactory));
}
+ if (feature.AllowedProviders.Any() && !feature.AllowedProviders.Contains(providerName))
+ {
+ throw new AbpException($"The feature named '{name}' is not compatible with the provider named '{providerName}'");
+ }
+
var providers = Enumerable
.Reverse(Providers)
.SkipWhile(p => p.Name != providerName)
@@ -195,6 +209,11 @@ public class FeatureManager : IFeatureManager, ISingletonDependency
providers = providers.SkipWhile(c => c.Name != providerName);
}
+ if (feature.AllowedProviders.Any())
+ {
+ providers = providers.Where(p => feature.AllowedProviders.Contains(p.Name));
+ }
+
var featureNameValueWithGrantedProvider = new FeatureNameValueWithGrantedProvider(name, null);
foreach (var provider in providers)
{
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs
index f3475d6ded..6803ef748e 100644
--- a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs
@@ -112,6 +112,72 @@ public class FeatureAppService_Tests : FeatureManagementApplicationTestBase
Assert.Null(exception);
}
+ [Fact]
+ public async Task GetAsync_Should_Not_Return_Features_With_Disallowed_Provider()
+ {
+ Login(_testData.User1Id);
+
+ var editionFeatures = await _featureAppService.GetAsync(
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString());
+
+ editionFeatures.Groups.SelectMany(g => g.Features)
+ .ShouldNotContain(feature => feature.Name == TestFeatureDefinitionProvider.TenantOnlyFeature);
+
+ var tenantFeatures = await _featureAppService.GetAsync(
+ TenantFeatureValueProvider.ProviderName,
+ Guid.NewGuid().ToString());
+
+ tenantFeatures.Groups.SelectMany(g => g.Features)
+ .ShouldContain(feature => feature.Name == TestFeatureDefinitionProvider.TenantOnlyFeature);
+ }
+
+ [Fact]
+ public async Task GetAsync_Should_Not_Return_Orphan_Child_When_Parent_Is_Disallowed()
+ {
+ Login(_testData.User1Id);
+
+ var editionFeatures = await _featureAppService.GetAsync(
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString());
+
+ var featureNames = editionFeatures.Groups.SelectMany(g => g.Features).Select(f => f.Name).ToList();
+ featureNames.ShouldNotContain(TestFeatureDefinitionProvider.TenantOnlyParentFeature);
+ featureNames.ShouldNotContain(TestFeatureDefinitionProvider.OrphanChildOfTenantOnly);
+
+ var tenantFeatures = await _featureAppService.GetAsync(
+ TenantFeatureValueProvider.ProviderName,
+ Guid.NewGuid().ToString());
+
+ var tenantNames = tenantFeatures.Groups.SelectMany(g => g.Features).Select(f => f.Name).ToList();
+ tenantNames.ShouldContain(TestFeatureDefinitionProvider.TenantOnlyParentFeature);
+ tenantNames.ShouldContain(TestFeatureDefinitionProvider.OrphanChildOfTenantOnly);
+ }
+
+ [Fact]
+ public async Task UpdateAsync_Should_Throw_Exception_For_Disallowed_Provider()
+ {
+ Login(_testData.User1Id);
+
+ await Assert.ThrowsAsync(async () =>
+ {
+ await _featureAppService.UpdateAsync(
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString(),
+ new UpdateFeaturesDto
+ {
+ Features = new List
+ {
+ new UpdateFeatureDto
+ {
+ Name = TestFeatureDefinitionProvider.TenantOnlyFeature,
+ Value = true.ToString().ToLowerInvariant()
+ }
+ }
+ });
+ });
+ }
+
private void Login(Guid userId)
{
_currentUser.Id.Returns(userId);
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs
index fd4ea324ea..5bebe03ded 100644
--- a/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs
@@ -217,7 +217,118 @@ public class FeatureManager_Tests : FeatureManagementDomainTestBase
{
await _featureManager.SetAsync(TestFeatureDefinitionProvider.EmailSupport, "true", "UndefinedProvider", "Test");
});
-
+
exception.Message.ShouldBe("Unknown feature value provider: UndefinedProvider");
}
+
+ [Fact]
+ public async Task Set_Should_Throw_Exception_If_Provider_Not_In_AllowedProviders()
+ {
+ var exception = await Assert.ThrowsAsync(async () =>
+ {
+ await _featureManager.SetAsync(
+ TestFeatureDefinitionProvider.TenantOnlyFeature,
+ "true",
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Enterprise.ToString());
+ });
+
+ exception.Message.ShouldContain(TestFeatureDefinitionProvider.TenantOnlyFeature);
+ exception.Message.ShouldContain(EditionFeatureValueProvider.ProviderName);
+ }
+
+ [Fact]
+ public async Task Set_Should_Allow_Setting_For_Provider_In_AllowedProviders()
+ {
+ var tenantId = Guid.NewGuid();
+
+ await _featureManager.SetAsync(
+ TestFeatureDefinitionProvider.TenantOnlyFeature,
+ "true",
+ TenantFeatureValueProvider.ProviderName,
+ tenantId.ToString());
+
+ (await _featureManager.GetOrNullForTenantAsync(
+ TestFeatureDefinitionProvider.TenantOnlyFeature,
+ tenantId)).ShouldBe("true");
+ }
+
+ [Fact]
+ public async Task GetAllWithProvider_Should_Not_Return_Features_With_Disallowed_Provider()
+ {
+ var editionFeatures = await _featureManager.GetAllWithProviderAsync(
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Enterprise.ToString());
+
+ editionFeatures.ShouldNotContain(x => x.Name == TestFeatureDefinitionProvider.TenantOnlyFeature);
+
+ var tenantId = Guid.NewGuid();
+ await _featureManager.SetForTenantAsync(
+ tenantId,
+ TestFeatureDefinitionProvider.TenantOnlyFeature,
+ "true");
+
+ var tenantFeatures = await _featureManager.GetAllWithProviderAsync(
+ TenantFeatureValueProvider.ProviderName,
+ tenantId.ToString());
+
+ tenantFeatures.ShouldContain(x =>
+ x.Name == TestFeatureDefinitionProvider.TenantOnlyFeature && x.Value == "true");
+ }
+
+ [Fact]
+ public async Task GetOrNullWithProvider_Should_Not_Read_From_Disallowed_Provider()
+ {
+ var editionId = TestEditionIds.Enterprise.ToString();
+ await _featureValueRepository.InsertAsync(new FeatureValue(
+ Guid.NewGuid(),
+ TestFeatureDefinitionProvider.TenantOnlyFeature,
+ "true",
+ EditionFeatureValueProvider.ProviderName,
+ editionId));
+
+ var value = await _featureManager.GetOrNullWithProviderAsync(
+ TestFeatureDefinitionProvider.TenantOnlyFeature,
+ EditionFeatureValueProvider.ProviderName,
+ editionId);
+
+ value.Value.ShouldBeNull();
+ }
+
+ [Fact]
+ public async Task GetOrNullForEdition_Should_Read_Value_For_Edition_Only_Feature()
+ {
+ var editionId = Guid.NewGuid();
+
+ await _featureManager.SetForEditionAsync(
+ editionId,
+ TestFeatureDefinitionProvider.EditionOnlyFeature,
+ "true");
+
+ (await _featureManager.GetOrNullForEditionAsync(
+ TestFeatureDefinitionProvider.EditionOnlyFeature,
+ editionId)).ShouldBe("true");
+ }
+
+ [Fact]
+ public async Task Set_Should_Not_Clear_Tenant_Value_Due_To_Stale_Disallowed_Provider_Fallback()
+ {
+ var tenantId = Guid.NewGuid();
+
+ await _featureValueRepository.InsertAsync(new FeatureValue(
+ Guid.NewGuid(),
+ TestFeatureDefinitionProvider.TenantOnlyFeature,
+ "true",
+ EditionFeatureValueProvider.ProviderName,
+ null));
+
+ await _featureManager.SetForTenantAsync(
+ tenantId,
+ TestFeatureDefinitionProvider.TenantOnlyFeature,
+ "true");
+
+ (await _featureManager.GetOrNullForTenantAsync(
+ TestFeatureDefinitionProvider.TenantOnlyFeature,
+ tenantId)).ShouldBe("true");
+ }
}
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/TestFeatureDefinitionProvider.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/TestFeatureDefinitionProvider.cs
index 0a19e56956..43d8416ea1 100644
--- a/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/TestFeatureDefinitionProvider.cs
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/TestFeatureDefinitionProvider.cs
@@ -12,6 +12,10 @@ public class TestFeatureDefinitionProvider : FeatureDefinitionProvider
public const string UserCount = "UserCount";
public const string ProjectCount = "ProjectCount";
public const string BackupCount = "BackupCount";
+ public const string TenantOnlyFeature = "TenantOnlyFeature";
+ public const string TenantOnlyParentFeature = "TenantOnlyParentFeature";
+ public const string OrphanChildOfTenantOnly = "OrphanChildOfTenantOnly";
+ public const string EditionOnlyFeature = "EditionOnlyFeature";
public override void Define(IFeatureDefinitionContext context)
{
@@ -22,6 +26,29 @@ public class TestFeatureDefinitionProvider : FeatureDefinitionProvider
valueType: new ToggleStringValueType()
);
+ group.AddFeature(
+ TenantOnlyFeature,
+ defaultValue: false.ToString().ToLowerInvariant(),
+ valueType: new ToggleStringValueType()
+ ).WithProviders(TenantFeatureValueProvider.ProviderName);
+
+ var tenantOnlyParent = group.AddFeature(
+ TenantOnlyParentFeature,
+ defaultValue: false.ToString().ToLowerInvariant(),
+ valueType: new ToggleStringValueType()
+ ).WithProviders(TenantFeatureValueProvider.ProviderName);
+
+ tenantOnlyParent.CreateChild(
+ OrphanChildOfTenantOnly,
+ defaultValue: false.ToString().ToLowerInvariant(),
+ valueType: new ToggleStringValueType());
+
+ group.AddFeature(
+ EditionOnlyFeature,
+ defaultValue: false.ToString().ToLowerInvariant(),
+ valueType: new ToggleStringValueType()
+ ).WithProviders(EditionFeatureValueProvider.ProviderName);
+
var emailSupport = group.AddFeature(
EmailSupport,
"true",
diff --git a/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/AbpLinkUserTokenProviderOptions.cs b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/AbpLinkUserTokenProviderOptions.cs
new file mode 100644
index 0000000000..ec06cf0156
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/AbpLinkUserTokenProviderOptions.cs
@@ -0,0 +1,13 @@
+using System;
+using Microsoft.AspNetCore.Identity;
+
+namespace Volo.Abp.Identity.AspNetCore;
+
+public class AbpLinkUserTokenProviderOptions : DataProtectionTokenProviderOptions
+{
+ public AbpLinkUserTokenProviderOptions()
+ {
+ Name = LinkUserTokenProviderConsts.LinkUserTokenProviderName;
+ TokenLifespan = TimeSpan.FromMinutes(10);
+ }
+}
diff --git a/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/IdentityUserManagerSingleActiveTokenExtensions.cs b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/IdentityUserManagerSingleActiveTokenExtensions.cs
index 5b721241fd..59d8bd4690 100644
--- a/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/IdentityUserManagerSingleActiveTokenExtensions.cs
+++ b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/IdentityUserManagerSingleActiveTokenExtensions.cs
@@ -40,4 +40,23 @@ public static class IdentityUserManagerSingleActiveTokenExtensions
var name = manager.Options.Tokens.ChangeEmailTokenProvider + ":" + UserManager.GetChangeEmailTokenPurpose(newEmail);
return manager.RemoveAuthenticationTokenAsync(user, AbpSingleActiveTokenProvider.InternalLoginProvider, name);
}
+
+ ///
+ /// Removes the stored link-user token hash for ,
+ /// immediately invalidating any previously issued link-user token.
+ ///
+ public static Task RemoveLinkUserTokenAsync(this IdentityUserManager manager, IdentityUser user)
+ {
+ return RemoveLinkUserTokenAsync(manager, user, LinkUserTokenProviderConsts.LinkUserTokenPurpose);
+ }
+
+ ///
+ /// Removes the stored link-user token hash for and the given ,
+ /// immediately invalidating any previously issued link-user token for that purpose.
+ ///
+ public static Task RemoveLinkUserTokenAsync(this IdentityUserManager manager, IdentityUser user, string purpose)
+ {
+ var name = LinkUserTokenProviderConsts.LinkUserTokenProviderName + ":" + purpose;
+ return manager.RemoveAuthenticationTokenAsync(user, AbpSingleActiveTokenProvider.InternalLoginProvider, name);
+ }
}
diff --git a/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider.cs b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider.cs
index b2fe7c772c..47607abe7e 100644
--- a/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider.cs
+++ b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider.cs
@@ -1,18 +1,25 @@
-using Microsoft.AspNetCore.DataProtection;
+using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
+using Volo.Abp.Identity;
+using Volo.Abp.Threading;
namespace Volo.Abp.Identity.AspNetCore;
-public class LinkUserTokenProvider : DataProtectorTokenProvider
+///
+/// Link-user token provider that enforces, per purpose, only the most recently issued
+/// token to be valid, with a configurable expiration period.
+///
+public class LinkUserTokenProvider : AbpSingleActiveTokenProvider
{
public LinkUserTokenProvider(
IDataProtectionProvider dataProtectionProvider,
- IOptions options,
- ILogger> logger)
- : base(dataProtectionProvider, options, logger)
+ IOptions options,
+ ILogger> logger,
+ IIdentityUserRepository userRepository,
+ ICancellationTokenProvider cancellationTokenProvider)
+ : base(dataProtectionProvider, options, logger, userRepository, cancellationTokenProvider)
{
-
}
}
diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor.MudBlazor/Pages/Identity/UserManagement.razor b/modules/identity/src/Volo.Abp.Identity.Blazor.MudBlazor/Pages/Identity/UserManagement.razor
index f6b0849311..061a1e33b6 100644
--- a/modules/identity/src/Volo.Abp.Identity.Blazor.MudBlazor/Pages/Identity/UserManagement.razor
+++ b/modules/identity/src/Volo.Abp.Identity.Blazor.MudBlazor/Pages/Identity/UserManagement.razor
@@ -24,6 +24,7 @@
GetLinkConsentAsync(IdentityLinkUserInfo sourceLinkUser, CancellationToken cancellationToken = default)
+ {
+ using (CurrentTenant.Change(sourceLinkUser.TenantId))
+ {
+ var user = await UserManager.FindByIdAsync(sourceLinkUser.UserId.ToString());
+ if (user == null)
+ {
+ return null;
+ }
+ return await UserManager.GetAuthenticationTokenAsync(
+ user,
+ LinkUserTokenProviderConsts.LinkUserConsentLoginProvider,
+ LinkUserTokenProviderConsts.LinkUserConsentTokenName);
+ }
+ }
+
+ [UnitOfWork]
+ public virtual async Task RemoveLinkConsentAsync(IdentityLinkUserInfo sourceLinkUser, CancellationToken cancellationToken = default)
+ {
+ using (CurrentTenant.Change(sourceLinkUser.TenantId))
+ {
+ var user = await UserManager.FindByIdAsync(sourceLinkUser.UserId.ToString());
+ if (user == null)
+ {
+ return;
+ }
+ (await UserManager.RemoveAuthenticationTokenAsync(
+ user,
+ LinkUserTokenProviderConsts.LinkUserConsentLoginProvider,
+ LinkUserTokenProviderConsts.LinkUserConsentTokenName)).CheckErrors();
+ }
+ }
}
diff --git a/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/AbpSignInManager_Tests.cs b/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/AbpSignInManager_Tests.cs
index 7aa540f420..ab2adb6c2f 100644
--- a/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/AbpSignInManager_Tests.cs
+++ b/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/AbpSignInManager_Tests.cs
@@ -1,8 +1,10 @@
-using System.Net;
+using System;
+using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Shouldly;
+using Volo.Abp.Uow;
using Xunit;
namespace Volo.Abp.Identity.AspNetCore;
@@ -45,4 +47,36 @@ public class AbpSignInManager_Tests : AbpIdentityAspNetCoreTestBase
result.ShouldBe("NotAllowed");
}
+
+ [Fact]
+ public async Task Should_Return_NotAllowed_For_User_That_Should_Change_Password_Regardless_Of_Password()
+ {
+ // PreSignInCheck rejects users with ShouldChangePasswordOnNextLogin=true before the
+ // password is verified, so PasswordSignInAsync returns NotAllowed for both right and
+ // wrong passwords. Callers that surface a login error to the user (Login page) need
+ // to recheck the password themselves to distinguish the two cases.
+ var userManager = GetRequiredService();
+ var unitOfWorkManager = GetRequiredService();
+
+ const string userName = "must-change-password";
+ const string password = "1q2w3E*";
+
+ using (var uow = unitOfWorkManager.Begin())
+ {
+ var user = new IdentityUser(Guid.NewGuid(), userName, userName + "@abp.io");
+ user.SetShouldChangePasswordOnNextLogin(true);
+ (await userManager.CreateAsync(user, password)).Succeeded.ShouldBeTrue();
+ await uow.CompleteAsync();
+ }
+
+ var withWrongPassword = await GetResponseAsStringAsync(
+ $"api/signin-test/password?userName={userName}&password=WRONG_PASSWORD"
+ );
+ withWrongPassword.ShouldBe("NotAllowed");
+
+ var withCorrectPassword = await GetResponseAsStringAsync(
+ $"api/signin-test/password?userName={userName}&password={password}"
+ );
+ withCorrectPassword.ShouldBe("NotAllowed");
+ }
}
diff --git a/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider_Tests.cs b/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider_Tests.cs
index 75874feb33..7dfca71f92 100644
--- a/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider_Tests.cs
+++ b/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider_Tests.cs
@@ -1,28 +1,40 @@
-using System.Threading.Tasks;
+using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;
using Shouldly;
+using Volo.Abp.Uow;
using Xunit;
namespace Volo.Abp.Identity.AspNetCore;
-public class LinkUserTokenProvider_Tests : AbpIdentityAspNetCoreTestBase
+public class LinkUserTokenProvider_Tests : AbpSingleActiveTokenProviderTestBase
{
- protected IIdentityUserRepository UserRepository { get; }
- protected IIdentityLinkUserRepository IdentityLinkUserRepository { get; }
protected IdentityLinkUserManager IdentityLinkUserManager { get; }
- protected IdentityTestData TestData { get; }
public LinkUserTokenProvider_Tests()
{
- UserRepository = GetRequiredService();
- IdentityLinkUserRepository = GetRequiredService();
IdentityLinkUserManager = GetRequiredService();
- TestData = GetRequiredService();
}
+ protected override Task GenerateTokenAsync(IdentityUser user)
+ => IdentityLinkUserManager.GenerateLinkTokenAsync(
+ new IdentityLinkUserInfo(user.Id, user.TenantId),
+ LinkUserTokenProviderConsts.LinkUserTokenPurpose);
+
+ protected override Task VerifyTokenAsync(IdentityUser user, string token)
+ => IdentityLinkUserManager.VerifyLinkTokenAsync(
+ new IdentityLinkUserInfo(user.Id, user.TenantId),
+ token,
+ LinkUserTokenProviderConsts.LinkUserTokenPurpose);
+
+ protected override string GetProviderName()
+ => LinkUserTokenProviderConsts.LinkUserTokenProviderName;
+
+ protected override string GetPurpose()
+ => LinkUserTokenProviderConsts.LinkUserTokenPurpose;
+
[Fact]
- public void LinkUserTokenProvider_Should_Be_Register()
+ public void LinkUserTokenProvider_Should_Be_Registered()
{
var identityOptions = GetRequiredService>().Value;
@@ -35,11 +47,79 @@ public class LinkUserTokenProvider_Tests : AbpIdentityAspNetCoreTestBase
[InlineData("TestTokenPurpose1")]
[InlineData("TestTokenPurpose2")]
[InlineData("TestTokenPurpose3")]
- public virtual async Task GenerateAndVerifyLinkTokenAsync(string tokenPurpose)
+ public virtual async Task GenerateAndVerifyLinkTokenAsync_With_Custom_Purpose(string tokenPurpose)
+ {
+ using (var uow = UnitOfWorkManager.Begin())
+ {
+ var john = await UserRepository.GetAsync(TestData.UserJohnId);
+ var token = await IdentityLinkUserManager.GenerateLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), tokenPurpose);
+ (await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), token, tokenPurpose)).ShouldBeTrue();
+ (await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), "123123", tokenPurpose)).ShouldBeFalse();
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task RemoveLinkUserTokenAsync_Should_Invalidate_Stored_Hash()
+ {
+ using (var uow = UnitOfWorkManager.Begin())
+ {
+ var john = await UserRepository.GetAsync(TestData.UserJohnId);
+ var token = await GenerateTokenAsync(john);
+
+ john = await UserRepository.GetAsync(TestData.UserJohnId);
+ (await UserManager.RemoveLinkUserTokenAsync(john)).Succeeded.ShouldBeTrue();
+
+ john = await UserRepository.GetAsync(TestData.UserJohnId);
+ (await VerifyTokenAsync(john, token)).ShouldBeFalse();
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task RemoveLinkUserTokenAsync_With_Custom_Purpose_Should_Invalidate_Only_That_Purpose()
{
- var john = await UserRepository.GetAsync(TestData.UserJohnId);
- var token = await IdentityLinkUserManager.GenerateLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), tokenPurpose);
- (await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), token, tokenPurpose)).ShouldBeTrue();
- (await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), "123123", tokenPurpose)).ShouldBeFalse();
+ const string customPurpose = "CustomLinkUserPurpose";
+
+ using (var uow = UnitOfWorkManager.Begin())
+ {
+ var john = await UserRepository.GetAsync(TestData.UserJohnId);
+ var defaultPurposeToken = await GenerateTokenAsync(john);
+ var customPurposeToken = await IdentityLinkUserManager.GenerateLinkTokenAsync(
+ new IdentityLinkUserInfo(john.Id, john.TenantId),
+ customPurpose);
+
+ john = await UserRepository.GetAsync(TestData.UserJohnId);
+ (await UserManager.RemoveLinkUserTokenAsync(john, customPurpose)).Succeeded.ShouldBeTrue();
+
+ john = await UserRepository.GetAsync(TestData.UserJohnId);
+ (await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), customPurposeToken, customPurpose)).ShouldBeFalse();
+ (await VerifyTokenAsync(john, defaultPurposeToken)).ShouldBeTrue();
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task GenerateLinkTokenAsync_With_Custom_Purpose_Should_Invalidate_Previous_Token_For_Same_Purpose()
+ {
+ const string customPurpose = "CustomLinkUserPurpose";
+
+ using (var uow = UnitOfWorkManager.Begin())
+ {
+ var john = await UserRepository.GetAsync(TestData.UserJohnId);
+ var firstToken = await IdentityLinkUserManager.GenerateLinkTokenAsync(
+ new IdentityLinkUserInfo(john.Id, john.TenantId),
+ customPurpose);
+ var secondToken = await IdentityLinkUserManager.GenerateLinkTokenAsync(
+ new IdentityLinkUserInfo(john.Id, john.TenantId),
+ customPurpose);
+
+ (await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), firstToken, customPurpose)).ShouldBeFalse();
+ (await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), secondToken, customPurpose)).ShouldBeTrue();
+
+ await uow.CompleteAsync();
+ }
}
}
diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityLinkUserManager_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityLinkUserManager_Tests.cs
index e13fefb1c2..f151cc5010 100644
--- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityLinkUserManager_Tests.cs
+++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityLinkUserManager_Tests.cs
@@ -188,4 +188,99 @@ public class IdentityLinkUserManager_Tests : AbpIdentityDomainTestBase
(await IdentityLinkUserManager.IsLinkedAsync(new IdentityLinkUserInfo(john.Id, john.TenantId),
new IdentityLinkUserInfo(neo.Id, neo.TenantId))).ShouldBeFalse();
}
+
+ [Fact]
+ public virtual async Task SetLinkConsentAsync()
+ {
+ await UsingUowAsync(async () =>
+ {
+ var john = await UserRepository.GetAsync(TestData.UserJohnId);
+ var source = new IdentityLinkUserInfo(john.Id, john.TenantId);
+
+ await IdentityLinkUserManager.SetLinkConsentAsync(source, "consent-payload");
+
+ (await IdentityLinkUserManager.GetLinkConsentAsync(source)).ShouldBe("consent-payload");
+ });
+ }
+
+ [Fact]
+ public virtual async Task SetLinkConsentAsync_Should_Overwrite_Previous_Value()
+ {
+ await UsingUowAsync(async () =>
+ {
+ var john = await UserRepository.GetAsync(TestData.UserJohnId);
+ var source = new IdentityLinkUserInfo(john.Id, john.TenantId);
+
+ await IdentityLinkUserManager.SetLinkConsentAsync(source, "first");
+ await IdentityLinkUserManager.SetLinkConsentAsync(source, "second");
+
+ (await IdentityLinkUserManager.GetLinkConsentAsync(source)).ShouldBe("second");
+ });
+ }
+
+ [Fact]
+ public virtual async Task GetLinkConsentAsync_Should_Return_Null_When_No_Consent_Written()
+ {
+ var neo = await UserRepository.GetAsync(TestData.UserNeoId);
+
+ var stored = await IdentityLinkUserManager.GetLinkConsentAsync(new IdentityLinkUserInfo(neo.Id, neo.TenantId));
+
+ stored.ShouldBeNull();
+ }
+
+ [Fact]
+ public virtual async Task GetLinkConsentAsync_Should_Return_Null_When_User_Not_Found()
+ {
+ var stored = await IdentityLinkUserManager.GetLinkConsentAsync(new IdentityLinkUserInfo(Guid.NewGuid(), null));
+
+ stored.ShouldBeNull();
+ }
+
+ [Fact]
+ public virtual async Task RemoveLinkConsentAsync()
+ {
+ await UsingUowAsync(async () =>
+ {
+ var john = await UserRepository.GetAsync(TestData.UserJohnId);
+ var source = new IdentityLinkUserInfo(john.Id, john.TenantId);
+
+ await IdentityLinkUserManager.SetLinkConsentAsync(source, "payload");
+ await IdentityLinkUserManager.RemoveLinkConsentAsync(source);
+
+ (await IdentityLinkUserManager.GetLinkConsentAsync(source)).ShouldBeNull();
+ });
+ }
+
+ [Fact]
+ public virtual async Task RemoveLinkConsentAsync_Should_Be_Noop_When_User_Not_Found()
+ {
+ await IdentityLinkUserManager.RemoveLinkConsentAsync(new IdentityLinkUserInfo(Guid.NewGuid(), null));
+ }
+
+ [Fact]
+ public virtual async Task SetLinkConsentAsync_Should_Persist_Across_UnitOfWork()
+ {
+ var john = await UserRepository.GetAsync(TestData.UserJohnId);
+ var source = new IdentityLinkUserInfo(john.Id, john.TenantId);
+
+ await UsingUowAsync(async () =>
+ {
+ await IdentityLinkUserManager.SetLinkConsentAsync(source, "consent-payload");
+ });
+
+ await UsingUowAsync(async () =>
+ {
+ (await IdentityLinkUserManager.GetLinkConsentAsync(source)).ShouldBe("consent-payload");
+ });
+
+ await UsingUowAsync(async () =>
+ {
+ await IdentityLinkUserManager.RemoveLinkConsentAsync(source);
+ });
+
+ await UsingUowAsync(async () =>
+ {
+ (await IdentityLinkUserManager.GetLinkConsentAsync(source)).ShouldBeNull();
+ });
+ }
}
diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/package.json b/modules/openiddict/app/OpenIddict.Demo.Server/package.json
index 0b8b07c6be..0bb873130f 100644
--- a/modules/openiddict/app/OpenIddict.Demo.Server/package.json
+++ b/modules/openiddict/app/OpenIddict.Demo.Server/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1"
}
}
diff --git a/modules/openiddict/app/angular/package.json b/modules/openiddict/app/angular/package.json
index 3903400110..660bf5fd33 100644
--- a/modules/openiddict/app/angular/package.json
+++ b/modules/openiddict/app/angular/package.json
@@ -12,15 +12,15 @@
},
"private": true,
"dependencies": {
- "@abp/ng.account": "~10.4.0",
- "@abp/ng.components": "~10.4.0",
- "@abp/ng.core": "~10.4.0",
- "@abp/ng.oauth": "~10.4.0",
- "@abp/ng.identity": "~10.4.0",
- "@abp/ng.setting-management": "~10.4.0",
- "@abp/ng.tenant-management": "~10.4.0",
- "@abp/ng.theme.shared": "~10.4.0",
- "@abp/ng.theme.lepton-x": "~5.4.0",
+ "@abp/ng.account": "~10.4.1",
+ "@abp/ng.components": "~10.4.1",
+ "@abp/ng.core": "~10.4.1",
+ "@abp/ng.oauth": "~10.4.1",
+ "@abp/ng.identity": "~10.4.1",
+ "@abp/ng.setting-management": "~10.4.1",
+ "@abp/ng.tenant-management": "~10.4.1",
+ "@abp/ng.theme.shared": "~10.4.1",
+ "@abp/ng.theme.lepton-x": "~5.4.1",
"@angular/animations": "^15.0.1",
"@angular/common": "^15.0.1",
"@angular/compiler": "^15.0.1",
@@ -36,7 +36,7 @@
"zone.js": "~0.11.4"
},
"devDependencies": {
- "@abp/ng.schematics": "~10.4.0",
+ "@abp/ng.schematics": "~10.4.1",
"@angular-devkit/build-angular": "^15.0.1",
"@angular-eslint/builder": "~15.1.0",
"@angular-eslint/eslint-plugin": "~15.1.0",
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.MudBlazor/Components/PermissionManagementModal.razor b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.MudBlazor/Components/PermissionManagementModal.razor
index a8f77d03e8..e26ee3beb1 100644
--- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.MudBlazor/Components/PermissionManagementModal.razor
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.MudBlazor/Components/PermissionManagementModal.razor
@@ -13,6 +13,7 @@
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs
index 8eeea26a97..0bfdf1eba3 100644
--- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs
@@ -144,7 +144,7 @@ public class PermissionManager : IPermissionManager, ISingletonDependency
if (permission.Providers.Any() && !permission.Providers.Contains(providerName))
{
//TODO: BusinessException
- throw new ApplicationException($"The permission named '{permission.Name}' has not compatible with the provider named '{providerName}'");
+ throw new ApplicationException($"The permission named '{permission.Name}' is not compatible with the provider named '{providerName}'");
}
if (!permission.MultiTenancySide.HasFlag(CurrentTenant.GetMultiTenancySide()))
diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json
index 50a8ad3d4c..f5892fa17a 100644
--- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json
+++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json
@@ -3,6 +3,6 @@
"name": "demo-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1"
}
}
diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock
index 6cbad6797a..1504b8a6e1 100644
--- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock
+++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock
@@ -2,186 +2,186 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.0.tgz#c0414583f1c1fca14b0133818a63434b4fbf7df0"
- integrity sha512-sOg3URmFRO/18D734B56jdFuC4LflGXXpw4w1Rdd77BJxugynxcmwNOQbLYFvMfqj0eKqDOH3E4yEcmS2IT1BQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-10.4.1.tgz#6691f4a120cef77ec0ba341efc45fa828cebc98a"
+ integrity sha512-nMLbBHFUk4eAmu5kj72k9Hf9FFXlt3QWQoW3CxXEEvdynTwjSEwHMvp8zgLalyelxvKuO4tKKoYVn3fU0zUBKA==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~10.4.1"
-"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.0.tgz#49002e55db00c98931d27357f7ea40eeab09e2e8"
- integrity sha512-bNQ+WOnsfQhb98Z9YO0zZsW2K8ZEgOQ+7/86QaqoYTf+ZFvLJsICmNuHryNkCGRM1XJf9EaDZ3qSOwoOGQwS9A==
+"@abp/aspnetcore.mvc.ui.theme.shared@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-10.4.1.tgz#b12adabcb73a99d4597509ca2b0ff0475c81218e"
+ integrity sha512-tlb+b2OtPXzdRTMIPcoGuzH2glTAUSwJ+Pa3tDUZiwmnsZ1WTgwF54s4pwmQxSNHpFu1okdpeP1KHw0FEEFTzw==
dependencies:
- "@abp/aspnetcore.mvc.ui" "~10.4.0"
- "@abp/bootstrap" "~10.4.0"
- "@abp/bootstrap-datepicker" "~10.4.0"
- "@abp/bootstrap-daterangepicker" "~10.4.0"
- "@abp/datatables.net-bs5" "~10.4.0"
- "@abp/font-awesome" "~10.4.0"
- "@abp/jquery-validation-unobtrusive" "~10.4.0"
- "@abp/lodash" "~10.4.0"
- "@abp/luxon" "~10.4.0"
- "@abp/malihu-custom-scrollbar-plugin" "~10.4.0"
- "@abp/moment" "~10.4.0"
- "@abp/select2" "~10.4.0"
- "@abp/sweetalert2" "~10.4.0"
- "@abp/timeago" "~10.4.0"
-
-"@abp/aspnetcore.mvc.ui@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.0.tgz#24e40fdc101c411f29a87adb77baa642299e979c"
- integrity sha512-0qVFthS4f4fkCv//UY2GseO+NX+XYqlamZJJwOTmv1UXFW6LxAXxuEQqWYVfFKzwk2lbkXDUcgP8NhhQ9xp3Sw==
+ "@abp/aspnetcore.mvc.ui" "~10.4.1"
+ "@abp/bootstrap" "~10.4.1"
+ "@abp/bootstrap-datepicker" "~10.4.1"
+ "@abp/bootstrap-daterangepicker" "~10.4.1"
+ "@abp/datatables.net-bs5" "~10.4.1"
+ "@abp/font-awesome" "~10.4.1"
+ "@abp/jquery-validation-unobtrusive" "~10.4.1"
+ "@abp/lodash" "~10.4.1"
+ "@abp/luxon" "~10.4.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~10.4.1"
+ "@abp/moment" "~10.4.1"
+ "@abp/select2" "~10.4.1"
+ "@abp/sweetalert2" "~10.4.1"
+ "@abp/timeago" "~10.4.1"
+
+"@abp/aspnetcore.mvc.ui@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-10.4.1.tgz#b39b2379da89fbadaec1279ba71f5e1a17cb3855"
+ integrity sha512-KhtMaMBGVqb+RyOyzS6ZpreGbiMZ1PU4tPJq9Eo80Cynki+E1ERoM/7aFQ30vvXchMXWHyCENAY34r47G81dOA==
dependencies:
ansi-colors "^4.1.3"
-"@abp/bootstrap-datepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.0.tgz#a392fd5ce31c86e9fc07f7dedbd0c56a02af341e"
- integrity sha512-kOpuCEO64zoJ7a9JASsCLFZIjEYgN0GG/oApS2L729pv6/oEhcupWpwrnvDUhsdGOezXwLIsgTzc6tiG3HxwGA==
+"@abp/bootstrap-datepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-10.4.1.tgz#b7ad625795df22396bd1cd3c74d458efd3b7d8f0"
+ integrity sha512-X3h3/1OJnm9o8PRyotxEkC4SZeVDAJ7VfN23OFAffraqOWj99kfhbygX6CziAPqTTbu/gUxgow9oqw15M89F2w==
dependencies:
bootstrap-datepicker "^1.10.1"
-"@abp/bootstrap-daterangepicker@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.0.tgz#95f68d3f488a12ede3c12352637b48782eeb031a"
- integrity sha512-HX4HutkbPDQWBJNPDozpT1Um9mHcfV+RL+ukwEy0N4e7nD8VJyqLT/a+/FzQN7iUkwV+aNR2v5c0W+dgyqTaEA==
+"@abp/bootstrap-daterangepicker@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-10.4.1.tgz#a70aba1b0a0189bc8332f982289776abe86695c3"
+ integrity sha512-5z+7UkdfBteedbOPgq/i9aSYY6DeFIg9L97/Ema5t626+NQonG1tA1YVnrUWMi+K1di1BHbx5FEIWcPEH7rFmg==
dependencies:
- "@abp/moment" "~10.4.0"
+ "@abp/moment" "~10.4.1"
bootstrap-daterangepicker "^3.1.0"
-"@abp/bootstrap@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.0.tgz#64b22bbdbf6b5bda279b21a7bae0652290b1221f"
- integrity sha512-WQzXi5h1mej9twrAB6kD4aJtTNfSxpnuo1pxIOu/8GKGWoDayVY2NMQl+MCVel6dST+6EUTmuDRxc2q9qHRxLg==
+"@abp/bootstrap@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-10.4.1.tgz#b44949abc6fa2d20b14044dd0010147caa5d9df9"
+ integrity sha512-9NZlHg0Xj/p1ffoUOKcxcfb6YXCjEdxWkmlqXx3qWM7r3yS06G5yHbQrYClnY+9SQuP2+/FtwRZ87HfH7zVg9w==
dependencies:
- "@abp/core" "~10.4.0"
- "@abp/popper.js" "~10.4.0"
+ "@abp/core" "~10.4.1"
+ "@abp/popper.js" "~10.4.1"
bootstrap "^5.3.8"
-"@abp/core@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.0.tgz#de0c09e26d1f20451da9430d939beebb5bb6e9dd"
- integrity sha512-3yKLFqUtFo5rgBPQxWkNPsdq1bE9VKwm02yB14lu913EIYhP//akizY4uSK08BozocJNveCASQbgd66z4x6v/Q==
+"@abp/core@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-10.4.1.tgz#1a286e98b6217ae65e58bca7f65b57b86d298ae1"
+ integrity sha512-pOtbCwq7Vi244Vql3CjZ5VY4SqEUuR4VSDeZ8ZvJnP/aQWaHb229z1iZMcjg/L+Mu0J3eHQso7rrP7n+4ww0Jw==
dependencies:
- "@abp/utils" "~10.4.0"
+ "@abp/utils" "~10.4.1"
-"@abp/datatables.net-bs5@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.0.tgz#a24eef99399324e4b89a00a204d2c4c2de379da1"
- integrity sha512-T4f7e6sR1qHcvygNUNfdPWsK61C3NQORV35Lzpl98eDwY8XLg2/RLAegpFI8GjESVy2+2PCKVqUoSYZtXaMFmw==
+"@abp/datatables.net-bs5@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-10.4.1.tgz#0ee2cb1a2f22146fd3561eab6ed412ac4301b928"
+ integrity sha512-bXl2JUpa7/IGWq9IsBlp+OVRdeIiGaaXbyKONSdI1LGeY9L6W3cHF90E68c+DaCUlcTkRUgshWvEhxSRAEEDnQ==
dependencies:
- "@abp/datatables.net" "~10.4.0"
+ "@abp/datatables.net" "~10.4.1"
datatables.net-bs5 "^2.3.4"
-"@abp/datatables.net@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.0.tgz#ab48f6e3ccae8d0644f0c01011ff98cc6ca16181"
- integrity sha512-esIUozaSEa29G7bdWbEZr22fRChaTuGfNNB8rgBHmVKwgkbHSG7qUTgsfGhNz0T2vfDsK3X37n55xmSdE9RElg==
+"@abp/datatables.net@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-10.4.1.tgz#62b2ca692ee7b59317ac46a80e46fc2f8df576ef"
+ integrity sha512-Lz0DUwlICTZiz0C7F2s32ddFOmlTQmEK+bUuigh7miir/lTb0GuoDIeDRQxFM7ucdsc3wo+ImbDwPvRI35XF4A==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
datatables.net "^2.3.4"
-"@abp/font-awesome@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.0.tgz#327979191615fff571f0ea2e99d01bbcca5378ce"
- integrity sha512-RBzDSi/hrjhLKc7h6Kf9CQqC+LCGvS7h8HrRVaIzWCZSeqTfIMFpixjCUrNgkqWI0bU4NDUKXZ4XCOv4nPVlBg==
+"@abp/font-awesome@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-10.4.1.tgz#936674af94d418eb4ebf5b42fbf8694e78139172"
+ integrity sha512-FEY5XWyjLFbcydJyguim/nd6T0CS4K3xKg0wdciUEz4Nb8dAvi4mUeMcQNrD5qEtuhOA1OuGKbiG5TtTN2X/bg==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@fortawesome/fontawesome-free" "^7.0.1"
-"@abp/jquery-validation-unobtrusive@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.0.tgz#e0114347344931667f48e0f2de5ea4bd6f9d2a88"
- integrity sha512-AJncXVB+eTSizq0fTAwLii9a0GeYFPiY+gw+Ki5pak8Pp9LQivphsW32TqQmPC3qZVuYtd4myUUraWuOTT1Adg==
+"@abp/jquery-validation-unobtrusive@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-10.4.1.tgz#b0ea174c262659215b69c6a92612b219273a091a"
+ integrity sha512-HGb+yM26BWk1ne4iUAD2HqMbOk75xNYIA+V1ny469eh1JdWBzlI+gJOQCiFbwdxnEWDJ2QsWiN2DmLY/0SGmqQ==
dependencies:
- "@abp/jquery-validation" "~10.4.0"
+ "@abp/jquery-validation" "~10.4.1"
jquery-validation-unobtrusive "^4.0.0"
-"@abp/jquery-validation@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.0.tgz#bd1ef0217c2500363f25223dd7316ba919a505b5"
- integrity sha512-W9QiGnOpaq6uDDwBy4UEqWrP1p2UegHQShW5Cev9vr6g7Lk97UsS1Agh9lnjbvMzFSAiLl3M9gHmyMD4aU3NPA==
+"@abp/jquery-validation@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-10.4.1.tgz#21970617ca9286328b85b64501f00e444bd0ec0d"
+ integrity sha512-mRZdEMssYwCjZOLQEFcXQbM//jrTMCMp6P5E1acQBaRZfaTPg/mNCHmdgd9vTRRgXfaAhQhkpYSkwv3GzAXbgA==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
jquery-validation "^1.21.0"
-"@abp/jquery@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.0.tgz#7ed3f1808682717ccfa7c6ac6e8db8a8b648b1e1"
- integrity sha512-kjFoVIhqlaIHlEs917sIeP1sHmLWXMn+DVKaCkVQUXC2KVq+yvQRC8AZiFQVxOwLvzd9dFFpGwGZgpWkDfvhvg==
+"@abp/jquery@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-10.4.1.tgz#9828be045b0ae767cc6d7c2a0b4affe2aea19bf7"
+ integrity sha512-m9Pg0kV3oCDh0fzcseKF4InM83Ryvrhf5iXioBklshqGAXodKgnk5YIwfsSjTIcj9wMuWdpznuxC5bMo+PP7ig==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
jquery "~3.7.1"
-"@abp/lodash@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.0.tgz#b6fc25b6e2fd74420ca16a5a13cb8fcd39b89efd"
- integrity sha512-RuiIGAqJtSBS+4VAk4cg7Zsfj07B3xkiewCaK5j0xUcyjsCJKL1UdXe2zVNL3oE5bXTNMU7yNQWJS4knv2mfwA==
+"@abp/lodash@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-10.4.1.tgz#f3d5532aef9772ccb38a6c7875a6b8b29db3ddc8"
+ integrity sha512-GcUNsy9rs2HET8v86PwCCwi9R0XOt5nklBjGhDyER+fzGSHHLFKX87WWjPulwBtxFCfEHMaYvCDAnkGO15tFwA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
lodash "^4.18.1"
-"@abp/luxon@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.0.tgz#731d20877ec679fa518b7199128676631d030a90"
- integrity sha512-/hF+FBugJMkp/H9WNZxlsOy3Rl4DTeR2hqmRPI0sPcdFOixCziYrwzyHg/2Kx8cI/zHa6GRRt1B4Jz4yjQTvdw==
+"@abp/luxon@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-10.4.1.tgz#d279101a35f02e061eb08b0ac20285c17208ffc7"
+ integrity sha512-Tr8hhMzWPoiQlSHBvhxxy0viu8dw2y8JikvyDc2sQusm258vlHi4NMH3FAY7JsyeiZFH6fwlRTJjkEAsdRLlCQ==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
luxon "^3.7.2"
-"@abp/malihu-custom-scrollbar-plugin@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.0.tgz#e1c207d9c66cce64fcb4fe13c091c4b86b00b6d7"
- integrity sha512-LC+imsGQganhKWybvQytATjQMXfQwfCfi6RRWREP+pejKPuHpqHzPd+AjKwZpx500K2/ZTwT62FKJ1uDiJXSKA==
+"@abp/malihu-custom-scrollbar-plugin@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-10.4.1.tgz#fee2f4ffe0b6a56ec1afddc51217bd569be9163c"
+ integrity sha512-iCvuDqoRtM0HtWToyzbox14kE9Y9E3DFRbE+sISB6vCOL+3gW+xEHmmOMzESWQ3DX+p/q8xidQMxCZsyo2l0IA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/moment@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.0.tgz#6737898b90b579ce5e0d683657757725a4def09d"
- integrity sha512-WUtzjD6+1JGpgS6Yv2Qo/h4jM77LkkasPrywsetmtj/6zyVQWrkk7tKHTCjhAJtdinctcROwIIcwLsELi0nDHg==
+"@abp/moment@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-10.4.1.tgz#43e8e4ebc6a4da3877b0333d463362df46e57f83"
+ integrity sha512-RNx+5gXkI902rWlFbMSHEYd+FAoiXKxfKrmj1hWiK4GSwhY+vike3oAcdGjcpkFyAG1o+5MkL5p9951eHtn1RA==
dependencies:
moment "^2.30.1"
-"@abp/popper.js@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.0.tgz#9d8d09c4e18020b6a75ba30daf6786606f555e84"
- integrity sha512-KR5wGZ/MfR1rOPcmFr5ekraYhOSRul9gqempir69hlqrFKUFqt46F9/wLWyaJ7vlsMU6o4gBo6/jE5tICIpzNw==
+"@abp/popper.js@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-10.4.1.tgz#616691ccdd8632e84bf9419e59db841ef2ea610c"
+ integrity sha512-74kOjXTb4FRbg5t4dTsZ11io9iuEG38IjPyYue/1yIXVbc2hruIhcJC9V3HFZLirQv1s1rkRqmnf38kVjUiKHA==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
"@popperjs/core" "^2.11.8"
-"@abp/select2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.0.tgz#e744988abf81e2194a5850acc4ac1333e9578df8"
- integrity sha512-tyAdGzX32joI5vw+MUJGR0iToWCGZrbQg/zKeoCib80Zx5cn+e6GXj6wZyPbsJgVm0jZ7zBweWt3x8HzW9N8Ww==
+"@abp/select2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-10.4.1.tgz#8729f7648073ecedc93915d3c618d10c3c557cbb"
+ integrity sha512-BtjhMMYKcHl1ZN04L+iWhQWzzqKGbpHi8tMe6o75ZunIpVtIFlIPUpzVUI0AaH6t2sIhlrYFEoxvGxA31lcIXw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
select2 "^4.0.13"
-"@abp/sweetalert2@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.0.tgz#65cb26c8c7c9c02158c9a487969eef033fe04a73"
- integrity sha512-kyVMlfnI6MZojJlaRstdHj/CL3olOn4BszjQ155UQaDsGHUu0THmbhpfi4P0q3TCLLzcLM4pkuY3wJHPNl3ZOw==
+"@abp/sweetalert2@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-10.4.1.tgz#68b4abe96c71b05d956c362edc19ccce8b9bbe42"
+ integrity sha512-6Ce7uR49sqJBkqRfR56cn6jI898+xXHbWgJV+VHN+Dm6w6WX5MbEiOnjF3VLwaq0pwI3FeoCALZAAgra6t9vVw==
dependencies:
- "@abp/core" "~10.4.0"
+ "@abp/core" "~10.4.1"
sweetalert2 "^11.23.0"
-"@abp/timeago@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.0.tgz#100fc0598e3a605346397f8a395bb96dc70f429d"
- integrity sha512-G0ppO7Evai3DdhSg4ozxQpvIke0t3vyg63pNdfOtAPngmuam7WBM1WemBi4u29M84WcSfmk4KuAubXO0aCJgDg==
+"@abp/timeago@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-10.4.1.tgz#a01c3840eb3c1e67b5c9fdd0ead020acb01d6676"
+ integrity sha512-sh1afPeBSsL1RNBhWRn4FOD1ZgRE8HQc0zOhCAl6Kb7WXWcDuP8RPKbGLolnpNHgXfz12lhE6TsbsNFAaCGYjg==
dependencies:
- "@abp/jquery" "~10.4.0"
+ "@abp/jquery" "~10.4.1"
timeago "^1.6.7"
-"@abp/utils@~10.4.0":
- version "10.4.0"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.0.tgz#75175f798e58643c0dec1e85a502186c811e9226"
- integrity sha512-BPc7KGDcbdFZ4GonAt3SOi/gYhG+iXI76TMlAzSKMBRhBU0vxFS8I/pb7U5zX0Gjh5M+aT0l2vA3l+POCHPBfw==
+"@abp/utils@~10.4.1":
+ version "10.4.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-10.4.1.tgz#b5c7b57e3c2ef8f87c0c5780995d82a7baf2ee9d"
+ integrity sha512-kPp7PsaMni81vQK3J1F4j3Eem4dBlZuqIYR6QWbO+udgS5CzYGJagdw+HsOGer6YzJHhcGFfe0LcxS1z/VsFDQ==
dependencies:
just-compare "^2.3.0"
diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/Pages/SettingManagement/SettingManagement.razor b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/Pages/SettingManagement/SettingManagement.razor
index 9bb7e1362c..a9ccb02a6a 100644
--- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/Pages/SettingManagement/SettingManagement.razor
+++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/Pages/SettingManagement/SettingManagement.razor
@@ -15,13 +15,13 @@
- @if (string.IsNullOrEmpty(SelectedGroup))
+ @if (_loading)
{
}
- else
+ else if (SettingComponentCreationContext != null && SettingComponentCreationContext.Groups.Any())
{
setting.Providers.Contains(p.Name)).ToList()
+ : providerList;
+
+ if (!settingProviderList.Any())
+ {
+ continue;
+ }
+
string value = null;
if (setting.IsInherited)
{
- foreach (var provider in providerList)
+ foreach (var provider in settingProviderList)
{
var providerValue = await provider.GetOrNullAsync(
setting,
@@ -91,7 +100,7 @@ public class SettingManager : ISettingManager, ISingletonDependency
}
else
{
- value = await providerList[0].GetOrNullAsync(
+ value = await settingProviderList[0].GetOrNullAsync(
setting,
providerKey
);
@@ -118,6 +127,11 @@ public class SettingManager : ISettingManager, ISingletonDependency
var setting = await SettingDefinitionManager.GetAsync(name);
+ if (setting.Providers.Any() && !setting.Providers.Contains(providerName))
+ {
+ throw new AbpException($"The setting named '{name}' is not compatible with the provider named '{providerName}'");
+ }
+
var providers = Enumerable
.Reverse(Providers)
.SkipWhile(p => p.Name != providerName)
@@ -188,6 +202,11 @@ public class SettingManager : ISettingManager, ISingletonDependency
providers = providers.TakeWhile(c => c.Name == providerName);
}
+ if (setting.Providers.Any())
+ {
+ providers = providers.Where(p => setting.Providers.Contains(p.Name));
+ }
+
string value = null;
foreach (var provider in providers)
{
diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/TestSettingDefinitionProvider.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/TestSettingDefinitionProvider.cs
index c19d044d8e..d881f29fb1 100644
--- a/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/TestSettingDefinitionProvider.cs
+++ b/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/TestSettingDefinitionProvider.cs
@@ -4,6 +4,9 @@ namespace Volo.Abp.SettingManagement;
public class TestSettingDefinitionProvider : SettingDefinitionProvider
{
+ public const string UserOnlySetting = "UserOnlySetting";
+ public const string GlobalOnlySetting = "GlobalOnlySetting";
+
public override void Define(ISettingDefinitionContext context)
{
context.Add(new SettingDefinition("MySetting1"));
@@ -11,7 +14,9 @@ public class TestSettingDefinitionProvider : SettingDefinitionProvider
context.Add(new SettingDefinition("MySetting3", "123"));
context.Add(new SettingDefinition("MySettingWithoutInherit", isInherited: false));
context.Add(new SettingDefinition("SettingNotSetInStore", defaultValue: "default-value"));
-
-
+ context.Add(new SettingDefinition(UserOnlySetting)
+ .WithProviders(UserSettingValueProvider.ProviderName));
+ context.Add(new SettingDefinition(GlobalOnlySetting)
+ .WithProviders(GlobalSettingValueProvider.ProviderName));
}
}
diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs
index 95691f53a9..075d4e65f2 100644
--- a/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs
+++ b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs
@@ -10,11 +10,13 @@ public class SettingManager_Basic_Tests : SettingsTestBase
{
private readonly ISettingManager _settingManager;
private readonly ISettingProvider _settingProvider;
+ private readonly ISettingManagementStore _settingManagementStore;
public SettingManager_Basic_Tests()
{
_settingManager = GetRequiredService();
_settingProvider = GetRequiredService();
+ _settingManagementStore = GetRequiredService();
}
[Fact]
@@ -74,4 +76,101 @@ public class SettingManager_Basic_Tests : SettingsTestBase
exception.Message.ShouldBe("Unknown setting value provider: UndefinedProvider");
}
+
+ [Fact]
+ public async Task Set_Should_Throw_Exception_If_Provider_Not_In_Providers()
+ {
+ var exception = await Assert.ThrowsAsync(async () =>
+ {
+ await _settingManager.SetGlobalAsync(TestSettingDefinitionProvider.UserOnlySetting, "value");
+ });
+
+ exception.Message.ShouldContain(TestSettingDefinitionProvider.UserOnlySetting);
+ exception.Message.ShouldContain(GlobalSettingValueProvider.ProviderName);
+ }
+
+ [Fact]
+ public async Task Set_Should_Allow_Setting_For_Provider_In_Providers()
+ {
+ var userId = Guid.NewGuid();
+
+ await _settingManager.SetForUserAsync(userId, TestSettingDefinitionProvider.UserOnlySetting, "value");
+
+ (await _settingManager.GetOrNullForUserAsync(
+ TestSettingDefinitionProvider.UserOnlySetting,
+ userId)).ShouldBe("value");
+ }
+
+ [Fact]
+ public async Task GetAllAsync_Should_Not_Return_Settings_With_Disallowed_Provider()
+ {
+ var userId = Guid.NewGuid();
+ await _settingManager.SetForUserAsync(userId, TestSettingDefinitionProvider.UserOnlySetting, "user-value");
+
+ var globalSettings = await _settingManager.GetAllGlobalAsync();
+ globalSettings.ShouldNotContain(x => x.Name == TestSettingDefinitionProvider.UserOnlySetting);
+
+ var userSettings = await _settingManager.GetAllForUserAsync(userId);
+ userSettings.ShouldContain(x =>
+ x.Name == TestSettingDefinitionProvider.UserOnlySetting && x.Value == "user-value");
+ }
+
+ [Fact]
+ public async Task GetOrNullForGlobal_Should_Not_Read_From_Disallowed_Provider()
+ {
+ await _settingManagementStore.SetAsync(
+ TestSettingDefinitionProvider.UserOnlySetting,
+ "stale",
+ GlobalSettingValueProvider.ProviderName,
+ null);
+
+ (await _settingManager.GetOrNullGlobalAsync(
+ TestSettingDefinitionProvider.UserOnlySetting)).ShouldBeNull();
+ }
+
+ [Fact]
+ public async Task GetAllForUser_Should_Inherit_Setting_From_Allowed_Upstream_Provider()
+ {
+ await _settingManager.SetGlobalAsync(
+ TestSettingDefinitionProvider.GlobalOnlySetting,
+ "global-value");
+
+ var userSettings = await _settingManager.GetAllForUserAsync(Guid.NewGuid());
+
+ userSettings.ShouldContain(x =>
+ x.Name == TestSettingDefinitionProvider.GlobalOnlySetting && x.Value == "global-value");
+ }
+
+ [Fact]
+ public async Task GetOrNullForUser_Should_Inherit_Value_From_Allowed_Upstream_Provider()
+ {
+ await _settingManager.SetGlobalAsync(
+ TestSettingDefinitionProvider.GlobalOnlySetting,
+ "global-value");
+
+ (await _settingManager.GetOrNullForUserAsync(
+ TestSettingDefinitionProvider.GlobalOnlySetting,
+ Guid.NewGuid())).ShouldBe("global-value");
+ }
+
+ [Fact]
+ public async Task SetForUser_Should_Not_Be_Cleared_By_Stale_Disallowed_Provider_Fallback()
+ {
+ var userId = Guid.NewGuid();
+
+ await _settingManagementStore.SetAsync(
+ TestSettingDefinitionProvider.UserOnlySetting,
+ "user-value",
+ GlobalSettingValueProvider.ProviderName,
+ null);
+
+ await _settingManager.SetForUserAsync(
+ userId,
+ TestSettingDefinitionProvider.UserOnlySetting,
+ "user-value");
+
+ (await _settingManager.GetOrNullForUserAsync(
+ TestSettingDefinitionProvider.UserOnlySetting,
+ userId)).ShouldBe("user-value");
+ }
}
diff --git a/modules/virtual-file-explorer/app/package.json b/modules/virtual-file-explorer/app/package.json
index fd48d34ef1..04a3e3f5d9 100644
--- a/modules/virtual-file-explorer/app/package.json
+++ b/modules/virtual-file-explorer/app/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0",
- "@abp/virtual-file-explorer": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1",
+ "@abp/virtual-file-explorer": "~10.4.1"
}
}
diff --git a/npm/lerna.json b/npm/lerna.json
index 6f54406585..9d723d4557 100644
--- a/npm/lerna.json
+++ b/npm/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"packages": [
"packs/*"
],
diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json
index 51a32a2521..f857a0538a 100644
--- a/npm/ng-packs/package.json
+++ b/npm/ng-packs/package.json
@@ -48,8 +48,8 @@
},
"private": true,
"devDependencies": {
- "@abp/ng.theme.lepton-x": "~5.4.0",
- "@abp/utils": "~10.4.0",
+ "@abp/ng.theme.lepton-x": "~5.4.1",
+ "@abp/utils": "~10.4.1",
"@angular-devkit/build-angular": "~21.2.0",
"@angular-devkit/core": "~21.2.0",
"@angular-devkit/schematics": "~21.2.0",
diff --git a/npm/ng-packs/packages/account-core/package.json b/npm/ng-packs/packages/account-core/package.json
index 3a92359eb5..961e33ceeb 100644
--- a/npm/ng-packs/packages/account-core/package.json
+++ b/npm/ng-packs/packages/account-core/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.account.core",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.core": "~10.4.0",
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.core": "~10.4.1",
+ "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json
index 494ac14976..d88209dacb 100644
--- a/npm/ng-packs/packages/account/package.json
+++ b/npm/ng-packs/packages/account/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.account",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.account.core": "~10.4.0",
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.account.core": "~10.4.1",
+ "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/cms-kit/package.json b/npm/ng-packs/packages/cms-kit/package.json
index e12a12b08a..9b3ba2e069 100644
--- a/npm/ng-packs/packages/cms-kit/package.json
+++ b/npm/ng-packs/packages/cms-kit/package.json
@@ -1,15 +1,15 @@
{
"name": "@abp/ng.cms-kit",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.components": "~10.4.0",
- "@abp/ng.setting-management": "~10.4.0",
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.components": "~10.4.1",
+ "@abp/ng.setting-management": "~10.4.1",
+ "@abp/ng.theme.shared": "~10.4.1",
"@toast-ui/editor": "~3.0.0",
"codemirror": "~6.0.0",
"tslib": "^2.0.0"
diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json
index e3a5feeb66..aa206e17ff 100644
--- a/npm/ng-packs/packages/components/package.json
+++ b/npm/ng-packs/packages/components/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.components",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"peerDependencies": {
- "@abp/ng.core": ">=10.4.0",
- "@abp/ng.theme.shared": ">=10.4.0"
+ "@abp/ng.core": ">=10.4.1",
+ "@abp/ng.theme.shared": ">=10.4.1"
},
"dependencies": {
"chart.js": "^3.5.1",
diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json
index 0c590df172..fc67769e16 100644
--- a/npm/ng-packs/packages/core/package.json
+++ b/npm/ng-packs/packages/core/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.core",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/utils": "~10.4.0",
+ "@abp/utils": "~10.4.1",
"just-clone": "^6.0.0",
"just-compare": "^2.0.0",
"ts-toolbelt": "^9.0.0",
diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json
index 69219c053c..b833c3c4dc 100644
--- a/npm/ng-packs/packages/feature-management/package.json
+++ b/npm/ng-packs/packages/feature-management/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.feature-management",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0"
},
"peerDependencies": {
diff --git a/npm/ng-packs/packages/generators/package.json b/npm/ng-packs/packages/generators/package.json
index 02cceff83b..386dd493db 100644
--- a/npm/ng-packs/packages/generators/package.json
+++ b/npm/ng-packs/packages/generators/package.json
@@ -1,6 +1,6 @@
{
"name": "@abp/nx.generators",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"generators": "./generators.json",
"type": "commonjs",
diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json
index 9de16b4b54..6a7758da0a 100644
--- a/npm/ng-packs/packages/identity/package.json
+++ b/npm/ng-packs/packages/identity/package.json
@@ -1,15 +1,15 @@
{
"name": "@abp/ng.identity",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.components": "~10.4.0",
- "@abp/ng.permission-management": "~10.4.0",
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.components": "~10.4.1",
+ "@abp/ng.permission-management": "~10.4.1",
+ "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/oauth/package.json b/npm/ng-packs/packages/oauth/package.json
index 5aff284c44..37f43a7e54 100644
--- a/npm/ng-packs/packages/oauth/package.json
+++ b/npm/ng-packs/packages/oauth/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.oauth",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.core": "~10.4.0",
- "@abp/utils": "~10.4.0",
+ "@abp/ng.core": "~10.4.1",
+ "@abp/utils": "~10.4.1",
"angular-oauth2-oidc": "^20.0.0",
"just-clone": "^6.0.0",
"just-compare": "^2.0.0",
diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json
index 73c2f067f6..9cfb02939e 100644
--- a/npm/ng-packs/packages/permission-management/package.json
+++ b/npm/ng-packs/packages/permission-management/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.permission-management",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0"
},
"peerDependencies": {
diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json
index 46ecaef37a..d4c3010388 100644
--- a/npm/ng-packs/packages/schematics/package.json
+++ b/npm/ng-packs/packages/schematics/package.json
@@ -1,6 +1,6 @@
{
"name": "@abp/ng.schematics",
- "version": "10.4.0",
+ "version": "10.4.1",
"author": "",
"schematics": "./collection.json",
"dependencies": {
diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json
index 8f42c8e1f7..7d8cede5e6 100644
--- a/npm/ng-packs/packages/setting-management/package.json
+++ b/npm/ng-packs/packages/setting-management/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.setting-management",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.components": "~10.4.0",
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.components": "~10.4.1",
+ "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0"
},
"peerDependencies": {
diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json
index 7c1095880f..12071c8b07 100644
--- a/npm/ng-packs/packages/tenant-management/package.json
+++ b/npm/ng-packs/packages/tenant-management/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.tenant-management",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.feature-management": "~10.4.0",
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.feature-management": "~10.4.1",
+ "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json
index 4aedfb963f..a8f7073b3c 100644
--- a/npm/ng-packs/packages/theme-basic/package.json
+++ b/npm/ng-packs/packages/theme-basic/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.theme.basic",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.account.core": "~10.4.0",
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.account.core": "~10.4.1",
+ "@abp/ng.theme.shared": "~10.4.1",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json
index 4d3915f869..171497e152 100644
--- a/npm/ng-packs/packages/theme-shared/package.json
+++ b/npm/ng-packs/packages/theme-shared/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.theme.shared",
- "version": "10.4.0",
+ "version": "10.4.1",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.core": "~10.4.0",
+ "@abp/ng.core": "~10.4.1",
"@fortawesome/fontawesome-free": "^6.0.0",
"@ng-bootstrap/ng-bootstrap": "~20.0.0",
"@ngx-validate/core": "^0.2.0",
diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json
index df098a575d..742404ac76 100644
--- a/npm/packs/anchor-js/package.json
+++ b/npm/packs/anchor-js/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/anchor-js",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"anchor-js": "^5.0.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/aspnetcore.components.server.basictheme/package.json b/npm/packs/aspnetcore.components.server.basictheme/package.json
index 219a3daf76..0c8d18df1f 100644
--- a/npm/packs/aspnetcore.components.server.basictheme/package.json
+++ b/npm/packs/aspnetcore.components.server.basictheme/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/aspnetcore.components.server.basictheme",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.components.server.theming": "~10.4.0"
+ "@abp/aspnetcore.components.server.theming": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/aspnetcore.components.server.theming/package.json b/npm/packs/aspnetcore.components.server.theming/package.json
index 4e0417d56a..9b1eea4b0d 100644
--- a/npm/packs/aspnetcore.components.server.theming/package.json
+++ b/npm/packs/aspnetcore.components.server.theming/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/aspnetcore.components.server.theming",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/bootstrap": "~10.4.0",
- "@abp/font-awesome": "~10.4.0"
+ "@abp/bootstrap": "~10.4.1",
+ "@abp/font-awesome": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json
index 755b3200e1..4355ae5cfa 100644
--- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json
+++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/aspnetcore.mvc.ui.theme.basic",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.shared": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.shared": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json
index ba7ddefd63..28fc90f849 100644
--- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json
+++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/aspnetcore.mvc.ui.theme.shared",
"repository": {
"type": "git",
@@ -10,20 +10,20 @@
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.mvc.ui": "~10.4.0",
- "@abp/bootstrap": "~10.4.0",
- "@abp/bootstrap-datepicker": "~10.4.0",
- "@abp/bootstrap-daterangepicker": "~10.4.0",
- "@abp/datatables.net-bs5": "~10.4.0",
- "@abp/font-awesome": "~10.4.0",
- "@abp/jquery-validation-unobtrusive": "~10.4.0",
- "@abp/lodash": "~10.4.0",
- "@abp/luxon": "~10.4.0",
- "@abp/malihu-custom-scrollbar-plugin": "~10.4.0",
- "@abp/moment": "~10.4.0",
- "@abp/select2": "~10.4.0",
- "@abp/sweetalert2": "~10.4.0",
- "@abp/timeago": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui": "~10.4.1",
+ "@abp/bootstrap": "~10.4.1",
+ "@abp/bootstrap-datepicker": "~10.4.1",
+ "@abp/bootstrap-daterangepicker": "~10.4.1",
+ "@abp/datatables.net-bs5": "~10.4.1",
+ "@abp/font-awesome": "~10.4.1",
+ "@abp/jquery-validation-unobtrusive": "~10.4.1",
+ "@abp/lodash": "~10.4.1",
+ "@abp/luxon": "~10.4.1",
+ "@abp/malihu-custom-scrollbar-plugin": "~10.4.1",
+ "@abp/moment": "~10.4.1",
+ "@abp/select2": "~10.4.1",
+ "@abp/sweetalert2": "~10.4.1",
+ "@abp/timeago": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/aspnetcore.mvc.ui/package-lock.json b/npm/packs/aspnetcore.mvc.ui/package-lock.json
index a25febdb8c..30ab7f9aa0 100644
--- a/npm/packs/aspnetcore.mvc.ui/package-lock.json
+++ b/npm/packs/aspnetcore.mvc.ui/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "@abp/aspnetcore.mvc.ui",
- "version": "10.4.0",
+ "version": "10.4.1",
"lockfileVersion": 1,
"requires": true,
"packages": {
diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json
index 6e6897df9f..045b32546b 100644
--- a/npm/packs/aspnetcore.mvc.ui/package.json
+++ b/npm/packs/aspnetcore.mvc.ui/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/aspnetcore.mvc.ui",
"repository": {
"type": "git",
diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json
index e7ddbdc5dc..aefca460eb 100644
--- a/npm/packs/blogging/package.json
+++ b/npm/packs/blogging/package.json
@@ -1,14 +1,14 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/blogging",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.shared": "~10.4.0",
- "@abp/owl.carousel": "~10.4.0",
- "@abp/prismjs": "~10.4.0",
- "@abp/tui-editor": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.shared": "~10.4.1",
+ "@abp/owl.carousel": "~10.4.1",
+ "@abp/prismjs": "~10.4.1",
+ "@abp/tui-editor": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json
index cc64ddcab8..812b60ea91 100644
--- a/npm/packs/bootstrap-datepicker/package.json
+++ b/npm/packs/bootstrap-datepicker/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/bootstrap-datepicker",
"repository": {
"type": "git",
diff --git a/npm/packs/bootstrap-daterangepicker/package.json b/npm/packs/bootstrap-daterangepicker/package.json
index a1e73a6e2b..2cc23cd681 100644
--- a/npm/packs/bootstrap-daterangepicker/package.json
+++ b/npm/packs/bootstrap-daterangepicker/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/bootstrap-daterangepicker",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/moment": "~10.4.0",
+ "@abp/moment": "~10.4.1",
"bootstrap-daterangepicker": "^3.1.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json
index a67c77d53d..3214a1b175 100644
--- a/npm/packs/bootstrap/package.json
+++ b/npm/packs/bootstrap/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/bootstrap",
"repository": {
"type": "git",
@@ -10,8 +10,8 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
- "@abp/popper.js": "~10.4.0",
+ "@abp/core": "~10.4.1",
+ "@abp/popper.js": "~10.4.1",
"bootstrap": "^5.3.8"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json
index cf1ae9b469..766fd8d2a8 100644
--- a/npm/packs/chart.js/package.json
+++ b/npm/packs/chart.js/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/chart.js",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json
index d88e8abe1b..cc02ca081f 100644
--- a/npm/packs/clipboard/package.json
+++ b/npm/packs/clipboard/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/clipboard",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"clipboard": "^2.0.11"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/cms-kit.admin/package.json b/npm/packs/cms-kit.admin/package.json
index 06cc7002f3..a82fdeb2b1 100644
--- a/npm/packs/cms-kit.admin/package.json
+++ b/npm/packs/cms-kit.admin/package.json
@@ -1,16 +1,16 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/cms-kit.admin",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/codemirror": "~10.4.0",
- "@abp/jstree": "~10.4.0",
- "@abp/markdown-it": "~10.4.0",
- "@abp/slugify": "~10.4.0",
- "@abp/tui-editor": "~10.4.0",
- "@abp/uppy": "~10.4.0"
+ "@abp/codemirror": "~10.4.1",
+ "@abp/jstree": "~10.4.1",
+ "@abp/markdown-it": "~10.4.1",
+ "@abp/slugify": "~10.4.1",
+ "@abp/tui-editor": "~10.4.1",
+ "@abp/uppy": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/cms-kit.public/package.json b/npm/packs/cms-kit.public/package.json
index 2cfed064d1..56595c2729 100644
--- a/npm/packs/cms-kit.public/package.json
+++ b/npm/packs/cms-kit.public/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/cms-kit.public",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/highlight.js": "~10.4.0",
- "@abp/star-rating-svg": "~10.4.0"
+ "@abp/highlight.js": "~10.4.1",
+ "@abp/star-rating-svg": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/cms-kit/package.json b/npm/packs/cms-kit/package.json
index 7bb036947f..9d66875d30 100644
--- a/npm/packs/cms-kit/package.json
+++ b/npm/packs/cms-kit/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/cms-kit",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/cms-kit.admin": "~10.4.0",
- "@abp/cms-kit.public": "~10.4.0"
+ "@abp/cms-kit.admin": "~10.4.1",
+ "@abp/cms-kit.public": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json
index 88ec6b738e..661ad3e6b2 100644
--- a/npm/packs/codemirror/package.json
+++ b/npm/packs/codemirror/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/codemirror",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"codemirror": "^5.65.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json
index 7240e0a35c..6e6b2f8847 100644
--- a/npm/packs/core/package.json
+++ b/npm/packs/core/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/core",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/utils": "~10.4.0"
+ "@abp/utils": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json
index 3ac34528c8..e8945753d0 100644
--- a/npm/packs/cropperjs/package.json
+++ b/npm/packs/cropperjs/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/cropperjs",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"cropperjs": "^1.6.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json
index 2651bacc00..a2c0fc1303 100644
--- a/npm/packs/datatables.net-bs4/package.json
+++ b/npm/packs/datatables.net-bs4/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/datatables.net-bs4",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/datatables.net": "~10.4.0",
+ "@abp/datatables.net": "~10.4.1",
"datatables.net-bs4": "^2.3.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/datatables.net-bs5/package.json b/npm/packs/datatables.net-bs5/package.json
index 87e4148b44..62578063ab 100644
--- a/npm/packs/datatables.net-bs5/package.json
+++ b/npm/packs/datatables.net-bs5/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/datatables.net-bs5",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/datatables.net": "~10.4.0",
+ "@abp/datatables.net": "~10.4.1",
"datatables.net-bs5": "^2.3.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json
index 68ada5243e..fab9b5278e 100644
--- a/npm/packs/datatables.net/package.json
+++ b/npm/packs/datatables.net/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/datatables.net",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.4.0",
+ "@abp/jquery": "~10.4.1",
"datatables.net": "^2.3.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json
index 7dbdbe62c3..e8056eb5b0 100644
--- a/npm/packs/docs/package.json
+++ b/npm/packs/docs/package.json
@@ -1,15 +1,15 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/docs",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/anchor-js": "~10.4.0",
- "@abp/clipboard": "~10.4.0",
- "@abp/malihu-custom-scrollbar-plugin": "~10.4.0",
- "@abp/popper.js": "~10.4.0",
- "@abp/prismjs": "~10.4.0"
+ "@abp/anchor-js": "~10.4.1",
+ "@abp/clipboard": "~10.4.1",
+ "@abp/malihu-custom-scrollbar-plugin": "~10.4.1",
+ "@abp/popper.js": "~10.4.1",
+ "@abp/prismjs": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json
index e3150bcce5..c53ed7e5e9 100644
--- a/npm/packs/flag-icon-css/package.json
+++ b/npm/packs/flag-icon-css/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/flag-icon-css",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/flag-icons/package.json b/npm/packs/flag-icons/package.json
index 03d5e89951..a5f462352d 100644
--- a/npm/packs/flag-icons/package.json
+++ b/npm/packs/flag-icons/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/flag-icons",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json
index d6a63b817b..de620bad94 100644
--- a/npm/packs/font-awesome/package.json
+++ b/npm/packs/font-awesome/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/font-awesome",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"@fortawesome/fontawesome-free": "^7.0.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json
index 9905d5157e..6da4fb82ab 100644
--- a/npm/packs/highlight.js/package.json
+++ b/npm/packs/highlight.js/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/highlight.js",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"@highlightjs/cdn-assets": "~11.11.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json
index 4df991d2bc..27fe737229 100644
--- a/npm/packs/jquery-form/package.json
+++ b/npm/packs/jquery-form/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/jquery-form",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.4.0",
+ "@abp/jquery": "~10.4.1",
"jquery-form": "^4.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json
index 0d7b73cd14..3b5ea046ca 100644
--- a/npm/packs/jquery-validation-unobtrusive/package.json
+++ b/npm/packs/jquery-validation-unobtrusive/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/jquery-validation-unobtrusive",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery-validation": "~10.4.0",
+ "@abp/jquery-validation": "~10.4.1",
"jquery-validation-unobtrusive": "^4.0.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json
index c866883ffd..98e5d79779 100644
--- a/npm/packs/jquery-validation/package.json
+++ b/npm/packs/jquery-validation/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/jquery-validation",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.4.0",
+ "@abp/jquery": "~10.4.1",
"jquery-validation": "^1.21.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json
index dd8e5421a0..d781acfa33 100644
--- a/npm/packs/jquery/package.json
+++ b/npm/packs/jquery/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/jquery",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"jquery": "~3.7.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json
index a937aa4626..1f12c0a082 100644
--- a/npm/packs/jstree/package.json
+++ b/npm/packs/jstree/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/jstree",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.4.0",
+ "@abp/jquery": "~10.4.1",
"jstree": "^3.3.17"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json
index 8bc0bb9e65..f86444e828 100644
--- a/npm/packs/lodash/package.json
+++ b/npm/packs/lodash/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/lodash",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"lodash": "^4.18.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json
index 8f4a25b404..440709840b 100644
--- a/npm/packs/luxon/package.json
+++ b/npm/packs/luxon/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/luxon",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"luxon": "^3.7.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json
index 34da2724f0..d19f6fbdbb 100644
--- a/npm/packs/malihu-custom-scrollbar-plugin/package.json
+++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/malihu-custom-scrollbar-plugin",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"malihu-custom-scrollbar-plugin": "^3.1.5"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json
index da4b1b42ea..983bde76f7 100644
--- a/npm/packs/markdown-it/package.json
+++ b/npm/packs/markdown-it/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/markdown-it",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"markdown-it": "^14.1.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/moment/package.json b/npm/packs/moment/package.json
index 42dc61b15e..ffb709025b 100644
--- a/npm/packs/moment/package.json
+++ b/npm/packs/moment/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/moment",
"repository": {
"type": "git",
diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json
index b891f5935e..576e0ebef9 100644
--- a/npm/packs/owl.carousel/package.json
+++ b/npm/packs/owl.carousel/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/owl.carousel",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"owl.carousel": "^2.3.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json
index 617d7d6c76..08ae576906 100644
--- a/npm/packs/popper.js/package.json
+++ b/npm/packs/popper.js/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/popper.js",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"@popperjs/core": "^2.11.8"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json
index cf688d8983..206b7d5b9c 100644
--- a/npm/packs/prismjs/package.json
+++ b/npm/packs/prismjs/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/prismjs",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/clipboard": "~10.4.0",
- "@abp/core": "~10.4.0",
+ "@abp/clipboard": "~10.4.1",
+ "@abp/core": "~10.4.1",
"prismjs": "^1.30.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/qrcode/package.json b/npm/packs/qrcode/package.json
index cacad4a3ea..feb7e2d166 100644
--- a/npm/packs/qrcode/package.json
+++ b/npm/packs/qrcode/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/qrcode",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0"
+ "@abp/core": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json
index 6b542d55f9..c0fec126be 100644
--- a/npm/packs/select2/package.json
+++ b/npm/packs/select2/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/select2",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"select2": "^4.0.13"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json
index df66a2992d..0305d42867 100644
--- a/npm/packs/signalr/package.json
+++ b/npm/packs/signalr/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/signalr",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"@microsoft/signalr": "~9.0.6"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/slugify/package.json b/npm/packs/slugify/package.json
index 987d1db8df..a6dfefff28 100644
--- a/npm/packs/slugify/package.json
+++ b/npm/packs/slugify/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/slugify",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/star-rating-svg/package.json b/npm/packs/star-rating-svg/package.json
index c91f372ded..e1efb838e3 100644
--- a/npm/packs/star-rating-svg/package.json
+++ b/npm/packs/star-rating-svg/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/star-rating-svg",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.4.0",
+ "@abp/jquery": "~10.4.1",
"star-rating-svg": "^3.5.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/sweetalert2/package.json b/npm/packs/sweetalert2/package.json
index f05e59638e..06ff286ae9 100644
--- a/npm/packs/sweetalert2/package.json
+++ b/npm/packs/sweetalert2/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/sweetalert2",
"publishConfig": {
"access": "public"
@@ -10,7 +10,7 @@
"directory": "npm/packs/sweetalert2"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"sweetalert2": "^11.23.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json
index b82344d248..de671bcc2a 100644
--- a/npm/packs/timeago/package.json
+++ b/npm/packs/timeago/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/timeago",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.4.0",
+ "@abp/jquery": "~10.4.1",
"timeago": "^1.6.7"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json
index 791e89876a..d6f98356a6 100644
--- a/npm/packs/toastr/package.json
+++ b/npm/packs/toastr/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/toastr",
"repository": {
"type": "git",
@@ -10,7 +10,7 @@
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.4.0",
+ "@abp/jquery": "~10.4.1",
"toastr": "^2.1.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json
index 660f8f2b23..b07e7d571a 100644
--- a/npm/packs/tui-editor/package.json
+++ b/npm/packs/tui-editor/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/tui-editor",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~10.4.0",
- "@abp/prismjs": "~10.4.0"
+ "@abp/jquery": "~10.4.1",
+ "@abp/prismjs": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json
index 62eee541e4..3dcc679b6b 100644
--- a/npm/packs/uppy/package.json
+++ b/npm/packs/uppy/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/uppy",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"uppy": "^5.1.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json
index b707809042..3caf7fee96 100644
--- a/npm/packs/utils/package.json
+++ b/npm/packs/utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@abp/utils",
- "version": "10.4.0",
+ "version": "10.4.1",
"scripts": {
"prepublishOnly": "yarn install --ignore-scripts && node prepublish.js",
"ng": "ng",
diff --git a/npm/packs/vee-validate/package.json b/npm/packs/vee-validate/package.json
index 5b236f5f6c..d32e0a5b39 100644
--- a/npm/packs/vee-validate/package.json
+++ b/npm/packs/vee-validate/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/vee-validate",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/vue": "~10.4.0",
+ "@abp/vue": "~10.4.1",
"vee-validate": "~3.4.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json
index eddad1a6eb..48b83644dc 100644
--- a/npm/packs/virtual-file-explorer/package.json
+++ b/npm/packs/virtual-file-explorer/package.json
@@ -1,12 +1,12 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/virtual-file-explorer",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/clipboard": "~10.4.0",
- "@abp/prismjs": "~10.4.0"
+ "@abp/clipboard": "~10.4.1",
+ "@abp/prismjs": "~10.4.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
"homepage": "https://abp.io",
diff --git a/npm/packs/vue/package.json b/npm/packs/vue/package.json
index 3857af7964..c6c2c26413 100644
--- a/npm/packs/vue/package.json
+++ b/npm/packs/vue/package.json
@@ -1,5 +1,5 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/vue",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/zxcvbn/package.json b/npm/packs/zxcvbn/package.json
index 4e241d0d21..bab0b48765 100644
--- a/npm/packs/zxcvbn/package.json
+++ b/npm/packs/zxcvbn/package.json
@@ -1,11 +1,11 @@
{
- "version": "10.4.0",
+ "version": "10.4.1",
"name": "@abp/zxcvbn",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~10.4.0",
+ "@abp/core": "~10.4.1",
"zxcvbn": "^4.4.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",
diff --git a/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip b/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip
index 3a496157f5..b8aace796a 100644
Binary files a/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip and b/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip b/source-code/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip
index e1ca33d049..4a8d2c68ea 100644
Binary files a/source-code/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip and b/source-code/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip b/source-code/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip
index a426ca0b9d..d44ade6314 100644
Binary files a/source-code/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip and b/source-code/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip b/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip
index ebec6915ef..2d6724508c 100644
Binary files a/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip and b/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip b/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip
index 2c55be8f9e..35fb0045af 100644
Binary files a/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip and b/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip b/source-code/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip
index acda6b15dc..e89f47f6a9 100644
Binary files a/source-code/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip and b/source-code/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip b/source-code/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip
index b6b148e695..1658555668 100644
Binary files a/source-code/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip and b/source-code/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.OpenIddict.SourceCode/Volo.Abp.OpenIddict.SourceCode.zip b/source-code/Volo.Abp.OpenIddict.SourceCode/Volo.Abp.OpenIddict.SourceCode.zip
index fd142199d1..72d74a4bf4 100644
Binary files a/source-code/Volo.Abp.OpenIddict.SourceCode/Volo.Abp.OpenIddict.SourceCode.zip and b/source-code/Volo.Abp.OpenIddict.SourceCode/Volo.Abp.OpenIddict.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip b/source-code/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip
index fb77821a9d..2056ceb0ca 100644
Binary files a/source-code/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip and b/source-code/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip b/source-code/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip
index 1b781b64ed..d88453cca4 100644
Binary files a/source-code/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip and b/source-code/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip b/source-code/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip
index ca84861e1b..40adf5397e 100644
Binary files a/source-code/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip and b/source-code/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip b/source-code/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip
index 8287f904b9..f3bae29080 100644
Binary files a/source-code/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip and b/source-code/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip differ
diff --git a/source-code/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip b/source-code/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip
index 24c7e65fb9..5a7374fcdf 100644
Binary files a/source-code/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip and b/source-code/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip differ
diff --git a/source-code/Volo.Blogging.SourceCode/Volo.Blogging.SourceCode.zip b/source-code/Volo.Blogging.SourceCode/Volo.Blogging.SourceCode.zip
index b54d5a2bc2..d4e7f8559c 100644
Binary files a/source-code/Volo.Blogging.SourceCode/Volo.Blogging.SourceCode.zip and b/source-code/Volo.Blogging.SourceCode/Volo.Blogging.SourceCode.zip differ
diff --git a/source-code/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip b/source-code/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip
index c79eae7884..3fb9ca5a97 100644
Binary files a/source-code/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip and b/source-code/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip differ
diff --git a/source-code/Volo.Docs.SourceCode/Volo.Docs.SourceCode.zip b/source-code/Volo.Docs.SourceCode/Volo.Docs.SourceCode.zip
index 085401311d..c00b34ca2f 100644
Binary files a/source-code/Volo.Docs.SourceCode/Volo.Docs.SourceCode.zip and b/source-code/Volo.Docs.SourceCode/Volo.Docs.SourceCode.zip differ
diff --git a/templates/app-nolayers/angular/package.json b/templates/app-nolayers/angular/package.json
index 43cde95c59..11fcc9ee72 100644
--- a/templates/app-nolayers/angular/package.json
+++ b/templates/app-nolayers/angular/package.json
@@ -12,15 +12,15 @@
},
"private": true,
"dependencies": {
- "@abp/ng.account": "~10.4.0",
- "@abp/ng.components": "~10.4.0",
- "@abp/ng.core": "~10.4.0",
- "@abp/ng.identity": "~10.4.0",
- "@abp/ng.oauth": "~10.4.0",
- "@abp/ng.setting-management": "~10.4.0",
- "@abp/ng.tenant-management": "~10.4.0",
- "@abp/ng.theme.lepton-x": "~5.4.0",
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.account": "~10.4.1",
+ "@abp/ng.components": "~10.4.1",
+ "@abp/ng.core": "~10.4.1",
+ "@abp/ng.identity": "~10.4.1",
+ "@abp/ng.oauth": "~10.4.1",
+ "@abp/ng.setting-management": "~10.4.1",
+ "@abp/ng.tenant-management": "~10.4.1",
+ "@abp/ng.theme.lepton-x": "~5.4.1",
+ "@abp/ng.theme.shared": "~10.4.1",
"@angular/animations": "~21.2.0",
"@angular/aria": "~21.2.0",
"@angular/common": "~21.2.0",
@@ -37,7 +37,7 @@
"zone.js": "~0.15.0"
},
"devDependencies": {
- "@abp/ng.schematics": "~10.4.0",
+ "@abp/ng.schematics": "~10.4.1",
"@angular-eslint/builder": "~21.2.0",
"@angular-eslint/eslint-plugin": "~21.2.0",
"@angular-eslint/eslint-plugin-template": "~21.2.0",
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json
index 1ddb8af741..5786d8ef42 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.0",
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0"
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.1",
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json
index 964755e648..61d9a12ad1 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0",
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1",
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.1"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/package.json
index 0fe746056e..b2b35f3f63 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/package.json
index 0fe746056e..b2b35f3f63 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json
index 0fe746056e..b2b35f3f63 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json
index 0fe746056e..b2b35f3f63 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json
index 0fe746056e..b2b35f3f63 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1"
}
}
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json
index 0fe746056e..b2b35f3f63 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1"
}
}
diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json
index 70d14326ac..40ec245b92 100644
--- a/templates/app/angular/package.json
+++ b/templates/app/angular/package.json
@@ -12,15 +12,15 @@
},
"private": true,
"dependencies": {
- "@abp/ng.account": "~10.4.0",
- "@abp/ng.components": "~10.4.0",
- "@abp/ng.core": "~10.4.0",
- "@abp/ng.identity": "~10.4.0",
- "@abp/ng.oauth": "~10.4.0",
- "@abp/ng.setting-management": "~10.4.0",
- "@abp/ng.tenant-management": "~10.4.0",
- "@abp/ng.theme.lepton-x": "~5.4.0",
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.account": "~10.4.1",
+ "@abp/ng.components": "~10.4.1",
+ "@abp/ng.core": "~10.4.1",
+ "@abp/ng.identity": "~10.4.1",
+ "@abp/ng.oauth": "~10.4.1",
+ "@abp/ng.setting-management": "~10.4.1",
+ "@abp/ng.tenant-management": "~10.4.1",
+ "@abp/ng.theme.lepton-x": "~5.4.1",
+ "@abp/ng.theme.shared": "~10.4.1",
"@angular/animations": "~21.2.0",
"@angular/aria": "~21.2.0",
"@angular/common": "~21.2.0",
@@ -37,7 +37,7 @@
"zone.js": "~0.15.0"
},
"devDependencies": {
- "@abp/ng.schematics": "~10.4.0",
+ "@abp/ng.schematics": "~10.4.1",
"@angular-eslint/builder": "~21.2.0",
"@angular-eslint/eslint-plugin": "~21.2.0",
"@angular-eslint/eslint-plugin-template": "~21.2.0",
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json
index 4f52fa5c73..f4b4a134c9 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json
@@ -3,6 +3,6 @@
"name": "my-app-authserver",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json
index 964755e648..61d9a12ad1 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0",
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1",
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.1"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json
index 964755e648..61d9a12ad1 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0",
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1",
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.1"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json
index 964755e648..61d9a12ad1 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0",
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1",
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.1"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json
index 964755e648..61d9a12ad1 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0",
- "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1",
+ "@abp/aspnetcore.components.server.leptonxlitetheme": "~5.4.1"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json
index 0fe746056e..b2b35f3f63 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json
index 0fe746056e..b2b35f3f63 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json
index 0fe746056e..b2b35f3f63 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~5.4.1"
}
}
diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json
index a0be416c22..4afced7bb5 100644
--- a/templates/module/angular/package.json
+++ b/templates/module/angular/package.json
@@ -13,15 +13,15 @@
},
"private": true,
"dependencies": {
- "@abp/ng.account": "~10.4.0",
- "@abp/ng.components": "~10.4.0",
- "@abp/ng.core": "~10.4.0",
- "@abp/ng.identity": "~10.4.0",
- "@abp/ng.oauth": "~10.4.0",
- "@abp/ng.setting-management": "~10.4.0",
- "@abp/ng.tenant-management": "~10.4.0",
- "@abp/ng.theme.basic": "~10.4.0",
- "@abp/ng.theme.shared": "~10.4.0",
+ "@abp/ng.account": "~10.4.1",
+ "@abp/ng.components": "~10.4.1",
+ "@abp/ng.core": "~10.4.1",
+ "@abp/ng.identity": "~10.4.1",
+ "@abp/ng.oauth": "~10.4.1",
+ "@abp/ng.setting-management": "~10.4.1",
+ "@abp/ng.tenant-management": "~10.4.1",
+ "@abp/ng.theme.basic": "~10.4.1",
+ "@abp/ng.theme.shared": "~10.4.1",
"@angular/animations": "~21.2.0",
"@angular/aria": "~21.2.0",
"@angular/common": "~21.2.0",
@@ -37,7 +37,7 @@
"zone.js": "~0.15.0"
},
"devDependencies": {
- "@abp/ng.schematics": "~10.4.0",
+ "@abp/ng.schematics": "~10.4.1",
"@angular-eslint/builder": "~21.2.0",
"@angular-eslint/eslint-plugin": "~21.2.0",
"@angular-eslint/eslint-plugin-template": "~21.2.0",
diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json
index e87456cc64..b9e4923e06 100644
--- a/templates/module/angular/projects/my-project-name/package.json
+++ b/templates/module/angular/projects/my-project-name/package.json
@@ -4,8 +4,8 @@
"peerDependencies": {
"@angular/common": "~21.2.0",
"@angular/core": "~21.2.0",
- "@abp/ng.core": "~10.4.0",
- "@abp/ng.theme.shared": "~10.4.0"
+ "@abp/ng.core": "~10.4.1",
+ "@abp/ng.theme.shared": "~10.4.1"
},
"dependencies": {
"tslib": "^2.1.0"
diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json
index d15c5dfb60..c979c42b17 100644
--- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json
+++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json
@@ -3,6 +3,6 @@
"name": "my-app-authserver",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1"
}
}
diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json
index 9a6e08f751..b772af3552 100644
--- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json
+++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0",
- "@abp/aspnetcore.components.server.basictheme": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1",
+ "@abp/aspnetcore.components.server.basictheme": "~10.4.1"
}
}
diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json
index 2d75677571..278b7800e5 100644
--- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json
+++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1"
}
}
diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json
index 2d75677571..278b7800e5 100644
--- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json
+++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.0"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "~10.4.1"
}
}